はてなの金次郎

Pythonエンジニアの技術系ブログ

JapanCotainerDays v18.12 これだけは目を通しておきたいセッションベスト3

はじめに

Kubernetes2 Advent Calendar 2018の8日目の記事です。

qiita.com

12/4・5で開催されたJapanContainerDays v18.12に参加してきました。

containerdays.jp

どのセッションもとても勉強になり甲乙はつけがたく、また、自分自身甲乙をつけられる立場ではありませんが、本記事では個人的におすすめだったセッションを「これだけは目を通しておきたいセッションベスト3」として独断と偏見でご紹介させていただきます。

※注意

  • ECSでのアプリケーション構築・運用経験があります。
  • GitLabを業務で使っています。個人的にもGitLabとGitHubの両方を使っています。
  • Kuberntesは独学で「入門Kuberntes」・「コンテナ・ベース・オーケストレーション」を読んだことがあり、GKEやAKSのKaaSでサンプルアプリケーションをデプロイしたことがあるレベルです。
  • 新卒2年目のペーペーです。
  • 繰り返しになりますが独断と偏見です。

これだけは目を通しておきたいセッションベスト3

1. Microservices on Kubernetes at Mercari

スライド

speakerdeck.com

YouTube

youtu.be

Twitterで多くの反響を集めたキーノートの一つでした。
動画とスライドをぜひ見ていただきたいのですが一応まとめておきます。

テーマ

  • なぜメルカリがマイクロサービスアーキテクチャの基盤にKubernetes(そもそもコンテナ技術)を選択するのか
  • Kubernetesを利用して今後どうしていきたいのか

テーマに対する解答(独自の解釈を含む)

  • なぜメルカリがマイクロサービスアーキテクチャの基盤にKubernetes(そもそもコンテナ)を選択するのか
    -> ビジネス競争力のあるソフトウェアをリリースするため
    -> ビジネス競争力を高めるためにはスピード感が大切
    -> スピード感をマイクロサービスアーキテクチャとImmutable Infrastructureによって実現する
    -> マイクロサービスアーキテクチャによる独立・自立したチーム作りで自走可能なチームがスピード感を生み出す
    -> Immutable Infrastructureによる決定論的なデプロイで本番環境へのリリースの心理的安全性を高め、開発者のデプロイに対するハードルを下げることでスピード感を生み出す
    -> マイクロサービスアーキテクチャ・Immutable Infrastructureを実現するためにはコンテナが向いている
    -> オーケストレーションサービスにはECS・HerokuなどのPaaSではなく拡張性の高さとエコシステムの豊富さが特徴であるKubernetesを選択する

  • Kubernetesを利用して今後どうしていきたいのか
    -> Kubernetesの拡張性の高さとエコシステムの豊富さを活用して柔軟にビジネス要件に対応していく

感想

組織として「なぜその技術に取り組むのか」という定義ができているのが大変素晴らしいと感じました。
このトークを聞いて思い出したのはTEDで公開されているサイモン・シネックさんによる「優れたリーダーはどうやって行動を促すのか」という講演です。

www.ted.com

ここで紹介されているのは、偉大な指導者や組織に共通しているあるパターンです。
それは「WHAT」ではなく「WHY」から考え行動するというもので、それが結果的に人の心を動かすそうです。
なぜコンテナなのか、なぜKubernetesなのかが最初に共有されていたため、今後の展望も納得感があり多くの人が共感しTwitterでの反響に繋がったのではないかと思いました。

自分自身も学習する際は、なぜその技術を身につけるのかという自問自答をしていきたいです。

2. GitLabによるコンテナCI/CDパイプラインのこれから

スライド

www.slideshare.net

GitLabユーザとして押さえておきたい内容だと感じたためピックアップしました。

テーマ

  • なぜGitLabのAuto DevOpsがよいのか
  • GitLabのAuto DevOpsとは何か

テーマに対する解答(独自の解釈を含む)

  • なぜGitLabのAuto DevOpsがよいのか
    -> 多くの企業はDevOpsパイプラインにおいて3~6個のツールを利用しており、技術選定コストや学習コストがかかっているという課題があるため
    -> GitLabはDevOpsパイプラインにおけるツールを包括して提供している(Complete DevOps)
    -> ソフトウェア開発に時間を費やす環境を提供するため
    -> CI/CDパイプラインに必要な設定を動的に行う仕組み(PaaS)を提供している=>Auto DevOps

  • GitLabのAuto DevOpsとは何か
    -> Auto DevOps is PaaS for Kuberntes
    -> 開発者はコードを書いてプッシュするだけ。残りは全てAuto DevOpsがよしなにやってくれる
    -> 残りとは、コード品質チェック・コードやDockerイメージのセキュリティチェック・依存関係チェック・一時的なアプリケーションレビュー環境の構築・Kubernetesクラスターへのデプロイ・Sitespeed.ioによるWebページのパフォーマンス測定・Prometheusによる監視など

感想

GitLabをまだまだ使いこなせていないことを実感しました。 初期の導入を手動で行なったり定常的な作業を手動で実施していたりという部分が何箇所か思い当たったので、そういう部分はAuto DevOpsで自動化できそうだなと感じました。

Auto DevOpsは導入は大変かもしれませんが運用は比較的楽になるのではと感じました。 また、Auto DevOpsはGoogleアカウントにサインインしていればGitLabから動的にGKEクラスターを作成してくれるという機能があったり、昨日AzureからGCPへの移行が話題になりましたがGitLabとしてもGCPとの連携を推し進めていたりと、GitLabとGCPの親和性はかなり高いです。 Auto DevOpsを導入するのであれば、GCPを利用するのが良さそうです。

3. 本番環境のKubernetesマニフェストに 最低限必要な 7 のこと

スライド

speakerdeck.com

テーマ

テーマに対する回答

  • 本番環境のKubernetesマニフェストに 最低限必要な 7 のことは何か
    -> コンテナのライフサイクル(起動時)
    -> コンテナのライフサイクル(停止時)
    -> ヘルスチェック
    -> メンテナンスとアップデート
    -> スケジューリング
    -> リソースの割り当てと基準
    -> カーネルパラメータのチューニング
    -> インターネットからのアクセス制御

感想

とりあえずこの7つのTipsを抑えておけば本番環境にKubernetesを導入することができる(運用はまた別)とのことで、わかりやすく端的にまとめられている資料でした。

特に初期化処理の方法やコンテナ停止時の挙動に関する話はとても参考になりました。

Kuberntes実践ガイドも合わせて読みたいですね。

Kubernetes完全ガイド (impress top gear)

Kubernetes完全ガイド (impress top gear)

全体の感想

Kuberntesはコンテナオーケストレーションとしてデファクトスタンダードとなった
by Chris Aniszczyk / キーノートより

Kuberntesの話を聞きにいったつもりでしたが、Kuberntesとその周辺のエコシステムを活用していかに運用を楽にするか、いかにビジネス競争力が高いソフトウェアを作るかという話にシフトしているようでした。

コンテナ⇨Kuberntes⇨クラウドネイティブ(ここの話が多かったです)

事実、JpanContainerDaysは今年で終わりで来年からはCloud Native Days 2019となります。
勉強になることだらけでとても刺激的な2日間でした。運営のみなさまありがとうございました。
次回は一回り成長して参加したいです。

(聞けていないセッションが結構あるのでおすすめのセッションがあればぜひ教えてください!)