2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
Kubernetesで始める新しい開発(全1記事)
リンクをコピー
記事をブックマーク
青山真也 氏:本日は「Kubernetes で始める新しい開発」というテーマでお話しさせていただきたいと思います。
簡単に自己紹介なんですけど、私サイバーエージェントの青山と申します。普段はインフラエンジニアで主業務は主にGKEみたいなKubernetesサーバサービスのプラットフォームやKubernetes関連のアーキテクトも行っております。
コミュニティ活動もしておりまして、Kubernetesなどクラウド系のMeet upの主催をしていたり、あとは本の著者や登壇もしております。
このページで何が言いたいかというとKubernetesが超好きです。見てわかる通りなんですけど。
(会場笑)
みなさんKubernetesを知っていますか? 知っている方……。
(会場挙手)
お、けっこう多い。ということはみなさん当然スマホを持っているので、手のひらサイズのKubernetesクラスタも……。
(会場笑)
持っている方……。
(会場挙手)
1人……。どうでしょう。
Kubernetesクラスタを持っていれば、カフェでもオシャレな感じにできますし、飛行機でももちろん使えます。
ちなみに飛行機で使うときは、普通の人が見るとどう見ても爆弾なのでマジで気を付けてください。捕まらないか、すごくヒヤヒヤします。
今年のテーマは「羽化」ですね。Kubernetesはちょうど5周年です。5年間成長してきました。カンファレンスの参加者もどんどん伸びたり、マネージドサービスもほとんどすべてが対応したり、ベンダーも対応したり、非常にデファクトスタンダードなプラットフォームとなってきました。
今年のテーマは「羽化」ですが、私もこのKubernetesとともに3年間成長してきてKubernetes愛に溢れる人材になったので、今日はKubernetesの話をします。
そもそもKubernetesとCLOUD NATIVEって何か? Kubernetesを管理しているCNCF「CLOUD NATIVE COMPUTING FOUNDATION」という団体があります。
そこがCloud Nativeの定義を行っていて、疎結合性や復元力がある、管理しやすい、可観測である、自動化でアップデートしやすい。そういった特徴を持つシステムをオープンなテクノロジーを使ってスケーラブルに実現することが目的になっています。
なのでCloud NativeというのはKubernetesのためだけのものではなくて、Kubernetesを使うと実現しやすいものではあるんですけど、他にもAWS ECSなどのその他の手段というのもあります。
サイバーエージェントの話でちょっとお話させていただくと、AI tech studioではGKE互換のKubernetes基盤を作っていたり、ただKubernetesクラスタをデプロイをするだけじゃなくてKubernetes自体のソースコードに改良を入れるなどけっこういろいろやっています。GKEが対応しているContaner-nativeロードバランシングという機能も独自実装をするぐらい大好きです。
ちなみにスライド右上のキャラクターのAKE……うちのコンテナ基盤のマスコットキャラクターなんですけど「あくーえ」と言います。……シーンって感じですね。
(会場笑)
あとはAbemaTVでもけっこう早い段階からKubernetesを利用していたり、他にもいろんなプロダクトで使ったりしています。
実際問題なんですけどKubernetesを使うと何ができるのかというと、今日お話したいのは主に3つあります。1つ目はたぶんみなさんが一番想像しやすい「コンテナやアプリケーションの実行基盤」としてのKubernetes。もう1つが「X as a Service 基盤」としてのKubernetes。いわゆるマネージドサービス基盤みたいなものですね。
最後にお話したいのが、ここらへんでみなさんは引き気味にこっちを見る感じになると思うんですけど、本当に根本的なことを言うと、「分散システムフレームワーク」としてKubernetesがあるという話を今日はやっていきます。
1つ目の「アプリケーションとコンテナの実行基盤」です。KubernetesではYAML形式のマニフェストを書いて、それをKubernetesに登録すると、コンテナを起動したりロードバランサの設定をしてくれるものになります。
例えば、nginxをスケールして3台に溜めておいてほしいというのは、YAMLを書いて登録をしておくと自動的にやってくれますし、登録を1度しておくと何か起こってもセルフヒーリングして自動的に戻してくれたり、あとはロードバランサと自動的に連携してくれたり、オートスケールしてくれたりします。
あとはもともとKubernetesというのはGoogleのBorgというものをベースとして作られたオープンソースのソフトウェアになっているので、Googleが長年社内でやってきたクラスタマネジメントやワークロードの管理を行う洗練された自動化が使えるようになります。それによってさまざまなワークロードへ対応することが可能になってきています。
2つ目の「X as a Service 基盤」としてのKubernetesです。Kubernetes自体はプラットフォームのためのプラットフォームという言葉で表現されることもよくあります。例えばKubernetes上にDatabase as a Service基盤を作ったり、Queue as a Service 基盤を作ったり、そういったことが可能になります。例えば「MySQLのクラスタがほしいな」という場合は、マネージドサービスではAWSのRDSとかGCPのCloud SQLとかを起動すると思います。
Kubernetesでも「MySQLのクラスタほしいです」とマニフェストにReplica数やマルチマスタするかの簡単な設定を書くだけで、あとは自動的にMySQLのクラスタを作ってくれる仕組みもあります。万が一、MySQLのノードが1台落ちたとしても自動的に障害から復旧してくれたり、基本的にマネージドな自動化された仕組みを使うことができます。
なのでKubernetesはもうちょっと言い換えると小さなクラウドとしても見ることができます。Kubernetes上にDatabase as a ServiceやQueue as a Serviceなど、いろんなas a Service 基盤のプラットフォームを構築しておくと、デベロッパーがマネージドサービスっぽい基盤のシステムも使えるようになります。
最後に「『分散システムフレームワーク』としてのKubernetesです。Kubernetesのコアが何かというと、宣言的なAPIと分散システムのフレームワークだと思います。ReplicaSeではコンテナを複数個起動しておきます。例えば3つ起動しておくものを登録したら、そのときに3つのコンテナを起動して終わりではなくて、ControllerがKubernetesの中でずっと動いています。
このときControllerは何をしているかというと、ReplicaSetの例だと、登録されている状況を見つつクラスタに対してコンテナを起動したりしています。先ほども言った通り、ただ起動するだけじゃないという話は、Controllerが調整ループなどと言ったりするループプログラムをずっと回していて、あるべき状態に収束させることをやっています。
ループ処理では何をしているかというとObserve・Diff・Actという3つの工程を経ていて、現状を確認するのと、理想を現実の差分を計算して、その差分に対して何か処理をする流れになっています。
例えば2個しか動いていない状態だったら、Observeでは理想を現実を把握します。
それに対してDiffでは差分を計算する、するとコンテナが1つ足りない。
なのでアクションとしてnginxのコンテナを1つ立てるという。という処理をずっと繰り返しています。
結局これは何をしているのかというと、Controllerは運用ナレッジをプログラム化をすることによって自動化しています。ここが自動化されていないとすると、人が監視のアラートを見て「2個しか動いていないから手動で1個立てましょう」となると思うんですけど、そういうものをKubernetesではControllerによって自動化し、そのままノンオペレーションでやることができるようになっています。
Kubernetes内ではこういうControllerが非常にたくさん動いています。このControllerたちがいろいろな役割を担って非同期で動作することによって1つの分散システムを構成しています。
例えばMySQLの例だと「MySQLを立ててほしい」となったときにMySQLのスペシャリストにすべてを任せるじゃないですか。Kubernetesの場合、RDBだったらデータベースのスペシャリストの運用ナレッジから作られたControllerプログラムを使った自動化に任せることができます。そういった自動化の仕組みを使うことによっていろいろできると。
このControllerの仕組みはKubernetesでは拡張して実装できるようになっています。このMySQLを管理するコントローラプログラムもせっかくオラクルさんが作ってくれたものがあるので簡単に利用することができます。また、自分たちのドメイン特化な運用ナレッジを自動化したいとなったときに、自分で実装してControllerを実装することによって、今までやっていた運用を任せることができるのはKubernetesの非常に良いところです。
まとめると、この3つがKubernetesの良いところです。一番下が大事なところなので、雰囲気でもいいのでぜひ覚えていただけると幸いです。
ということで、ご清聴ありがとうございました。
(会場拍手)
関連タグ:
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05