Platform Engineeringの事例になりそうなものの紹介
KubeCon / CloudNativeCon NA 2023 Chicago 第一日目。Platform Engineering関係のセッションで、「これは良い事例かも」と感じるものが2つありましたのでご紹介。
1つ目
Building, Scaling, and Growing Internal Developer Platform for Companies Inside Companies
Goto Financialという企業におけるサービスプラットフォーム提供の物語です。
最初、Platform抽象化を考えて、gopayというメインのサービス群で適用しました。Platformの抽象化を推進することで
- K8sのラーニングカーブから開発者を保護する
- インフラチームがインフラを容易に維持管理、そしてガバナンスできること
を目指します。開発者とインフラチームの関心事の分離を適切に行うことで
- 1年でistioを使った環境を提供した
- K8sの非推奨APIを取り除く
- ワークロードにspot instanceを活用する
- クラスターの利用率を改善
といった成果も上げることができました。
そして、登場する次の課題。会社も大きくなり、多くのサービスを買収するなどしてグループ企業内で利用するシステムも増えました。それにより、個々のチームが独立したインフラを持つような状況に陥りました。 これは例えばMonitoringを見ようとする場合、サービスAとサービスBでは導入されているものも、そして利用方針も全く異なるといったことが発生します。全体的に見れば非効率な部分が多く、コスト削減も難しいといった部分が出てくるようになります。
そこで、グループ企業内での利用するサービス・機能等の標準化を目指します。しかし、すでに本番環境で動いているものばかりです。そこで、ワーキンググループを立ち上げ、すでに各サービスで利用しているものは現実的な選択をすることで無理に標準化しすぎない方針をとりました。(標準化と実際に動いているもののバランスをよく考えて対応していたようです)
ただし、先行したgopayの中で他のサービスでは使っていなかった部分は積極的に活用します。それがIstioでした。gopayではcanary deployなどを活用しており、その部分はサービスの品質確保のためにも重要であることを後発の各各チームでも納得できるように根気よく説明していったようです。
その結果、グループ企業内での標準化が次第に進んでいっているようです。
標準化を目指しつつも、ちゃんとそれぞれのチームの開発状況を考慮し、ある程度現実的な解をみつけていくというのは、Engineeringの良い事例で、ぜひ今後もなにかと参考にしたいと感じた内容でした。
すでに資料は公開されているようなので、詳細はそちらを御覧ください。
2つ目
Streamlining Infrastructure with Crossplane: A Transformation Story
ConsensysというBlockchain/Web3企業における Crossplaneを使ったインフラの抽象化・自動化の物語です。
こちらも経緯は1つ目の例に似ています。A、B、C3つのチームが有り、AではTerraform、BではCloudformationやAnsible、CではPulumiを使っており、非効率、高コスト(車輪の再開発)となり、Time to marketが問題にもなってきていました。
これに対応するためにCrossplaneで全体を1つのツールに集約、抽象化を進めます。Multi-tenancyなど様々な課題を解決し、当初の問題も解決していきます。
実際のセッションではCrossplaneでどのように設定をおこなっていったかといった点も説明されていますので興味のある方はぜひセッションをご覧ください。こちらも資料はすでに公開されていました。
まとめ
それぞれの開発チームが独自の設計を行っていくと、当初はスピード感のある対応ができますが、次第にチーム間で同じことをやっていたり、チーム間でナレッジが共通化できないなど、不都合が起こってくるものです。まさに今回紹介した2社もそうした課題が発生しそれぞれのやり方で標準化を進めて解決しています。ある意味どこでもほぼ必ず起きることなのかもしれません。
実際に将来どういった問題が起き得るのか、それにはどうやって取り組んでいけばよいか、また事前に用意・対応しておくことはないかといったことを、こうした事例を通じて私たちは学ぶことができます。
このブログがそうした学びを得る良いきっかけになれば幸いです。