Japan Container Daysに参加してきました!
💬 全体を通しての感想
↑のサイトのセッション一覧を見てもわかりますが、Kubernates祭り!という感じで、私が参加したセッションは全て、Kubernatesを絡めた内容が入っていました。
コンテナを実際に運用するうえでは、Kubernatesが欠かせない存在になっているみたいで、
開発プロセスや運用について紹介する際は、
Kubernetesありき+合わせて使うと便利なツールやサービス
という内容ばかりでした。
また、ツールやサービスも、複数のセッションで同じツール名を聞くこともあり、ある程度「これがメジャー」というものが確立し始めているように感じました。
Keynoteで聞いた事例が面白かったし、もっとメルカリさんみたいな事例の話が聞きたいなぁ…と思いましたが、あまりそういうセッションはなく…。
そもそも、実際Kubernetesを使って運用している事例があまり無いのかも…。
『Japan Container Daysに来ている参加者』という、コンテナに興味がある人が集まったカンファレンスでさえ、
セッション中にあった「実際にKubernetesを使って運用している人?」という問いには、ほとんど手が上がらずでした…。
Kubernetes自体の説明や、Kubernetes周りのツール紹介などの内容をメインとするセッションが多かった印象なので、これから運用を始める人というターゲットには合致したセッションだったのかもです。
🛠 紹介されていたツール
私がメモしたサービスとかツールとか
(まじで、学ばねばならないこと多すぎ…)
Cloud Native Landscape(なにかするときはココからサービスを選べ)
Serverlessとは何か(是非読めとのこと)
wg-serverless/whitepaper at master · cncf/wg-serverless · GitHub
- モニタリング
- テストツール
- デリバリ
- パッケージング
- - Helm
- その他
以下、セッションのメモや感想です。
🎤 Keynote:Production User Stories
Keynoteでは、↓のみなさまが業務でどのようにコンテナを活用しているか、というお話でした。
- サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術 Masaya Aoyamaさん(CyberAgent)
- マイクロサービスアプリケーションとしての機械学習 Takuma Yamaguchiさん(Mercari)
- Yahoo! JAPANのKubernetes-as-a-Service"で加速するアプリケーション開発 Masaya Ozawaさん(Yahoo! Japan)&Kazuki Sudaさん(Z Lab)
サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術 Masaya Aoyamaさん(CyberAgent)
コンテナ基盤を作っている話でした。
- AKEのポイント
- KubernetesもSwarmもどちらもサポートしている
- モニタリングやログ運用などの面倒なところを、パッケージとして提供している
Kubernetesのバージョンによっては、テストが動かなくなることがある。
テストツールとして、以下を使っている。
マイクロサービスアプリケーションとしての機械学習 Takuma Yamaguchiさん(Mercari)
USから、「モノリスからマイクロサービスへ移行せよ」という指示があり、それが追い風となってマイクロサービス化+コンテナ化したというお話。
機械学習では、ソースコードと学習モデルの生合成を保たなければならず、コンテナ化で苦労したとのこと。
マイクロサービス化によって、モデリングに一部制約が発生することになったが、開発スピードの向上のメリットの方が大きかった。
モニタリング
デリバリ
Yahoo! JAPANのKubernetes-as-a-Service"で加速するアプリケーション開発 Masaya Ozawaさん(Yahoo! Japan)&Kazuki Sudaさん(Z Lab)
www.slideshare.net
マーケティングの結果、通常時の数倍から数十倍のアクセスが来ることがあるサービス。
スケールアップ・アウトを簡単にするために、インフラをコンテナ化+Kubernetesしました。(そして、PHPからJavaへ)
開発フローも整えて、開発者はGitHubでの操作だけでリリースまで実施することができた。(変更前はリリースに数時間かかっていた)
既存の設計では、Kubernetesのメリットを受けられないので、Cloud Nativeな考え方へのシフトを行った。
🎤 Kubernetes x PaaS - コンテナアプリケーションのNoOpsへの挑戦 Yoichi Kawasakiさん(Microsoft)
www.slideshare.net
NoOpsを実現するための3つの能力
- Self Healing
- 故障発生時の「サービス無影響+自動リカバリ」
- In-Flight Renewing
- 変更・更新に対する「無停止メンテナンス」
- Adaptive Scale
- 負荷変動に弾力的に適応する「自律的リソース調整」
NoOpsについてはこのスライドに詳しく載っている
障害発生時に回復して処理を続行出来るレベル(回復性)は
OnP < IaaS < PaaS < Serverless
になっている。
Kubernetesは非常に強力だが、中にはKubernetesに向かないワークロードもある。
Kubernetes上でのワークロードが難しいものについては、プラットフォームとして回復性がネイティブ実装されたPaas / Serverlessを可能な限り選択しましょう。
足りない部分はエコシステムを活用してギャップを埋めよ。
🎤 Cloud Native Apps入門 Takuya Noguchiさん(iRidge/dockerjp)
まとめ
- アプリケーションをCloudNative化しておけば、今後の技術進歩にも乗っていけるのでは
- Cloud Nativeなアプリを開発していける仕組みづくりが重要
- スタートとしてマイクロサービスに拘らないことも大事
Cloud Nativeとは以下の原則を意識したシステムのこと
- Container packaged - > containerization
- Dynamically Managed -> オーケストレーション
- Microservices oriented -> Service Mesh
Cloud Nativeなアプリケーションについては、↓のように、色々な定義があるが、特にこれといった決まりはない。
- Cloud Nativeなアプリのレベルの定義
Cloud Native Landscapeも公開されている
「DjangoやRailsのフレームワークはマイクロサービスの設計思想とは合わないから、マイクロサービス化は難しい」という話が印象的でした。
技術スタックや既存資産を活用するために、マイクロサービス化に拘らずにCloud Native化に向けて進めていったとのこと。
🎤 今こそKubernetes。最高の仕事道具で使いこなそう Kazufumi Saitoさん(IBM)
www.slideshare.net
Kubernetesで出来ること
- スケールアウト
- 負荷分散
- ロールアップデート
- ポリシーベースでの可溶性
- ネットワーク管理/永続ストレージ管理
- CPU / Memoryの管理
アプリケーション開発環境を作るときは、Helmなどの便利なツールもある。
(Helm:コンテナ・システムの構成を記述してパッケージできる)
Cloud Native Landscapeから、適切にツールを選んで活用しよう。
最高の仕事道具の大前提は
オープン・テクノロジーでベンダーロックインなし
継続的に投資され、更新される、かつ、サポートつき
それにより、組み替えが自由であること
ベンダーやテクノロジーにロックインされないように、というメッセージをベンダーが出しているの、とてもいい感じです。
イマドキのアプリケーション開発方法や、クラウド化に向けて実施が必要なことなど、すごい面白い内容でした。
ただ、ボリュームがすごくて時間が足りず、最後駆け足な感じがもったいない…。あと30分くらい時間足して聞きたかったです。
🎤 Kubernetesのない世界 すべてがサーバーレスになる Shingo Yoshidaさん(Section-9/Serverless)&Yasuhiro HARAさん(SUPINF/Serverless)
www.slideshare.net
Less Ops, More Code!!!
運用負荷を少なくして、短い時間で価値の高いものを素早く・たくさんデリバリー・フィードバック・改善する
サーバレスでのチーム開発
アーキテクトと実装の分割さえできれば、むしろ工程や品質管理しやすい
Conway's Law
サーバレスの課題
AWSなどが提供しているサーバレスはエージェントをインストールできない
そういった場合に、モニタリングをどうすべきか。
多くのサーバレスアプリケーションが存在する場合、AWS Cloud Watchとかでは、Logを見切れない
ひと昔前のモニタリングのトレンド
- IOpipe - monitor, observe, and profile AWS Lambda functions
- Lambdaをラップしてメトリクスを収集する
- 性能改善の情報を得られるSaaS
- ただし、起動に時間がかかるため、Lambdaの実行時間が増えて、課金が増えてしまう
現在のモニタリングのトレンド
モニタリングのトレンドは
「Functionをラップしてステータスを送信するもの」から、
「Cloud Watch Logsにメトリクスを大量に出力させてから、それをサービスダッシュボードで可視化する非同期型のモニタリング」に変わっている
🎤 『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法! Kazuto Kusama(Pivotal)さん
www.slideshare.net
コンテナはなぜつらいのか
- コンテナ技術は抽象度が低すぎる
- エンジニアがカバーしないといけない責任範囲が広い
- KubernetesはGoogle Borgが元になっている
- エンジニアのスキルは…
- アーキテクチャは…
Dockerfileを書かなくても、よしなにやってくれるもの
👉それって、PaaS / Serverlessなのでは
IaaS、CaaS(Container)、PaaS、Serverless、どれを何を採用すべきか
- IaaSほど、自由度・柔軟性が向上する
- 生産性や標準化はServerlessの方が向上する
システム要求だけでなく、組織の状態やビジネスの将来性によって、どれを選ぶかの最適解が変わる。
影響する変数が多すぎて、一概に「こうだ!」とはは言えない
まずは、目的を明確にしよう
ビジネスがはっきりしないと、システムへの要求がはっきりしない
それぞれのアプリケーションに適した選択をしましょう。
組み合わせて使うのもいい
CNCFが公開したホワイトペーパー
wg-serverless/whitepaper at master · cncf/wg-serverless · GitHub
Serverlessとは何か、からCaaS / PaaSとの役割の違いまで書いてある
🎤 CNCF: Evolving the Container Landscape Chris Aniszczykさん(CNCF)
【資料公開待ち】
英語のセッションにチャレンジしてみました!
前半は、上に載せている『Cloud Native Apps入門』の内容と同じで
- Cloud Nativeとは
- Cloud Native Landscapeの紹介
でした。
それに加えて、CloudNativeTrialMapの10Stepの紹介がありました。
landscape/CNCF_TrailMap_latest.pdf at master · cncf/landscape · GitHub
(ここからは、私の英語理解が間違っているかもです)
CNCFの今後としては、サーバレスのアプリケーション開発へアプローチしていく予定とのこと。
サーバレスなアプリケーションはアプリケーションがベンダーに依存しがちだけど、(『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法!のセッションでもそんな話があった)
ベンダーに依存せずにサーバレスなアプリケーションを開発出来るように、フォーマットなどを用意していくとのこと。
サーバレスのメリットを活かしつつ、ベンダー依存しないって、かなり良い!!😄
CNCFはオンライントレーニングもだしていたりするとのこと。
Training - Cloud Native Computing Foundation