SHOEISHA iD

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

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

Developers Summit 2023 セッションレポート(AD)

モノリシックからマイクロサービスへの移行に挑戦! コドモンで取り組んだ手法やプロセスを全て見せます

【10-E-7】保育・教育施設の業務省力化を提供するWebサービスの改善と技術的負債解消への取り組み -マイクロサービスへの挑戦-

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

マイクロサービスへの移行はStrangler patternで

 ここからは「資料室」を例に、移行をどう進めたかを具体的に見ていこう。この「資料室」という機能は、保育・教育施設で取り扱うさまざまな資料を保護者が閲覧できるようにアプリ上に公開するためのサービスとなる。サービス自体は単純だが、既存アプリとの連携、特にこれまで蓄積されたデータも継続して扱えるようにするところが難点となる。

 従来はモノリシックなシステムが同じリソースで稼働していた。またあらゆる機能が1つのデータベースに蓄積されるような形になっていた。新サービスでは、新しいリソース上で稼働させ、独自のデータベースを持たせ、新しいスタックを用いることにした。ただしデータは古いデータベースにあるものも扱えるようにしなくてはならないため、必要な情報を抜き取り、新しいサービスの形に変換するデータ同期バッチを中間に立てることにした。

マイクロサービス移行後のシステム構成
マイクロサービス移行後のシステム構成

 技術スタックとしては、バックエンドはドメインを型で表現しやすく、nullチェックも厳格であり、メンバーに経験者がいたKotlinを選んだ。フロントエンドはNuxt.js、インフラはECS(コンテナ)、CI/CDはGitHub Actions、E2EテストはGaugeとPlaywrightとした。

 リプレイスへのアプローチで最も重視したのは「安全にリリースすること」なので現行システムとできるだけ疎結合にした。ほかにもビッグバンリリースにしないこと(徐々にリリースする)、容易に運用できるようにテストに力を入れることも重視した。リリースから数年経ちユーザーが求めるものが見えてきたので、このタイミングでフロントもリプレイスできるように、フロントも切り出した。

 モノリシックなシステムからマイクロサービスに切り離す時に参考にしたのが「Strangler pattern」で、これは新旧のサービスを並行稼働させながら徐々に切り替えていく方法だ。新しい機能を小さい単位で作り、トラフィックをコントロールすることでユーザーを徐々に新しい方へと誘導していく。コドモン プロダクト開発チーム エンジニア Dimitrov Chavdar氏は「本番環境に未完成の成果物をリリースできて、トラフィックを切り替えるまで何も影響がないのがうれしい」と話す。

Strangler patternのメリット
Strangler patternのメリット

 新しいサービスを一部のユーザーから徐々にリリースすることをカナリアリリースと呼ぶ。何か問題が生じても影響範囲は少なく、安全な旧サービスにトラフィックを誘導すればいい。実際に新サービスでエラーになれば、自動的に旧サービスを利用するようにフェイルセーフする仕組みがあれば、ユーザーは「何かいま画面が遷移したかな?」くらいで大きな問題にはなりにくい。

次のページ
新旧サービスのデータを同期する仕組みを導入

関連リンク

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

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

もっと読む

この記事の著者

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

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

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

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

提供:株式会社コドモン

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング