モノレポによるマイクロサービスアーキテクチャの開発運用
by
Yuta Shimakawa
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
© 2023 MODE, Inc. モノレポによる マイクロサービスアーキテクチャの開発運用 MODE, Inc. YUTA Shimakawa 1 2023/03/09 "良い開発者体験"にむけた国内/海外のアーキテクチャLT会 AWS編
Slide 2
Slide 2 text
© 2023 MODE, Inc. ● SWE in the tech industry for 10+ years ● Joined MODE, Inc. 2019 ● Backend & DevOps ● SNS ○ Twitter: @banana_umai ○ GitHub: @bananaumai ○ LinkedIn: Yuta Shimakawa YUTA Shimakawa 島川 悠太 Yuta Shimakawa 2
Slide 3
Slide 3 text
© 2023 MODE, Inc. MODE, Inc. 拠点:シリコンバレー、東京 2014年〜 シリコンバレー 2017年〜 東京 創業者:上田 学 /イーサン・カン 3 センサーからデータ集めて可視化・分析するた めの技術を軸に、現実世界のビジネス業務を改 善するためのIoT * DXなソリューションを提供
Slide 4
Slide 4 text
© 2023 MODE, Inc. 4 マイクロサービスアーキテクチャ
Slide 5
Slide 5 text
© 2023 MODE, Inc. 5 モノレポ ● マイクロサービスのソースコードの管理手法の一つ ● 各サービスを一つのソースコードリポジトリで管理する ● 反対はサービス毎にリポジトリを分ける ● 日本だと比較的事例が少なめ(?) ● アメリカのTech系スタートアップの界隈だと議論になりがち(らしい) ● 某米検索最大手出身者が創業した会社ではモノレポが採用されがち(らしい)
Slide 6
Slide 6 text
© 2023 MODE, Inc. 6 ● サービスの一覧性を高くしやすい ● 開発に必要なサービス一式を立ち上げやすい ● 同一言語で実装している場合、共通ライブラリの運用がしやすい ● 複数のサービスやライブラリのコードを同一目的で変更しやすい ● ハード/ソフトな共通化がしやすい(設定、デプロイ、規約など) モノレポのメリット
Slide 7
Slide 7 text
© 2023 MODE, Inc. 7 モノレポのデメリット ● CICDパイプラインの構築に工夫が必要になりがち ○ 工夫しないとCICDプロセスが鈍重になりやすい ○ モノレポの構成自体にベストプラクティスがあるわけではないので、 すぐに使えるテンプレート的なCICDワークフローがない ● モノレポに関わる人数や組織の構造によっては難しくなりがち(コンフリ クトの増加やブランチ管理の煩雑化など)
Slide 8
Slide 8 text
© 2023 MODE, Inc. 8 CICDパイプラインの工夫 ECR CodePipeline ECS AWS GitHub Action push container images trigger pipeline ● GHAでcontainer imageをbuild -> ECRにpush -> CodePipelineをトリガー ● GHA WorkflowとAWS CodePipelineはサービス * 環境毎に作成 ● mainブランチへのマージ時にサービスのコードに影響があればサンドボックス環境に自動デプロイ ● ステージング及び本番デプロイについてはGit Tagを用いてデプロイワークフローをトリガーする
Slide 9
Slide 9 text
© 2023 MODE, Inc. 9 モノレポ管理の工夫 ● 複雑なブランチ運用や長期ブランチを避ける(feature flagなど) ● モノレポで「あらゆるコード」を管理すべきか? ○ NO ○ 関連性が少ないコードは別リポジトリで分けている ○ 例)ゲートウェイやモバイルアプリは別リポジトリで管理
Slide 10
Slide 10 text
© 2023 MODE, Inc. 10 所管・まとめ ● 同一言語でバックエンドのマイクロサービスを構築する場合、モノレポは悪くな い選択肢 ● CICDパイプラインの管理やブランチ管理などには工夫が必要 ● 似たような経験・知見・アドバイス・悩みがある方は是非お話ししましょう ○ Twitter: @banana_umai ○ GitHub: @bananaumai ○ LinkedIn: Yuta Shimakawa
Slide 11
Slide 11 text
© 2023 MODE, Inc. 11 MODE is hiring
Slide 12
Slide 12 text
© 2023 MODE, Inc. 12