こんにちわ、Amigo広告Divでバックエンドエンジニアをしている末永(@Sueken51)です。2019年8月に開催された社内勉強会のレポートをお届けします。

今回のワークショップはOpenSaas Studioの岡野さん(@Juju_62q)が講師をし、「Telepresence」と言うKubernetesにおける開発体験の向上を目的としたツールの勉強を行いました。

それでは当日の様子も交えて、内容をお伝えします。

title_image

Telepresenceについて

「Telepresence」は簡単にKubernetesクラスターに載せるアプリケーションをローカル環境で試せるツールであり、次のようなことができます。

  • Kubernetes上のDeploymentとローカルのアプリケーションを入れ替える(本当に入れ替えてるわけではない)
  • Kubernetes上に新しくローカルのアプリケーションに疎通するDeploymentを作る

つまりKubernetesマニフェストを編集、適応することなく、ローカルからKubernetesクラスターでアプリケーションが動いてるかのような状況を作り出すことが可能になります。

こうすることでGitopsや継続的デリバリーを前提とする状況下でもその思想に衝突することなくKubernetes上でアプリケーションのデバッグや疎通確認を行うことができ、より快適な開発体験を得ることができます。

この「Telepresence」を利用することでGitopsや手動でのマニフェストの適応を禁止しているチームで発生する次の問題の緩和を試みます。

それは『デベロッパーが実際の環境でコンテナを動かすまでに他人の時間が必要』と言う問題です。

具体的な開発サイクルを追っていきます。

Kubernetesの場合

  1. コンテナで動くアプリケーションを開発
  2. コンテナレジストリにイメージをPush
  3. Kubernetesのマニフェストの編集
  4. マニフェストのapply

このように大まかに4つのステップになります。さらにチームではアプリケーションコードのレビュー、さらにはKubernetesマニフェストのレビューが入った後、やっと実際の環境での確認ができるようになります。これではチームメンバーの時間を無駄に必要としてしまいます。仮にデバッグするためのログを追加しただけでも、この工数が必要なのは開発体験としていまいちです。それでは従来のVMの場合ではどうでしょうか?

VMの場合

  1. アプリケーションの開発
  2. VMに対してデプロイ

VMであれば2つのステップになります。ここでもアプリケーションコードのレビューは必要ですが、Kubernetesマニフェストのレビューは不要なので無駄な時間が少なくなります。

このようにKubernetesの導入のせいで実際の環境での動作確認までに他人の時間を必要する工数が多くなってしまいました。

ではこの問題を緩和するために「Telepresence」を利用するとどのような開発サイクルになるのでしょうか?

「Telepresence」を利用した場合の開発サイクルを追ってみます。

  1. コンテナで動くアプリケーションを開発
  2. Telepresenceを使って実際の環境での動作確認

「Telepresence」を利用してないときは必要だった他人の時間を必要とする工数がカットすることができます。

他人の時間を必要とする工数が削減できるので実際にKubernetes上で動作させるまでのリードタイムを短くすることができ、非常に開発体験がよくなります。

ハンズオン

勉強会の後半では、こちらの資料を元に「Telepresence」を触ってみるというハンズオンを行いました。

handson

ハンズオンでは実際に「Telepresence」を利用して、ローカル環境のイメージをKubernetes環境で試したり、同じPodに対して二人以上の開発者がTelepresenceを利用したらどうなるか試したりして「Telepresence」への理解を深めました。

懇親会

懇親会ではお寿司などが振舞われ、参加者のKubernetesの体験談など、とてもためになる話で勉強になりました。

cheers

あとがき

自分の所属しているチームもKubernetesを利用しており、Telepresenceの活用方法を知れたのはいい機会でした。特に開発体験の向上は自分としても非常に興味のある分野なので今後もTelepresenceのようなツールが出てきたら追っていきたいです。

最後になりますが、勉強会を開催していただいた関係者の皆さま、および講師の岡野さんありがとうございました。

2019年新卒入社のサーバーサイドエンジニアです。現在はAmigoの広告部門でインフラ周りを触ったりしています。