CNDT 2022、DMMのアーキテクトが解説するSREと開発の責任境界とリソース管理の実際
CNDT 2022から、合同会社DMM.comのアーキテクトが社内向けKubernetesプラットフォームにおける運用チームであるSREと、アプリケーション開発チームにおける共有基盤の管理と運用の実際を解説するセッションを紹介する。これは「マイクロサービスとK8sにおける責任境界設計とリソース管理」と題されたセッションで、プレゼンテーションを行ったのはpospome氏だ。
●動画:マイクロサービスとk8sにおける責任境界設計とリソース管理
タイトルは大仰だが、その内はマイクロサービスで構成されたDMMのシステムをSREが担当する部分とアプリケーション開発チームが担当する部分に分け、役割分担の背景と実際に実装したツールの解説というものだ。
pospome氏のタイトルはアーキテクトだが、プラットフォームチームに所属していると自己紹介を行っているところから、SREチームの視点からの発表と言える。
まずはDMMのプラットフォームの利用者となるグループに関して解説を行った。エンジニア数は120名以上、開発チームが16、共通のインフラストラクチャーを担当するSREチームが存在し、約40のマイクロサービスで構成されたサービスを提供しているという。
その開発チームと運用チームが使うプラットフォームは、AWSとGCPを併用しているとしてマネージドのKubernetesとCDについてはArgoCD、コンテナレジストリーはGCPのArtifact Registry、監視にはDatadogなどが利用されていると紹介された。後半で解説されるが、ソースコートの管理はGitHub、ワークフローとしてGitHub Actionsを使っているという。
インフラストラクチャーについては以下のスライドで解説されている。どうしてAWSとGCPの併用なのか? については特に説明がなかった。
ここからシステムに関して誰が責任を持つのか? という責任境界に関する解説が始まった。アプリケーションを実行するインフラストラクチャーについて、Kubernetesを利用していることは説明済みだが、アプリケーションを開発するエンジニアとインフラストラクチャーを管理するエンジニアの中間に位置する立場、例えば、Podの構成を定義するマニフェストファイルは誰が書くのか? についてはさまざまなケースが有り得る。DMMにおいてはノードのキャパシティプランニングはSREが、ポッドのキャパシティプランニングは開発チームがそれぞれ責任を負うとして、マニフェストファイルについても内容を決定するのは開発チームであることが説明された。
マニフェストの内容を決める開発チームメンバーは、アプリケーションに関する知識に加えてインフラストラクチャーであるKubernetesの知識も要求される。DMMにおいてはこれが最適解ということだろう。
ここではマニフェストの設定は開発チームの責任と説明されているが、実際にはマイクロサービスが実行される際のパラメータの入力は開発チームが行い、テンプレートを用意するのはSREというのがDMMの現在の方針である。
この方針については一元管理と個別管理という二つに分類して、そのメリットとデメリットを説明している。
一元管理の場合は効率が良く、エコシステムの導入も容易だが、しかしリソース単位で細かな設定や個別に対応が必要な場合の対応が難しいと説明。特に問題として挙げられていたのは、アプリケーション開発チームが管理をSREに任せた場合のコミュニケーションコストであることが強調されている。これについては学習コストとコミュニケーションコストとのバランスであると説明し、実際には「コミュニケーションコストは永遠にゼロにはならない」と語った。
後半は具体的にインフラストラクチャーの実装に利用しているツールの解説に移った。DMMのプラットフォーム管理に用いられている2つのツール、Super TerraformとOsirisのそれぞれについて説明。Super TerraformはKubernetesのマニフェスト以外を管理するIaCツール、OsirisはKubernetesのマニフェストファイルだけを管理するツールであると説明した。
セルフサービスを指向しているようで、申請者がSlackから行えるようになっていることを説明した。
マイクロサービスの新規作成は誰でもできるようになっているが、実行はGitHub Actionsのワークフローで行われる。また新規にマイクロサービスを作成する場合は、デザインドキュメントのレビューが必要なので、その部分で承認サイクルが回っていると説明。また組織は常に変化するため、マイクロサービスのリソース管理の中にリアルな組織構造を取り入れない工夫などが行われていると解説した。ただし、Kubernetesのマニフェストを変更しただけでは実際のクラスターへの変更は行われない、ワークフローを起動する必要があるなど宣言的な部分と手続き的な部分が絡み合っているように見える。またCIに関してもまだ改善する点が多いなど、反省点についても紹介された。
開発チームがアプリケーション開発から運用まで責任を持つという部分は、CNDT 2020で講演を行ったメルカリのシステムとかなり近い発想だろう。パブリッククラウドの利用という意味では、DMM.comとメルカリのセッション内容には近い点がある。一方、SLOやテストの難しさなどについても言及しているメルカリのセッションに比べて、DMM.comのセッションでは責任分担とデプロイ作業の具体的な方法についてのみ解説が行われていたのがやや残念と言える。
●参考:CNDT2020シリーズ:メルペイのマイクロサービスの現状をSREが解説
ワークフローとマニフェストの役割をどう分けるのか、宣言的な部分と手続き的な部分をどういう考えで分けているのか。これらの点に関するより深い考察があれば、他の組織においても参考になるポイントは多数あるだろうと思われる。またセキュリティの考え方などについても、次の機会があれば解説して欲しいと思わせるセッションだった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- CNDT2020シリーズ:メルペイのマイクロサービスの現状をSREが解説
- CNDT 2022、ChatworkのSREがコンテナセキュリティのための新しいツールを紹介
- CNDT2021、メルカリがマイクロサービスのセキュリティを強固にするための施策を解説
- CNDT 2022、NTTコムのエンジニアがマニフェストレスを実現したIaCのためのSaaSを解説
- CNDT2020シリーズ:CAのインフラエンジニアが解説するKubernetesネイティブなCI/CD
- CNDT2021、NTTComのアーキテクトがDevOpsに繋がるフィードバックループを解説
- CNDT2021、ミクシィのSREによるEKS移行の概要を解説するセッションを紹介
- 新興不動産業のGAテクノロジーズ、AWS上でNew RelicとCircleCIを使いこなす
- 「CloudNative Days Tokyo 2021」開催レポート
- CNDT2021、クラスター運用自動化をGitOps的に行う方法論をサイバーエージェントのエンジニアが解説