1
/
5

CloudNative Days Kansai 2019に行ってきました!!

現在、イーシーキューブはテクアカ生(インターン生)を募集しております。
ご興味がありましたら、是非こちらより応募ください!

こんにちは、株式会社イーシーキューブでテクアカ生として勤務させていただいている中谷と申します。先日開催されたCloudNative Days kansai 2019にインターン生2人で参加させていただいたのでレポート書きたいと思います。

関西ではなかなかこのような機会はないので、かなり貴重でした!ありがとうございます。

メルペイのマイクロサービスとCloud Native

こちらのセッションでは、メルペイのマイクロサービスに絡んだ話を聞くことができました。
メルペイさんでは、マイクロサービスで開発するときに、現時点では自由な技術選択をやっていないそうです。理由としては迅速にサービスを開発したり、チームをまたいでの情報共有や人の移動がしやすくなるためにだそうです。
またメルペイのkubernetes運用についても触れられていました。

  • 1つのクラスタ内で管理していて、マイクロサービス毎にNamespaceを分割している
  • GCPのプロジェクトはマイクロサービス毎に個別に存在
    • クラスタの管理はPlatformチーム、各マイクロサービスの開発チームのメンバーは自分のGCPのプロジェクトとNamespaceのみを意識すればいい

という状態になっているみたいです。
またスライド内で、

  • マイクロサービスにおける決済トランザクション管理
  • メルペイにおけるお客さま残高の管理手法

について、メルカリのテックブログのリンクが貼られていたので、また今度見てみようと思いました。マイクロサービスで決済サービス開発するの大変そう。。。
最後に、マイクロサービスの開発や運用に関して、課題点が紹介されていました。
印象に残ったのが、スライドにありますが、

Cloud Nativeで重要なのは技術セットではない。
組織体制や開発・運用のスタイルも含めたCulture

です。技術的なこと以外にもかなり奥が深いんだろうなと。

CloudNative Buildpacksで創る、CloudNativeな開発体験

Cloud Native BuildpacksCNCFのsandboxプロジェクトです。
Cloud Native Buildpacksを使うと、プロジェクトのリポジトリ内でコマンドを叩くだけで

  • 言語の特定
  • バージョンや依存関係の解決
  • イメージのビルド

をやってくれます。つまり、Dockerfileがいらない!!!
Cloud Native Buildpacksを使えば、アプリケーションコードを元にイメージの作成ができるので、アプリケーションの変更があれば、自動的にイメージを作成したいという感じになったそうです。
そこで、tektoncd/pipelineArgoCDを使って、CI/CDを行っていました。
tektoncd/pipeline はCDF(Continuous Delivery Foundation)のプロジェクトの1つで、tektonを使うことでCI/CDのパイプラインをyamlファイルでkubernetesのCRDとして定義し、宣言的に管理することができます。
今回のケースではtektoncd/pipelineでCloud Native Buildpacksで最新のイメージをビルドして、kubernetes上へデプロイするパイプラインを作成されていました。tektonではパイプラインを実行するためのPipelineRunというリソースがあるのですが、これをkubernetesにapplyすることによって、パイプラインが実行されます。ArgoCDでソースのリポジトリをポーリングし、コードの変更があった際にArgoCDがPipelineRunをkubernetesにデプロイすることによってPipelineを実行しているそうです。
後はTelepresenceにも触れられていましたが、何やら実際使うとなると課題が多そうでした。ちなみにTelepresenceもCNCFのsandboxプロジェクトに登録されています。

Production Ready Kubernetesに必要な15のこと

このセッションでは、kubernetesを運用するにあたって必要な事項を分かりやすく、かつコンパクトに説明されていました。Cloud Native初心者の自分に取っては本当に学ぶことも多くまた、本当に分かりやすかったです。
タイトルの通り15項目あったので、正直全テーマ超良かったですが、完全に独断でいくつか抜粋して紹介します。

5. Graceful Shutdown

Podがterminateする時に、コンテナ内のプロセスをGracefulにシャットダウンするべきだ、という内容でした。このテーマではPodのterminatingのライフサイクルとGraceful Shutdownのためのプラクティスについて触れられていました。

7. Config Injection

ここでは、kubernetesに対して、アプリケーションのConfigを設定する方法として、【ConfigMap】と【Secret】について上がりましたが、特にIaC(Infrastructure as Code)の文脈で重要となるSecretの管理について詳しく触れられていました。kubernetesのsecretリソースでは文字列がBase64でエンコードされるだけなので、すぐにデコードされてしまい、セキュアではないです。そういったことを踏まえた解説がなされていました。

9. Resource Management

ここでは、NodeにPodが集中してしまってNodeがパンクしてしまわないようにPodに設定する最低限必要なリソース(Requests)と上限(Limits)についての説明がありました。また、Nodeのキャパを超えたときにkubernetesはPodを強制的にEvictさせ、そのEvictの優先順位を決定する際に考慮されるQoS Classというものにも触れられていました。

10. Scheduling

ここでは、Podのスケジューリングの制御について解説されていました。PriorityClassをPodに指定することで、Podのスケジューリングをある程度コントロールできることを説明されていました。

まとめ

自分がCloud Native初心者というのもありますが、とても勉強になりました!
CNDK2019に参加して、Cloud Native超楽しいってなったので、これからもCloud Native追っかけます!!
また、もう一人の参加者のテクアカ生もCloudNative Kansai 2019の参加ブログを公開しているので、是非、ご覧ください!!
ありがとうございました!!!

株式会社イーシーキューブ's job postings
8 Likes
8 Likes

Weekly ranking

Show other rankings
Invitation from 株式会社イーシーキューブ
If this story triggered your interest, have a chat with the team?