SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2022 レポート(AD)

リーン開発を実現するため、「みらい翻訳」が取り組む、マイクロサービス化とデプロイ改善【デブサミ2022】

【18-C-3】リーンな開発を目指す第一歩 ~マイクロサービス化とGitHub Actionsを活用したデプロイ改善~

  • X ポスト
  • このエントリーをはてなブックマークに追加

 IT業界におけるサービス、技術の進歩はとどまることを知らず、日進月歩を続けている。そのため少しでも足踏みをしていると、後れを取ってしまうおそれがある。株式会社みらい翻訳では少しでも早く開発し、サービスを提供していくために、リーン開発に取り組んでいる。リーン開発とは「開発プロセスから徹底的に無駄をなくして高速に開発する」開発手法のことである。登壇した同社の宮田氏と川村氏は、リーン開発を実現するためにみらい翻訳が進めているマイクロサービス化とデプロイ改善について語った。

  • X ポスト
  • このエントリーをはてなブックマークに追加

株式会社みらい翻訳 プラットフォーム部 グランドデザインチーム 宮田周氏(左)/株式会社みらい翻訳 プラットフォーム部 SREチーム 川村亮清氏(右)

株式会社みらい翻訳 プラットフォーム部 グランドデザインチーム 宮田周氏(左)/株式会社みらい翻訳 プラットフォーム部 SREチーム 川村亮清氏(右)

Mirai Translatorがマイクロサービスアーキテクチャを採用した理由

 みらい翻訳ではリーン開発に取り組み、マイクロサービスアーキテクチャを目指しているという。「新しいアイデアを素早くサービスに仕上げて、そのサービスから得られるデータをもとに新しいアイデアを生み出す……その仮説検証サイクルを高速に繰り返すことで、素晴らしいサービスを生み出していく」というリーンスタートアップに基づいた開発を高速で行うためである。

 みらい翻訳の開発速度は、デプロイの頻度と、設計からリリース完了までの期間を表すリードタイムという指標で計測している。現状ではデプロイは週に1回程度、リードタイムは1週間~1か月以上に渡ってしまうものもある。宮田氏は「デプロイ頻度が1日に1回かそれ以上という会社も最近は増えているので、私たちもそこを目指していきたい」と話す。

 同社において開発速度が遅くなってしまう原因には、「修正対象の競合が多い」ことと「リリースプロセスが複雑」であることの2つがある。提供している機械翻訳アプリケーション「Mirai Translator」は、複数のチームで開発を行っているのだが、各チームが修正したいモジュールが競合しやすいために、リリースタイミングの調整に大きな手間がかかり、リードタイムが延びてしまう。さらにリリースプロセスが複雑で、リリース作業そのものに5日もかかることもある。

 競合しやすい原因として宮田氏は「私たちのMirai Translatorは技術負債を抱えたモノリシックなものになっているからだと考えています」と述べた。各機能が密結合になっている部分が非常に多く、デプロイ単位がシステム全体になっているために機能単位でのリリースができないのだ。この課題を解決するために、Mirai Translatorでマイクロサービスアーキテクチャを採用することになった。マイクロサービスアーキテクチャとは、複数のサービスで1つのシステムを構成するアーキテクチャ構造のことだ。マイクロサービスアーキテクチャの場合、次の利点と欠点がある。

利点
  • サービス単位でデプロイできる
  • サービス間の依存が発生しにくい
欠点
  • サービス間のトランザクションを保てない
  • 全体のデプロイや運用は複雑化
  • モノリスでは不要な技術が必要

 このような欠点があってもマイクロサービスアーキテクチャを採用することにしたのは、次の3つの理由からである。まず「サービス単位でのデプロイを可能にしたい」ため。サービス単位でデプロイができれば、チーム間でのリリースのタイミング調整が不要になり、リードタイムを減らせる可能性がある。

 2つ目に「モノリスのリファクタリングによる解決は困難」なため。各機能が密結合になっている状態を改修するには、サービスの停止を伴う大規模な改修で難易度が高いことが予想される。

 3つ目の理由は「トランザクションの必要箇所は少ない」だ。現在の使用状況から、結果整合性でも良い箇所が多いと考えられた。問題はいかにしてマイクロサービスアーキテクチャへと移行していくか、である。

マイクロサービスアーキテクチャへの移行に伴って浮上する技術基盤の問題

 Mirai Translatorがマイクロサービスアーキテクチャへ移行するにあたって、ビッグバンリライトとストラングラーパターンの2つの方法が考えられた。ビッグバンリライトは年単位の時間をかけて作って、一気にマイクロサービスアーキテクチャに置き換えるという方法である。宮田氏は「非常にリスクが高いためにできないだろうと考えています。ビジネス的に新機能開発を止められないため、リソースも社内だけでは足りないという問題もあります」とビッグバンリライトを採用しない理由について説明した。採用されたのは、ストラングラーパターンである。

 ストラングラーパターンとは、小さい単位で開発して置き換えていく手法のことだ。これであればリスクが低く、なおかつ新規開発を止めずに済む程度の開発リソースを残すことができると考えられる。残された課題は、技術基盤がまだ足りていないということだ。モノリスだったときは不要だった技術基盤が、マイクロサービスアーキテクチャに移行することによって必要になるのである。

 必要になる技術としては、サービス間の非同期なメッセージング基盤が考えられる。マイクロサービスアーキテクチャに移行しても、サービス間の依存関係はまったくなくなるわけではないため、サービス間の通信がどうしても必要になる。しかし例えばREST APIを同期的に呼び出すといったことをしてしまうと、それはサービス間の密結合になってしまい、モノリスのころと何も変わらない。そのためサービスは非同期なメッセージングによる通信が必要になる。

 またモノリスからサービスへのデータ同期基盤も必要になる。ストラングラーパターンを採用するということは、一部分はマイクロサービスで稼働し、残りの部分はモノリスで稼働しているという、いわゆるダブルメンテの状態が一定期間存在することになる。その間、マイクロサービスを抱えるDBとモノリスのDBとの間に依存関係が生まれるパターンがどうしても存在してしまうことが予想されている。そのためダブルメンテの間、モノリスからマイクロサービスへとデータを同期させる基盤が必要になるのだ。

 そしてもう一つはユーザーリクエストサービスとモノリスに振り分ける基盤だ。ダブルメンテのため、このリクエストはモノリスに、このリクエストはマイクロサービスに、というように振り分けるProxy的な基盤が必要だ。宮田氏は「大まかなマイクロサービスへ向けたロードマップとして、まず技術基盤を構築して、続いてマイクロサービスの試験実装をやってみてうまくいったら、主要機能のマイクロサービス化というふうにやっていければいいなと考えています。いま現在は技術基盤を作り上げることに集中しています」とみらい翻訳で取り組んでいる、マイクロサービスアーキテクチャへの向けたロードマップと現在の状況について話した。

次のページ
リードタイム短縮で行われたデプロイ改善――ブランチ戦略の見直しとCI/CDツールの置き換え

関連リンク

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Developers Summit 2022 レポート連載記事一覧

もっと読む

この記事の著者

森 英信(モリ ヒデノブ)

就職情報誌やMac雑誌の編集業務、モバイルコンテンツ制作会社勤務を経て、2005年に編集プロダクション業務やWebシステム開発事業を展開する会社・アンジーを創業。編集プロダクション業務においては、IT・HR関連の事例取材に加え、英語での海外スタートアップ取材などを手がける。独自開発のAI文字起こし・...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15701 2022/03/28 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング