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

“駆け出しPlatformチーム"の立ち上がりとこれから

RevComm_inc
September 26, 2024

 “駆け出しPlatformチーム"の立ち上がりとこれから

RevComm_inc

September 26, 2024
Tweet

More Decks by RevComm_inc

Other Decks in Technology

Transcript

  1. Copyright © RevComm Inc. contents 1. 自己紹介と会社紹介 2. 当時の現状と課題 3.

    Platformチームの立ち上がり 4. 過去3ヶ月の取り組み 5. チームのこれから
  2. Copyright © RevComm Inc. 玉城 翔(たましろ かける) - 株式会社 RevComm Technology Dept./Analytics

    Div./Analytics Group/Platform Team - RevCommでは主にAmazon OpenSearch Servieceを使った検索システム周りの開発/保守 /運用を行ってきました。 自己紹介 3
  3. Copyright © RevComm Inc. 開発規模(最近3カ月間のコントリビューター数) • アプリケーションリポジトリ: 34人 • IaCリポジトリ:

    13人 開発状況 • 複数の機能チームによるモジュラモノリス開発 • プロダクトの初期ローンチから6年経過したモノレポ • モジュラモノリスのサブアプリケーションが36 MiiTel の開発状況 9
  4. Copyright © RevComm Inc. • サービスのリリース頻度が週1回のため、1回のリリース内容が大規模になる。 ◦ アプリケーションリポジトリでは、頻繁に開発に携わるチームが4チーム、それ以外に2、3チームが不定期に関与 している。 •

    リリース内容が大きいため、営業時間外の21時からリリース作業を行い、30分〜1時間程度かかる。 • 本番環境へのリリースは複数チームの変更が含まれるため、気軽にリリースできず、お互いに遠慮し合ってリリースが 滞りがちになる。 • エンジニアの内部作業用コマンド群も同じコードベースで管理しているため、コマンドの追加や改修の反映が遅れ、オ ペレーションに支障をきたすことがある。 • CIの実行タイミングによってテストが不安定になり、失敗することがある。 • サービスに対するメトリクスが十分に整備されていないため、SLAやSLOを正確に設定できない。 • 内部で複雑なリカバリ処理が実行されているため、InternalServerErrorが見逃されることがある。 ◦ これにより、サービスレベルを正確に判断することが困難になっている。 • 複数チームが独自にライブラリを導入しているため、管理責任が不明確になり、ライブラリのアップデートが滞りがち になる。 • 管理責任が不明確なソースコードの改修が、チーム間でたらい回しになることがある。 • 上記のような問題が発生した場合、最終的には長期在籍のベテランエンジニアに確認することが多く、特定の個人への 負担が大きくなる傾向がある。 • etc 当時の課題 10
  5. Copyright © RevComm Inc. Platformチームの構成と特徴 • Platformチームのメンバーはマネージャーを含めて5人体制になります。 • チームメンバーそれぞれが異なる得意分野を持っており、チームトポロジーに基づくPlatform チームとしての開発は全員にとって初めての経験です。

    • RevCommにとってもPlatformチームは前例のない試みだったため、リサーチチーム立ち上げ などの実績を持つマネージャーに開発手法の枠組みを準備してもらい、手探りの状態でスター トを切りました。 Platformチームの立ち上がり 12
  6. Copyright © RevComm Inc. 最初の1ヶ月半..... Platformチームとして管理・提供する内部開発者向けプラットフォーム(IDP: Internal Developer's Portal/Product)や、前述の課題に対する具体的なアクションプランがない状況で した。そのため、立ち上げ当初は以下のような軽微な修正を行いながら、MiiTelの開発環境にお

    ける課題の洗い出しに注力しました。 • 軽微な修正例: ◦ Pythonバージョンアップ ◦ 検索システムのPythonクライアント移行 ◦ ライブラリのアップデート ◦ Terraformバージョンアップ ◦ 実行ログの修正 ◦ エラーログの修正 ◦ テストカバレッジの計測 ◦ etc これまでの取り組み 13
  7. Copyright © RevComm Inc. IaCリポジトリの改善 課題 • GitHub Actionsを用いたCI/CDで一部自動化を実現しているが、本番環境へのリリースは複数 チームの変更が同時に発生するため、気軽にリリースできず、リリースが滞りがちになってい

    る。 • 一部のリソースが自動化されていないため、terraform planを実行するまでデプロイ状況が把 握できない。 • 過去に存在したチームが開発したソースコードの管理責任が不明確になっている。 • 不要なソースコードが残存している。 これまでの取り組み 15
  8. Copyright © RevComm Inc. 課題に対する取り組み GitHub Actionsを用いたCI/CDで一部自動化を実現していますが、本番環境へのリリースは複 数チームの変更が同時に発生するため、気軽にリリースできず、リリースが滞りがちになって います。 •

    Platformチームがリポジトリの管理者として運用を開始しました。 • リリースフローを整備し、各チームに周知を行いました。これにより、各チームの担当者が明 確にリリース作業に参加できる環境を構築しました。 • 定期的なリリース監視を行い、当面の問題を解消しています。 これまでの取り組み 16
  9. Copyright © RevComm Inc. 課題に対する取り組み リリース作業者が気軽にリリースできない根本原因は、CI/CDの一部しか自動化できていない点と、複数チー ムの変更が同時にリリースされる現状にあります。 • 現状のリポジトリ改修では状況改善が難しいと判断し、新しいリポジトリを作成してリソースを移行する方針を採 用。

    • CI/CDにAtlantisというセルフホスティングのGolangアプリケーションを使用予定。 • 新リポジトリでは、チームまたはマイクロサービス単位でディレクトリを準備。 • Atlantisを活用し、各チームが独立して自由にリリースできる環境を提供予定。 これまでの取り組み 17
  10. Copyright © RevComm Inc. チームミッション 他のチームがそれぞれのミッションに集中できるように社内プロダクトを提供して支援する。 • セットアップ済みのECS/EKSを社内の必要とするチームに提供している。 • 以下のコンポーネントを適切にバージョンアップデートしている:

    ◦ EKS ◦ EKS アドオン ◦ EKS ミドルウェア(例:Cluster Autoscaler) ◦ Kubernetes ネイティブサービス(例:ArgoCD) ◦ エージェント(例:Datadog Agent) ◦ etc • セットアップ済みかつインデックス済みのOpenSearchを提供している。 • ECRの脆弱性スキャンなど、適切なセキュリティツールを提供している。 • GrafanaやPrometheusを使用したサービスの監視を実現している。 • CI/CDの管理およびコンサルティングを行っている。 • SRE実践(例:カオスエンジニアリング)を行っている。 • 上記の業務の効率化および自動化を推進している。 チームのこれから 21