SHOEISHA iD

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

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

Developers Summit 2024 Summer レポート

さきがけ精神で挑むアーキテクチャ刷新!──技術革新と進化をもたらす秘訣とは

【23-B-7】さきがけから振り返るアーキテクチャ刷新:技術革新と進化をもたらした戦略と戦術

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

アーキテクチャ刷新に向けた戦略と実践

 成瀬氏は、CQRS(Command Query Responsibility Segregation)とイベントソーシング(ES)を基盤としたPub/Subシステムの構築を目指し、複数のサービスが非同期で連携できるアーキテクチャを提案した。

 「従来のサービス連携では、中心サービスに依頼が集中し、優先順位の調整が難しくなり、リードタイムが増加していました。しかし、イベント駆動型アーキテクチャを導入することで、中心のサービスはイベントをパブリッシュ(公開)するだけで済み、他のサービスはそのイベントを基に自由にデータベースを作成・更新できます。これにより、依頼の集中やリードタイムの増加を防ぎ、各チームの作業負荷を軽減できます」と成瀬氏は説明する。

 例えば、注文システムのコマンドをイベントとして保存し、Relay(中継)を経てKafkaなどのMessage Brokerに公開することで、他のサービスが非同期にデータベースを更新できる。この手法によって、サービス間の依存関係を緩和することが可能となったという。

成瀬氏が目指したアプリケーションアーキテクチャの仕組み
成瀬氏が目指したアプリケーションアーキテクチャの仕組み

 業務の可視化手法として採用した「イベントストーミング」も、アーキテクチャ刷新では重要な役割を果たしたという。システムイベントを可視化し、チーム全体で仕様を共有することで、担当者の退職や仕様変更があっても、スムーズにキャッチアップできる体制が整った。「ドキュメントとコードがほぼ一対一で対応するため、業務知識の継承が容易になる点がメリット」と成瀬氏は解説する。

成瀬氏が推奨するイベントストーミング
成瀬氏が推奨するイベントストーミング

 さらに、オンプレミス環境からクラウドインフラへの移行も進めた。「フルマネージドのクラウドサービスを利用することで、安定稼働し、迅速に復旧できるインフラを構築することを目指しました」(成瀬氏)

 クラウドプラットフォームの選定にあたってはAzureとAWSを並行して検討したが、メンバーの意見を踏まえ、最終的にAWSを選択。マルチクラウド対応を視野に入れ、柔軟な運用を可能にするIaCツールとしてTerraformを採用したという。

 Terraformの運用では、S3やDynamoDBを用いたプロバイダ設定や管理用シェルスクリプトが必要となるが、個別に対応すると管理が煩雑になる。そこで成瀬氏はまず基本形を作成し、それをもとに各開発者が開発、検証、本番環境を構築できる仕組みを整えた。「ここで決めたことは一生残る」と成瀬氏が述べるように、現在もその基本形は使われ続けている。

 AWSのようなパブリッククラウドを使用する際、特に重要になるのがアカウント設計だという。当初、成瀬氏は「シンプルな設計で十分」と考え、開発環境用のアカウントを作成し、AWSのCodeCommit(GitHubのようなバージョン管理サービス)でコードを管理しようとしていた。しかし、本番環境を同じアカウントで運用するのは現実的でなく、最終的にステージングやテスト用に別のアカウントを作成。それぞれの環境でCodeCommitからコードを取得し、デプロイするCI/CDプロセスを構築した。成瀬氏は「最初からこの構成にしておけばよかった。しっかりした設計が、後々の運用に不可欠であることを痛感しました」と振り返る。

成瀬氏が構築したAWSアカウントの構成
成瀬氏が構築したAWSアカウントの構成

 成瀬氏はまた、CI/CD環境の自動化にも注力した。「HQ」と呼ばれる中央管理システムを構築し、Web上で必要な情報を入力するだけで、CI/CD環境が自動的に構築される仕組みを整えたのだ。「このシステムの利点は、監査対応を考慮したフローをあらかじめ組み込んでいる点と、方針変更があった場合に後からでも柔軟に対応できることです。これにより、他の開発環境やCI/CDを構築する際の基盤が確立され、さまざまな施策をスムーズに展開できます」と成瀬氏は説明する。

 アーキテクチャ刷新の一環として設置した「イネイブリングチーム」も重要な役割を担った。成瀬氏によると、この手法は『チームトポロジー』という書籍で紹介されているもので、「他のフィーチャーチーム()を支援し、新技術やプロセスの導入を伴走しながらサポートする役割」を担っているという。特に初期段階ではスキルの習得や他チームとの連携が課題だったが、成瀬氏は一人ひとりに丁寧に説明を行い、他チームとも積極的にコミュニケーションを図ることで、チーム間の協力体制を徐々に整えていった。

 イネイブリングチーム内では役割分担を明確にし、認知負荷を軽減する工夫も施した。その結果、現在ではチームは円滑に機能しており、「放っておいても仕事が進む」状態になったという。成瀬氏は「チームを作って本当に良かった」と述べつつ、「最初の3か月は非常に大変でした。アーキテクチャ刷新を進める際には、このようなチームを組成するための余力があるか、事前に慎重に考えるべき」とも振り返った。

 ()本来はストリームアラインドチームであるが、読者向けにフィーチャーチームと表現している。

次のページ
刷新プロジェクトの教訓と成功のポイント

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

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

もっと読む

この記事の著者

丸毛 透(マルモ トオル)

インタビュー(人物)、ポートレート、商品撮影、料理写真をWeb雑誌中心に活動。

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

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

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

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

水無瀬 あずさ(ミナセ アズサ)

 現役エンジニア兼フリーランスライター。PHPで社内開発を行う傍ら、オウンドメディアコンテンツを執筆しています。得意ジャンルはIT・転職・教育。個人ゲーム開発に興味があり、最近になってUnity(C#)の勉強を始めました。おでんのコンニャクが主役のゲームを作るのが目標です。

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング