Slide 1

Slide 1 text

Copyright © RevComm Inc. “駆け出しPlatformチーム"の立ち上がり とこれから 2024.09.24 @Platform Engineering Meetup RevComm 玉城 翔

Slide 2

Slide 2 text

Copyright © RevComm Inc. contents 1. 自己紹介と会社紹介 2. 当時の現状と課題 3. Platformチームの立ち上がり 4. 過去3ヶ月の取り組み 5. チームのこれから

Slide 3

Slide 3 text

Copyright © RevComm Inc. 玉城 翔(たましろ かける) - 株式会社 RevComm Technology Dept./Analytics Div./Analytics Group/Platform Team - RevCommでは主にAmazon OpenSearch Servieceを使った検索システム周りの開発/保守 /運用を行ってきました。 自己紹介 3

Slide 4

Slide 4 text

Copyright © RevComm Inc. コミュニケーションを再発明し 人が人を想う社会を創る

Slide 5

Slide 5 text

Copyright © RevComm Inc. 電話営業や顧客応対を自動録音、AIが文字 起こし、解析・可視化することにより、顧 客と担当者が「何を」「どのように」話し ているか分からない、というブラックボッ クス問題を解消し、商談獲得率・成約率の 向上やセルフコーチングを後押しします。 Service ビジネス向けスマート電話

Slide 6

Slide 6 text

Copyright © RevComm Inc. Culture フルリモート フルフレックス プロフェッショナル 自由と責任を 尊重する文化

Slide 7

Slide 7 text

Copyright © RevComm Inc. Language and tools 言語/ フレームワーク インフラ/運用管理 コミュニケーション

Slide 8

Slide 8 text

Copyright © RevComm Inc. Platformチームの 立ち上がりと活動 8

Slide 9

Slide 9 text

Copyright © RevComm Inc. 開発規模(最近3カ月間のコントリビューター数) ● アプリケーションリポジトリ: 34人 ● IaCリポジトリ: 13人 開発状況 ● 複数の機能チームによるモジュラモノリス開発 ● プロダクトの初期ローンチから6年経過したモノレポ ● モジュラモノリスのサブアプリケーションが36 MiiTel の開発状況 9

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Copyright © RevComm Inc. 背景 2024年7月、エンジニア組織全体でチームの再編が行われました。MiiTel開発グループ内では、チームトポロジー に基づいたチーム分けが実施されました。その結果、我々のチームは「Platformチーム」というチームタイプとし て立ち上がりました。 チームミッション 他のチームがそれぞれのミッションに集中できるように社内プロダクトを提供して支援する。 Platformチームの立ち上がり 11

Slide 12

Slide 12 text

Copyright © RevComm Inc. Platformチームの構成と特徴 ● Platformチームのメンバーはマネージャーを含めて5人体制になります。 ● チームメンバーそれぞれが異なる得意分野を持っており、チームトポロジーに基づくPlatform チームとしての開発は全員にとって初めての経験です。 ● RevCommにとってもPlatformチームは前例のない試みだったため、リサーチチーム立ち上げ などの実績を持つマネージャーに開発手法の枠組みを準備してもらい、手探りの状態でスター トを切りました。 Platformチームの立ち上がり 12

Slide 13

Slide 13 text

