Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モノレポによるマイクロサービスアーキテクチャの開発運用

 モノレポによるマイクロサービスアーキテクチャの開発運用

マイクロサービスのコードベース管理手法の一つであるモノレポによる開発のメリット・デメリットに触れつつ、実際の開発現場における運用上の工夫について紹介します

Yuta Shimakawa

March 08, 2023
Tweet

More Decks by Yuta Shimakawa

Other Decks in Technology

Transcript

  1. © 2023 MODE, Inc.
    モノレポによる
     マイクロサービスアーキテクチャの開発運用
    MODE, Inc.
    YUTA Shimakawa
    1
    2023/03/09
    "良い開発者体験"にむけた国内/海外のアーキテクチャLT会 AWS編

    View Slide

  2. © 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

    View Slide

  3. © 2023 MODE, Inc.
    MODE, Inc.
    拠点:シリコンバレー、東京
       2014年〜 シリコンバレー
    2017年〜 東京
    創業者:上田 学 /イーサン・カン
    3
    センサーからデータ集めて可視化・分析するた
    めの技術を軸に、現実世界のビジネス業務を改
    善するためのIoT * DXなソリューションを提供

    View Slide

  4. © 2023 MODE, Inc. 4
    マイクロサービスアーキテクチャ

    View Slide

  5. © 2023 MODE, Inc. 5
    モノレポ
    ● マイクロサービスのソースコードの管理手法の一つ
    ● 各サービスを一つのソースコードリポジトリで管理する
    ● 反対はサービス毎にリポジトリを分ける
    ● 日本だと比較的事例が少なめ(?)
    ● アメリカのTech系スタートアップの界隈だと議論になりがち(らしい)
    ● 某米検索最大手出身者が創業した会社ではモノレポが採用されがち(らしい)

    View Slide

  6. © 2023 MODE, Inc. 6
    ● サービスの一覧性を高くしやすい
    ● 開発に必要なサービス一式を立ち上げやすい
    ● 同一言語で実装している場合、共通ライブラリの運用がしやすい
    ● 複数のサービスやライブラリのコードを同一目的で変更しやすい
    ● ハード/ソフトな共通化がしやすい(設定、デプロイ、規約など)
    モノレポのメリット

    View Slide

  7. © 2023 MODE, Inc. 7
    モノレポのデメリット
    ● CICDパイプラインの構築に工夫が必要になりがち
    ○ 工夫しないとCICDプロセスが鈍重になりやすい
    ○ モノレポの構成自体にベストプラクティスがあるわけではないので、
    すぐに使えるテンプレート的なCICDワークフローがない
    ● モノレポに関わる人数や組織の構造によっては難しくなりがち(コンフリ
    クトの増加やブランチ管理の煩雑化など)

    View Slide

  8. © 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を用いてデプロイワークフローをトリガーする

    View Slide

  9. © 2023 MODE, Inc. 9
    モノレポ管理の工夫
    ● 複雑なブランチ運用や長期ブランチを避ける(feature flagなど)
    ● モノレポで「あらゆるコード」を管理すべきか?
    ○ NO
    ○ 関連性が少ないコードは別リポジトリで分けている
    ○ 例)ゲートウェイやモバイルアプリは別リポジトリで管理

    View Slide

  10. © 2023 MODE, Inc. 10
    所管・まとめ
    ● 同一言語でバックエンドのマイクロサービスを構築する場合、モノレポは悪くな
    い選択肢
    ● CICDパイプラインの管理やブランチ管理などには工夫が必要
    ● 似たような経験・知見・アドバイス・悩みがある方は是非お話ししましょう
    ○ Twitter: @banana_umai
    ○ GitHub: @bananaumai
    ○ LinkedIn: Yuta Shimakawa

    View Slide

  11. © 2023 MODE, Inc. 11
    MODE is hiring

    View Slide

  12. © 2023 MODE, Inc. 12

    View Slide