SHOEISHA iD

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

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

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

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

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

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

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

 モノリシックからマイクロサービスへと移行するのに伴い、データのマイグレーション(移行)も発生する。新サービスで旧サービス時代のデータを使わなくていいのならいいが、今回の移行対象が資料管理システムなのでそうはいかない。先述したように、旧サービスと新サービスとの間にデータ同期バッチを配置し、旧サービスにあるデータを新サービスに同期するようにした。

 今回はXPのプラクティスとしてTDDを導入していることもあり、このデータの同期バッチもTDDの対象とした。実際のテスト(検証)はGaugeで自動テストを行い、さらに手動テストも行い正確性を担保した。

 Gaugeの自動テストではデータがストレージ(Amazon S3)やデータベースに入っているか、資料の状態などの確認、移行失敗時のロールバックの確認、手動テストではデータ移行前後で資料に表示崩れがないかの確認、移行バッチ実行時の負荷テスト、各種設定の確認などを行った。

新旧サービスのデータの同期方法
新旧サービスのデータの同期方法

 こうしてデータを同期できる状態にできたことでChavdar氏は「モバイルアプリのリリースと施設側(PC側)のリリースを別々にできたのがうれしかったです。またシステムをメンテナンスモードにする必要がなく、ユーザーにもメリットがあったかと思います」と話す。

 施設向けサービスのリリースはフィーチャーフラグを使い、新サービスが見えるユーザーを限定することでデプロイとリリースを分けることにした。データベースに新機能が表示か非表示かのフラグを持たせ、後は(Webサイトの)テンプレート側でどう見せるかを切り替えている。

 保護者向けモバイルアプリもフィーチャーフラグを用いた。モバイルアプリで新しいものをリリースしようとするとストアに申請するなど手間がかかるが、フィーチャーフラグを使えば表示を切り替えることになるので不具合が発生してもロールバックしやすくて開発者としては安心材料になるのではないだろうか。またモバイルアプリでもエラーが発生したら旧画面に遷移するようにフェイルセーフの仕組みをいれておいた。

フェイルセーフの仕組みを用意
フェイルセーフの仕組みを用意

 最後にモノリシックからマイクロサービスへと移行することで、Chavdar氏は「資料室に限っては冒頭で挙げたようなさまざまな蓄積された問題が、かなり解消されていると感じています」と話す。

 例えばシステム改修の影響は対象システム内に閉じていること、デグレが起きても他の全てが戻ることはなくなり、リリース調整のためのチーム間コミュニケーションは不要で独立してデプロイできるなど。マイクロサービスのメリットを享受できている。

 岡村氏はXPを実践した感想と学びについて次のようにまとめた。

 「XPのプラクティスを導入したことで安全に素早くリリースできる状態になりました。プラクティスはどれも効果を発揮したが、中でも特にペアプロが大きかったかなと思っていて、属人化がなくなり、知識がチームの中で流れ続け、メンバーそれぞれが得意分野を発揮しつつ他の分野でも成長できたと思います。あと自動テストを初期から入れたことで安全に開発を進めることができました。期限が迫ってくると『テスト書かないほうが早くすむのでは』と誘惑に駆られたりするが、そもそも何を実現したくてテストを書いているのか、一瞬だけ早さを出して本当に嬉しいのか等、本来の目的に立ち戻ることが大切です。また既存サービスとの関わりは難しいので、仕様や制約の調査をすることも大切です。

 そして仕様の変更やXPの導入などは初めての取り組みでしたので、プロジェクト完了まで8カ月間を要しました。一番大変だったのは最初のチームがリズムに乗るまでの初動でした。この経験をもとに他のチームではこの難関をより早く乗り越えていきたいと思っています。今後はより複雑で他のサービスとの依存度が高いものでマイクロサービスへの移行に挑戦していきたいです」

関連リンク

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング