キカガク プラットフォームブログ

株式会社キカガクのプラットフォームブログです。エンジニアやデザイナー、プロダクトマネージャーなどが記事を書いています。

キカガクのプラットフォームチームエンジニアリングの取り組み

こんにちは、プラットフォーム部の北田です。

今回は私が所属する弊社の「プラットフォームチーム」について取り組みや抱えている課題をかいつまんでお話します。

プラットフォームエンジニアリングの重要性

そもそもプラットフォームエンジニアリングとは何でしょうか?プラットフォームチームはプラットフォームエンジニアリングをしてどんな課題を解決するのでしょうか?

いずれも私が現在のプラットフォームチームに所属する前、もしかすると今でも疑問に思っていることです。

Google の公式ドキュメントでは下記のように定義されています。

プラットフォーム エンジニアリングとは、組織において有用な抽象化を行い、セルフサービス インフラストラクチャを構築するアプローチです。散乱したツールをまとめ、デベロッパーの生産性を高める効果があります。プラットフォーム エンジニアリングの狙いは、デベロッパーが体験する日常的な困難を解消して、行きすぎた責任共有モデルが引き起こす学習の手間を抑制することです

https://cloud.google.com/blog/ja/products/application-development/golden-paths-for-engineering-execution-consistency

先日の Platform Engineering Meetup Online #2 をはじめ、プラットフォームエンジニアリングの勉強会に参加したりプラットフォームエンジニアリングについての記事を読んでいく中で、現時点で私が思うプラットフォームチームの役割は2つあると感じています

  1. 開発エコシステムの基盤を構築し、開発者の生産性を底上げすること
  2. 認知負荷を下げ、開発者の生産性を底上げすること

いずれも解決目標となるのは「開発者の生産性をあげる」ことで、そのためのエコシステムをプラットフォームチームでは率先して取り組んでいます。

認知不可を減らす取り組みについては、まだまだこれから取り組んでいく必要があると感じています。

現在エンジニアチームはデザイナー含め 20名 弱となっており、これから採用を加速していく中でますます認知負荷を下げる試みが重要になってきます。

現在の取り組み

  • Google Cloud、GitHub の IaC 化
  • toC, toB のプロダクトで提供している学習コンテンツの ipynb ファイルから HTML ファイルへのコンバートからデプロイまでの CI/CD 化
  • BigQuery を活用したデータ基盤の構築・運用
  • Google Cloud の ロギング・モニタリング最適化

プラットフォームチームが立ち上がってからまだ1年ほどになるので、それ以前からすでに構築されていたものもありますが、上記の4つがプラットフォームチームの主な取り組みです。

Terraform の導入、運用基盤の構築

弊社ではプロダクトのインフラとして Google Cloud を利用しており、その中のリソースを Terraform で管理しています。

1年ほど前までは、プロダクト開発にフォーカスを置いて特に開発スピードを重視して日々開発をしており、開発スピードの障壁にならないように開発者がそれぞれ Google Cloud のリソースを GUI から変更していました。

当然 GUI から直接変更するのでリソースの変更にかかる時間は短いですが、誰がいつどのような変更を加えたかがわからず、またリソース変更のレビューもしっかりおこなわれていなかったので、一歩間違えるとエンドユーザーに影響を及ぼす自体になっていたかもしれません。

Terraform の導入で持続的なリソース管理の体制が整っていると感じています。

また Terraform の導入に合わせて、plan から apply までを GitHub Actions で構築しています。

新しく入社したメンバーが自分で必要な権限を確認し Pull Request を提出することで Google Cloud 上の権限が付与されるため、入社時のオンボーディングに取り入れています。

Gooele Cloud の ロギング・モニタリング最適化

プロダクトの異常値をモニタリングし、Slack へ通知する仕組みも存在します。

例えば弊社のバックエンドで一部使用している Cloud Functions や App Engine、Cloud Run でしきい値を超える重要なエラーを検知した場合にそれぞれの Slack チャンネルに通知しエンジニアがすぐに異常を確認できるようになっています。

今後必要なログの出力やモニタリングのポリシー作成のフォーマットなどドキュメント化することで、各エンジニアの認知コストを下げていきたいです。

まとめ

ここまで弊社のプラットフォームエンジニアリングに関する取り組みについてお話してきました。

大切なことは「常にチーム開発の課題を解決する」ための基盤構築です。How を考えるだけでなく、根本的な Why を追求して今後もプラットフォームチームでの取り組みを加速していきます。

また、弊社ではエンジニアの採用を行っています!

今回の記事に関する内容や今後の取り組みに関して、ぜひ一度カジュアルにお話しましょう!

最後までお読みいただきありがとうございました。