日本語
  • TOP
  • RCOS日誌
  • NII Hacky Hour(情報技術のトレンドを知る勉強会)

NII Hacky Hour(情報技術のトレンドを知る勉強会)

今年度よりNIIでは「Hacky Hour」と称して、情報技術のトレンドを知るための勉強会を開催することになりました。
そしてその第1回はコンテナ技術というテーマで、AWSさんに講演をお願いしました。
このコンテナ技術は、開発やプロビジョニングのスケーラビリティを高めることができ、さらにはマイクロサービスアーキテクチャやクラウドコンピューティングに求められるアジリティへの要求が高まっていることなどから、今後ますます重要となると目されています。


現在インターネットやその向こうにあるWebアプリケーションは日々変化を遂げ、便利に、しかし複雑になっています。
開発者は日々沢山のプログラム生み出し、改良し、それらがきちんと動くかというテストを行います。
となると、これらの環境を動かすサーバを用意し、そのテスト環境を動かすための別のアプリケーションやライブラリもインストールして設定しなくてはなりません。ネットワークの設定の変更なども必要です。
運用技術者はそのようにして増え続けるサーバを日々管理しなくてはなりません。

機能が追加され大きく複雑になっていくアプリケーションの問題を解決する一つの方向に、共通して使える部分や特別な機能部分を切り分けて小さなサービスとして構築する、「マイクロサービス」という考え方があります。
アプリケーションをサービスごとに切り分けることで、開発者は必要な部分に集中できるようになり、開発が楽になります。
さらに沢山の便利な機能がオープンソースとして公開されていますので、こうしたものを使用できれば開発すべき部分が絞られます。
これまでもプログラムは、ライブラリなど小分けにされた部品を利用して作成されてきましたが、今度はサービスの一部分が部品になっていくのです。

しかしそれでも、開発者間で同じ環境を用意して開発を進め、変更のたびに開発時点の環境を準備し、本番環境移行時に全ての設定を万端にするというのは大変な作業です。
この「環境の可搬性」の問題を解決するのが、コンテナ技術です。

コンテナ技術とは、あるコンピュータの上に、港に積み上げられたコンテナのように区切られた容器を作り、その中に必要なものだけを詰め込んで目的のアプリケーションを動かすという技術です。
(コンピュータの上で別のコンピュータハードウェアをエミュレートする仮想化技術とは違います)

このコンテナ技術で、現在最も利用されているのが「Docker」というプラットフォームです。
DockerはWindows上でもMac上でもLinux上でも動作するため、OS環境を含めてサービスに必要なものを詰め込んだコンテナを用意しておけば、どのパソコンやクラウドサービスに持っていっても、同じように動く環境を簡単に作れるのです。
開発者は必要なコンテナを自分の開発環境に持ってくれば、新規開発や追加機能のテストを簡単にできますし、作ったコンテナを本番環境に持って行って古いものと取り替えれば、サービスに新機能を加えた時の間違いを減らせます(可搬性が向上します)。

しかし今度は、プログラム開発のために沢山の小さなサービスが立ち上がったり、テスト環境や本番環境で動かすサーバが増える、ということになるため、それらのサービスやサーバの管理が大変になります。
サーバについては、クラウド(雲)の向こうに沢山のプロバイダーさんがIaaS(Infrastructure as a Service)と呼ばれるサービスを時間貸で提供してくれているので調達自体は楽ですが、マイクロサービス化され増えていくサーバの実行環境を構築し、維持するのはますます大変になります。

そのため、必要なときに実行環境が自動的に増えたり、実行環境に問題が生じたら自動的に修復されないかということを、いろいろな人が考えるようになりました。
その一つに、Googleが15年間の開発/運用経験を元に作り、2014年にオープンソースで公開した「Kubernetes」というコンテナオーケストレーションシステムがあります。

コンテナオーケストレーションシステムとは、オーケストラが交響曲を奏でて豊かなハーモニーを生み出すように、クラウドサーバ上に大量に並べられたコンテナによってアプリケーション実行環境を構築し、監視し、問題があれば修復を行う技術です。

「可搬性」「拡張性」「自動修復性」などを目指したツール類で構成されたこのKubernetesは、独自に構築したサーバ群の環境でも使用可能ですが、開発元であるGoogle Cloud Platform(GKE)はもちろん、Amazon Web Service(EKS)Microsoft Azure(AKS)IBM(IKS)といった他のIaaSでもサービスとして提供されているため、現在もっとも使用されているプラットフォームとなっています。


ここまでの概要と、これらに基づく実際の課題、およびAWSのEKSでの解決方法、AWSの関連技術、AWSを使わない場合の方法など、ひろくディスカッションを行なったのが第1回目の内容でした。

しかしKubernetes上で実際のシステム運用を行うには、まだまだ不明な点や課題が多くあります。
「クーベルネティス」「クーバーネーティス」など人によって発音が違っており、どの読みが正しいかよくわからないため「k8s」と略して表記されることも多いこのオーケストレータは、Linux Foundation傘下に新たに作られた組織Cloud Native Computing Foundation(CNCF)に、Googleによって2015年に寄贈されました。
そしてCNCFでは「Cloud Native」の考え方の元、Kubernetesの他にも様々な課題の解決にむけた取り組みが行われています。
例えば、Kubernetes上のコンテナの監視をする「Prometheus」。Kubernetes上のコンテナのログなどを収集管理する「Fluentd」。MySQLをKubernetes上で展開する「Vitess」。サービスメッシュを実現するための「Istio」などです。
世界では進歩の先のさらなる革新のために日々クラウドの向こうで取り組んでいる人たちがいるわけです。

NIIではこのHacky Hourを通して幅広い技術をキャッチアップし、知識を含め、開発運用を行う事業に役立てたいと考えています。

(河野 明日路)