Cloud Nativeとは(Cloud Native Kansai #02)

IT

久し振りの投稿。
今回は趣味的ではなく。
本業のSE業務の備忘録。

先週、3月15日に開催されたイベント、
Cloud Native Kansai #02に参加してきたので、
その備忘録的な、情報整理的な。

今回のイベントではubernetesを中心とした技術、
それを使ってどんなアプリケーション展開が出来るかといったテーマでした。

①そもそもCloud Nativeとは?

 

パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなど、
様々なクラウドが乱立する中で、
スケーラブルなアプリケーションを構築し、実行する手法です。

コンテナ、サービスメッシュといった、手法を用いることで、
高い回復性や管理のし易さ、可観測的なシステムを実現することが可能になります。
かつ、これらを自動化と組み合わせることが出来るので、
エンジニアは強力な変更を最小限の工数で、
頻繁に予測通りに低リスクで実施することが出来るようになります。
つまりは以下のようなことを実現する為の手法となります。

・疎結合なシステム
・復元力がある
・管理しやすい
・可観測である
・堅牢な自動化により、頻繁かつ期待通りに最小限の労力で大きな変更が可能

②Kubernetesって何さ?

 

クバネティスと読みます。
長いので、K8sと書かれている記事が多いです。

皆様が使っているGoogleのサービスは、
このKubernetesを用いて、実現されています。

元々はGoogleが作った、Borg(ボーグ)によってサービスを実現していたのですが、
Borgでの様々な問題対策や改善はやがて、Kubernetesの設計へ継承され、
現在は、Cloud Native Computing Foundationがメンテナンスを行っています。

これがCloud Nativeを実現する為のオープンソースのプラットフォームとなります。
①の手法をKubernetesを用いて実現するということになります。

③Kubernetesでどんなことが出来る?

その前に代表的なKubernetesの用語を抑える必要があります。

 

・Container
OS上に、隔離されたアプリケーションの実行環境のこと。
一台のホスト上で複数のホストが動いているかのような環境を実現することが出来る。
極端な言い方、1台のPCでホストを変えずに複数のサーバーを立てられるような感じ。

 

・Pod
Volumeと呼ばれる記憶領域を共有するContainerの集まり。
1つのIPアドレスを共有しているので、
PodはKubernetes上ではホストに相当します。

 

・Node
Kubernetesを実行するワーカーマシン。
仮想マシンにも物理マシンにもなれる。
Node上でPodをスケジューリングすることが出来ます。
つまりは、どのPodを実行するかなどをNodeがコントロール出来る。

 

上記のことや他の要素を組み合わせることで…

複数台のホストから構成される実行環境を
あたかも一台の実行環境のように 扱うことができるようになります。

Containerを起動する際は、OSと台数を指定するだけでOKで、
クラスタのどこに設定するとかは気にしなくて大丈夫です。
Kubernetesが自動でやってくれます。

長くサービスを維持する中で必ず課題になるのが、
CPU、メモリなどのリソース不足による、
多大な変更コストですが、Nodeを増やすだけでOKになり、
Container、アプリなどの再設定は不要になります。

また、Kubernetesの代表的な魅力として、
耐障害性があります。

Containerを何台起動しておくといった、機能構成、
それをKubernetesはマニュフェストとして設定しておくことが出来ます。

Kubernetesは常にそのマニュフェストを維持出来るように、
自動でシステムをコントロールします。

もし、Containerが落ちてしまったならば、
自動で別のContainerを立ち上げてくれます。

もし、マニュフェストの要求スペックを満たしていないならば、
自動でPodを整形しリソースをコントロールしてくれます。

 

今回のイベントに参加して、
クラウドで出来ること、技術はとてつもないスピードで進歩しているなと、
改めて実感しました。
情報誌なり、イベントなりで情報を吸収していかないと、
どんどん取り残されるような、新技術の感動とともに、一種の危機感を感じました。
このIT業界の波に飲まれないように、
今後も研鑽を怠らないようにしていこうと改めて考えさせられました…

コメント

タイトルとURLをコピーしました