共通化のカギは「技術ごとの判断や検討が必要な場面をできるだけ減らすこと」
それでは、共通の運用作法を実現するには、どこから着手していけばよいのだろうか。町田氏は、共通化を考えるポイントを以下の3点に整理する。
第1に、「どのように環境を変更するか」という点だ。これは、変更手順やチェック、ロールバックの仕組みを揃えることを指す。第2に、「どのように環境を守るか」だ。環境を守る、とはポリシーによる最低基準の自動的な担保を指している。最後に、「どのように環境を保つか」。環境の作成・更新・廃棄というライフサイクルの管理をしなければいけない。
この3点を揃えていくことで、開発者がコードを書くことに集中でき、ユーザーに向けて自信を持って、より頻繁にリリースできるようになるはずだと、町田氏は伝える。
オンプレミスやクラウドなどの環境に依存しない、共通の運用作法を実現するプラットフォームとして、町田氏は「Kubernetes」と、その周辺のOSSツール群を推奨する。CNCF(Cloud Native Computing Foundation)は、Kubernetesを中心にクラウドネイティブ技術を推進する団体だ。このエコシステムには、オーケストレーションから、GitOps、可観測性、セキュリティ、ポリシーまで、幅広い領域をカバーするツールが揃っている。
中でもKubernetesは登場から10年以上が経過し技術として十分に成熟しており、オンプレミスからパブリッククラウドまで幅広い環境で動作実績を持つ。加えて拡張を前提に設計されているため、組織固有の要件にも対応できる柔軟性がある。CNCFのエコシステムを最大限活用しながら、差別化が必要な部分だけ作り込み、それ以外の部分について標準化を進めるのが良いと、町田氏は勧める。
共通のプラットフォームの上に置かれるのが、推奨ルート(Golden Path)だ。これは、プロジェクトテンプレート、標準CI/CDパイプライン、可観測性の初期セット、変更・ロールバックの基本手順など、開発からリリースまでに必要なツールと手順を一般化したものだ。推奨ルートがあれば、開発の立ち上げが速くなり、CI/CDによる自動チェックがレビューの負担を軽減し、可観測性とロールバックが担保されるので開発者の不安が減る。さらに、チームの暗黙知にとどまっていた正しい進め方が、仕組みとして組織全体で共有されるようになるなど、さまざまなメリットが生じる。
共通のプラットフォームを整備する際には、共通化する領域と、裁量に任せる領域を見極めることが重要だと、町田氏は指摘する。変更・ロールバックの仕組みやセキュリティ標準はすべての環境で共通化するべきだが、アプリケーションの設計・実装やプログラミング言語の選択といった開発寄りの領域は、チームの裁量に委ねた方がよい。開発ツールは、環境依存の制約が生じやすく、共通プラットフォームとは馴染まない面があるという。まずインフラから共通プラットフォーム化を進め、開発環境は推奨ルートとして整備していくのが望ましい。
「日々の現場で発生する、技術ごとの判断や検討が必要な場面をできるだけ減らすこと。そして、同じ目的を実現する際に、そのための手段を再利用できる範囲を広げていくことが、共通化の目的です」(町田氏)