Copyright © RevComm Inc. 最初の1ヶ月半..... Platformチームとして管理・提供する内部開発者向けプラットフォーム(IDP: Internal Developer's Portal/Product)や、前述の課題に対する具体的なアクションプランがない状況で した。そのため、立ち上げ当初は以下のような軽微な修正を行いながら、MiiTelの開発環境にお ける課題の洗い出しに注力しました。 ● 軽微な修正例: ○ Pythonバージョンアップ ○ 検索システムのPythonクライアント移行 ○ ライブラリのアップデート ○ Terraformバージョンアップ ○ 実行ログの修正 ○ エラーログの修正 ○ テストカバレッジの計測 ○ etc これまでの取り組み 13

Slide 14

Slide 14 text

Copyright © RevComm Inc. 課題の洗い出しと改善点の特定 ● MiiTelの開発環境における課題の洗い出しに注力しました。この段階は後の開発に重大な影響 を及ぼすため、十分な時間をかけて取り組みました。 ● 課題の洗い出しを経て、Platformチームとして注力する2つの主要な改善点を特定しました: 1. IaCリポジトリの改善 2. 検索システムの改善 これまでの取り組み 14

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

Copyright © RevComm Inc. 課題に対する取り組み GitHub Actionsを用いたCI/CDで一部自動化を実現していますが、本番環境へのリリースは複 数チームの変更が同時に発生するため、気軽にリリースできず、リリースが滞りがちになって います。 ● Platformチームがリポジトリの管理者として運用を開始しました。 ● リリースフローを整備し、各チームに周知を行いました。これにより、各チームの担当者が明 確にリリース作業に参加できる環境を構築しました。 ● 定期的なリリース監視を行い、当面の問題を解消しています。 これまでの取り組み 16

Slide 17

Slide 17 text

Copyright © RevComm Inc. 課題に対する取り組み リリース作業者が気軽にリリースできない根本原因は、CI/CDの一部しか自動化できていない点と、複数チー ムの変更が同時にリリースされる現状にあります。 ● 現状のリポジトリ改修では状況改善が難しいと判断し、新しいリポジトリを作成してリソースを移行する方針を採 用。 ● CI/CDにAtlantisというセルフホスティングのGolangアプリケーションを使用予定。 ● 新リポジトリでは、チームまたはマイクロサービス単位でディレクトリを準備。 ● Atlantisを活用し、各チームが独立して自由にリリースできる環境を提供予定。 これまでの取り組み 17

Slide 18

Slide 18 text

Copyright © RevComm Inc. 検索システムの改善 検索システムにはAmazon OpenSearchを採用しており、MiiTelのデータベースに保存された通話履歴をこのシステムと同 期させることで、MiiTelサービス内で検索機能を提供しています。この構成において、主にデータ同期システムに課題が 存在しています。 課題 ● アプリケーションの一部として組み込まれている ● 変更の影響が広範囲に及ぶ ● オペレーションの制限 これまでの取り組み 18

Slide 19

Slide 19 text

Copyright © RevComm Inc. 課題に対する取り組み オペレーションの制限 ● データ同期の一時停止による課題に対処するため、fan-out構成の導入が進められていま す 。 これまでの取り組み 19

Slide 20

Slide 20 text

Copyright © RevComm Inc. 課題に対する取り組み アプリケーションの一部として組み込まれている 変更の影響が広範囲に及ぶ ● データ同期システムをMiiTelサービスリポジトリから独立させる必要があります。 ※これは検討段階にあり、fan-out構成の導入完了後に実施する予定です。 これまでの取り組み 20

Slide 21

Slide 21 text

Copyright © RevComm Inc. チームミッション 他のチームがそれぞれのミッションに集中できるように社内プロダクトを提供して支援する。 ● セットアップ済みのECS/EKSを社内の必要とするチームに提供している。 ● 以下のコンポーネントを適切にバージョンアップデートしている: ○ EKS ○ EKS アドオン ○ EKS ミドルウェア(例:Cluster Autoscaler) ○ Kubernetes ネイティブサービス(例:ArgoCD) ○ エージェント(例:Datadog Agent) ○ etc ● セットアップ済みかつインデックス済みのOpenSearchを提供している。 ● ECRの脆弱性スキャンなど、適切なセキュリティツールを提供している。 ● GrafanaやPrometheusを使用したサービスの監視を実現している。 ● CI/CDの管理およびコンサルティングを行っている。 ● SRE実践(例:カオスエンジニアリング)を行っている。 ● 上記の業務の効率化および自動化を推進している。 チームのこれから 21

Slide 22

Slide 22 text

Copyright © RevComm Inc. Thank you! 22