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

DMMプラットフォームにおける GKE を利用した プラットフォームエンジニアリングへの 取り組み

pospome
November 29, 2023

DMMプラットフォームにおける GKE を利用した プラットフォームエンジニアリングへの 取り組み

Google Cloud Next Tokyo '23 の登壇資料です。

登壇時の資料はGoogle Cloud仕様のデザインでしたが、
個人のSpeaker Deckにそのデザインのままアップロードできないという規約があるので、
デザインを落としたものになっています。
スライドの内容は登壇時と同じです。

pospome

November 29, 2023
Tweet

More Decks by pospome

Other Decks in Technology

Transcript

  1. 役割 DMM の各種サービスに対して、 共通機能を提供する部署 組織規模 エンジニアだけで 120 名以上 開発チームは 15

    チーム程度 サービス 規模 ピーク帯で 19,000 RPS 40 程度のマイクロサービスで構成 DMMプラットフォームについて
  2. 仕組みの抽象度 デプロイ方法 高い 開発チームが Slack でプラットフォーム チームに デプロイを依頼する。 ~ ~

    低い プラットフォーム チームは技術選定だけ担当し、 開発チームが CD パイプラインをゼロから構築・運用する。 抽象化(例:CD パイプライン)
  3. 項目 権限設定 コンテナ プラットフォーム GKE アラート / モニタリング Datadog コンテナ

    レジストリ Artifact Registry CD パイプライン Argo CD ワークフロー エンジン Argo Workflows インシデント管理 PagerDuty 提供しているもの一覧
  4. • スタンダード クラスタを採用している。 • シングルクラスター マルチテナント型 1 つの namespace に

    1 つのマイクロサービスを配置している。 クラスター数を抑えてプラットフォーム チームの負担を減らす。 • プラットフォーム チームがクラスターを運用している。 GKE の採用
  5. • アプリケーションの特性によって 最適解が変わるもの。 例:DB • 各チームで適切に運用できそうなもの。 例:Cloud Functions ※画像の置換方法 グレーボックスを選択し、右クリックで「画像を置

    換」を選択し、配置したい画像に差し替えてくださ い。 プラットフォーム チームが提供しないもの プラットフォームチームの Google Cloud プロジェクト 会員チームの Google Cloud プロジェクト
  6. 1 2 3 なぜ GKE か? 制約が少ない 多様な要件に対応でき、 中長期的にプラットフォームを 作ることができる。

    マルチテナント k8s の namespace によって マルチテナント構成が実現し やすい。 OSSエコシステム k8s 自体が OSS なので、 OSS エコシステムが強力であ る。マルチテナントを考慮され ているものが多い。
  7. • yaml 形式で望ましい状態を宣言する このリソース宣言形式は Kubernetes Resource Model (KRM) という。 •

    Controller によって yaml で 定義されたリソース状態を実現する https://github.com/GoogleCloudPlatform/kubernetes-engine-samples/blob/HEAD/ quickstart/deployment.yaml Kubernetes における CaD の実現
  8. 実現方法の正確な操作や 手順を規定するのではなく、 望ましい状態を宣言する。 yaml と Controller による リソース定義・調整のことであり、 GKE の利用者なら当たり前のものである。

    https://cloud.google.com/blog/ja/topics/developers-practitioners/build-platform-krm-part -1-whats-platform ※画像の置換方法 グレーボックスを選択し、右クリックで「画像を置 換」を選択し、配置したい画像に差し替えてくださ い。 Configuration as Data (CaD)
  9. 1 2 3 KRM のメリット すべてが yaml になる クラスター上のリソースを yaml

    という統一的なフォー マットで定義することができ る。 GitOps が可能 yaml ファイルを GitHub リポ ジトリにホスティングすること によって、GitOps が可能にな る。 ツールチェーンの統一 yaml を扱うためのツール チェーンを揃えれば、任意の 処理が可能になる。
  10. • yaml で定義された状態を 実現するための仕組みである。 • Go 言語で開発することができる。 クラスター上にデプロイされる。 • Reconciliation

    Loop によって GKE を常にあるべき姿に調整する。 回復性を持つリソースを実現できる。 Controller と Reconciliation Loop
  11. • KRM は汎用性の高いリソース管理フレームワーク とみなすことができる。 • Config Connector は KRM によって

    Google Cloud リソースを 管理することができるサービスである。 ※画像の置換方法 グレーボックスを選択し、右クリックで「画像を置 換」を選択し、配置したい画像に差し替えてくださ い。 あらゆるリソースを管理できる
  12. • Web アプリケーションを動かすコンテナ プラットフォームに収まらない。 あらゆるリソースを一元管理できる巨大な CaD プラットフォームになりうる。 例:Config Connector •

    リソースによって利用するツールや仕組みを変えなくてもいい。 DevOps のコストを限りなく下げることができる。 Configuration as Data の可能性
  13. 項目 開発チームの責任 GKE 自分が管理するマイクロサービスの マニフェスト ファイルを管理 Argo CD 自分が管理するマイクロサービスの CD

    パイプラインを管理 Datadog 自分が管理するマイクロサービスの モニターを管理 GAR 自分が管理するマイクロサービスの リポジトリを管理 開発チームの責任
  14. 項目 権限設定 GKE 自分が管理するマイクロサービスの namespace のみ操作可能 Argo CD 自分が管理するマイクロサービスの 設定のみ操作可能

    Datadog 誰でもすべてのリソースを操作可能 GAR 自分が管理するマイクロサービスの リポジトリにのみ push 可能 権限管理
  15. 項目 権限設定 GKE 自分が管理するマイクロサービスの namespace のみ操作可能 Argo CD 自分が管理するマイクロサービスの 設定のみ操作可能

    Datadog 誰でもすべてのリソースを操作可能 GAR 自分が管理するマイクロサービスの リポジトリにのみpush可能 権限管理