kubernetesで効果的な開発者エクスペリエンスを創造する方法~インフラストラクチャ、ワークフロー、プラットフォームに関するヒント~ 第21回 18年08月 / 最終更新:2018.08.06

こんにちはー。野田貴子です。今回はOpenStack関連のコラムで面白いものがあったので意訳版をお届けします。昨今、OpenStackの注目度が高まっており、OpenStack開発者メーリングリストやコラムをチェックしている人も多いと思います。英語が苦手な方にとっては、日本語で要約版があると助かるのではないかと考え、日本語意訳したものをお伝えすることにしました。
興味がある方はご覧ください。海外動向を理解する上での参考になれば幸いです

###

需要のあるコンテナ技術を持ったスタッフを採用し働き続けてもらうことは、多くの企業にとって課題となっています。

フリーランスの技術コンサルタントであるDaniel Bryant氏は、DevOps、クラウドコンテナプラットフォーム、マイクロサービスの実装を中心とした15年間の実務経験を持ち、企業と開発者の双方が満足する開発者エクスペリエンスの構築方法についての知識があります。クラウド・ネイティブ・コンピューティング・ファンデーション(CCNF)が最近主催した1時間のウェブ会議にはこれらのヒントが満載です。

「開発者エクスペリエンスとは、アイデアをコードに落としビジネス価値を提供するまでの摩擦を最小限にすることです。どのように自身のプラットフォームを構築するかが開発者エクスペリエンスに影響を与え、生産性の高さや技術者としての楽しみは、ローカル開発やパッケージアプリのデバッグ、CI/CDデプロイの制御や観察のようなことの経験を意図的に設計することで得られます。

インフラを最初に

Bryant 氏は、「マズローの欲求5段階説のようなものですが、まずインフラを適切に構築し、その上にプラットフォームを構築し、それに続いてワークフローを作成する必要があります」と述べました。ワークフローは速度とビジネス価値に大きな影響を及ぼす堅実な基礎の上に建てなければなりません。

自分のワークフローを見つける

理想的なワークフローは間違いなく長年にわたって変化しています。Bryant 氏が始めた当初はウォーターフローしか選択できず、これは必ずしも悪い方法ではありませんでしたが、開発前にすべての要件を把握していることを前提としていたので、橋の構築などの場合には適切かもしれませんが、どんな技術にも有効な手段となるわけではありませんでした。

「ソフトウェアには仮説があり、アイデアがありますが、それらを検証する必要があります。そのためアジャイルが今やデファクトスタンダードになっています、なぜならアジャイルはウォーターフローに似ているものの、反復回数が少ないためです」とBryant氏は説明しています。同氏はNetflixを例に挙げています。それぞれのチームが独自の開発者、品質管理、プロダクトマネージャーを抱える組織横断的なチームでは、「基本的に製品を提供するために必要なものはすべて、プロジェクトから製品に移行しています」。このサイクルでは、ローカルでコード化されたアイデアがKubernetesにデプロイされた後、Canaryがテストし、Prometheusのようなツールを使用してユーザーに与える影響を測定しています。

KubernetesのDIYプラットフォーム

Bryant氏によると、Kubernetesで自身のプラットフォームとしてのサービスを展開することが理にかなっていると考えている場合は、考慮すべき重要な問題点がいくつかあるとのことです。

・ローカルですべてを行いますか?それともクラスタ内でもっと作業したいですか?
・Cloud Foundryのような経験(Dockerやコンテナがローカルマシンにインストールされていないもの)が必要ですか?
・どのくらいの速さでユーザーからのフィードバックが必要ですか?
・コードリポジトリの構造について強い意見がありますか?
・開発チームのための「ガイドレール」がほしいですか?

リモート開発かローカル開発かに関わらず、「すべてはトレードオフであり、あるものが他のものよりも優れているとは言えません。ただし、ローカルですべてを実行すると、おそらく製品には現実的ではないでしょう」とBryant氏は述べています。これらの選択肢について詳細のチャートは以下になります。

正しいパターンを見つける

「Kubernetesが運用のためになる確実なパターンがあります。それは事実上コンテナオーケストレーターとしてのサービスになりつつあります。Bryant氏は、「以前私はAmazon ECSとMesosで働いていました」とも述べました。「すべてのクラウドベンダーは基本的にホストされたKubernetesの機能で成り立っています。これは新しいクラウドブローカープラットフォームになるようなものです。」Kubertetesの拡張性は、カスタムコントローラを構築するかどうかに関わらず、開発者エクスペリエンスに影響を与える余地が十分にあることを意味しています。「プラットフォームのオペレータにはプラットフォームエンジニアがいるため、カスタムリソースのカスタムコントローラを潜在的に作成することで、開発者に大きな価値を与えることができます」。開発とデプロイのために、Bryant氏はDraft、GitKube、Skaffold、Helm、KSonnet、Forgeを使用してこれらの恩恵を受けています。そのほかの重要なパターンには、全体的な開発とデプロイ、CI / CDと可観測性のためのパターンがあります。

今回のウェブ会議は以下のリンクから見られます。
https://youtu.be/h_Nxm9Huz30

CCNFのYouTubeチャンネルはこちらです。
https://www.youtube.com/watch?v=h_Nxm9Huz30&feature=youtu.be

※本コラムは以下の文章を意訳したものです。
引用元 
http://superuser.openstack.org/articles/how-to-create-an-effective-developer-experience-with-kubernetes/

※本コラムは原文執筆者が公式に発表しているものでなく、翻訳者が独自に意訳しているものです。