orangeitems’s diary

クラウドではたらくエンジニアの日々の感想です。

Kubernetesから派生して、コンテナ対サーバーレスの論争を知る

f:id:orangeitems:20181023230745j:plain

 

Kubernetesをもっとわかりたい中

このところずーっとKubernetesをやっていました。本を読まずに、Google検索と経験と気合でなんとか乗り切りましたが、やはりちゃんと勉強したくなりましたので明日は参考書を仕入れに本屋に行くつもりです。

参考書は結構値段も高いので失敗はできません。ですからAmazonでは買えず、手に取って探したいと思います。ここ最近は、検索して記事を斜め読みしていればだいたいのことが分かったものですが、さすがにKubernetesは手ごわいです。なんとなく経験で構築できた部分があって、でもなぜそうなるのかについてはあまり腑に落ちていないところも多いです。この状況で本を読めば、理解度も何も知らない状態で読むより効率がかなりよいので期待しています。

Kubernetesが知りたいのかというと、それもあるのですがまずはDockerそのものから勉強しなおさないといけないと思っています。また、Gitのことも良く出てくるので、Gitの初心者本も買うつもりです。マンガになっているようなのでそれでもいいかなと。

コンテナの世界は、サーバー、OS、ファイアウォールやロードバランサー、VMwareなど、いわゆるインフラの世界で蓄積した技術だけではつながらない部分があります。おそらく、開発者の気持ちに立って作られているミドルウェアなので、深層意識として避けてきた部分、例えばソース管理やバージョン管理、リリース管理、リポジトリやローカルとサーバーの違いなど、課題を突き付けられているように思います。

もう少しすればもっと理解しやすい形でKubernetesやDockerが進化していくのでしょう。そうなる前に仕組みを理解して、スペシャリストぶれるのも今から勉強するメリットではないかと思います。

明らかに、どの現場でもコンテナやKubernetesの仕事が増えてくるのでしょう。自分の殻を広げて新しいエンジニア像を生み出さねばならないと思っています。

 

 

新しい世界に触れて知った、コンテナ対サーバーレスの論争

コンテナは大抵のパブリッククラウドでネイティブに使えるようになっていて、もうこれだけ追いかけて行けばいいのかと思いきや、サーバーレスという対極があるのも知っていました。クラウド上に関数を登録しておけばクライアントからAPIを叩かれると呼び出されるというものです。仮想サーバーやコンテナすら必要なく、ただ開発者が関数を登録するだけ。インフラがどう動いているかを開発者が気にする必要もなく、開発の生産性が上がりそうな構成です。

今後はコンテナだ!という人もいれば、いやサーバーレスでしょ、という論争が起こるのではないかと思ったら、これは結構有名な議題のようです。

 

www.slideshare.net

 

techtarget.itmedia.co.jp

 

www.publickey1.jp

 

techtarget.itmedia.co.jp

 

blog.takuros.net

 

iga-ninja.hatenablog.com

 

2017年になったあたりから、コンテナにするかサーバーレスにするか、については議論が始まって2018年になっても全然収束していません。

それぞれ、いいところと悪いところがあります。まだコンテナすら勉強中の私が断定的に判断するのはとても無理なのですが、一つ言えることがあります。本番サービス前提にすると、確実に行くならモノリシック、つまり仮想サーバーや物理サーバーで構築する「普通のインフラ」をまだ選ばざるを得ないということです。

いいところと悪いところがあると書きましたが、悪いところがあるので選ばれないということです。一方で、開発環境や実験的なプロジェクトだとコンテナやサーバーレスが選ばれていくでしょう。そうやって揉んで行って、例えばLAMP構成(Linux + Apache + MySQL + PHP)のような鉄板構成が生まれたら普及していくのでしょう。

一方で、それでも「コンテナ」「サーバーレス」を選ぶとしても、かなり構築は今のところ大変です。技術者が少ないこともあって単価も高いですし、かつ事例が少ないのでスクラッチから設計しないといけません。本番で動かすということは責任が伴いますので、想定外を全部潰さなければいけませんがこの面積が広いのです。これはできないということではなく、できるまでにいろいろ想定外な目にあって作り直しやらなにやらで、大変だよということを意味します。

結局、VPC作ってEC2を2つ立てて、yumを何個か打てば動くシステムが出来上がる、という旧来の構成がまだまだ強いと言わざるを得ません。これは長い歴史の上に作られてきたメソッドなので当然です。他のクラウドでも同様でしょう。

これが2019年、2020年になって、Kubernetesもバージョンが上がりどのパブリッククラウドでも感覚的に扱えるようになったり、サーバーレスも規格が整いどのパブリッククラウドでも汎用的に使えるようになったりすれば話は変わってくるのかもしれません。また、Kubernetesでソフトウェアベンダーのコンテナをデプロイすれば、サーバーレスのように使える、などアプライアンス的な動きも盛んになるのかもしれません。コンテナ対サーバーレス、という対立軸ではなくベストプラクティスの中でいいとこ取りをしていくのが今のところのトレンドの考え方のようです。

 

まずは基礎を

仕事で登場しなかったので、何となく避けてたコンテナをついに勉強しはじめたことから、サーバーレスまで意識するようになり、その延長上でじゃあインフラ構築という仕事は今後どうなっていくのだろう・・、という問題意識が高まりました。

特にコンテナ技術はインフラそのものであるので、このまま基礎から積み上げていけば何か新しい結論が生み出せそうです。まさか40代になってまた一山あるとは思いもしませんでしたがこれぞIT業界という感じです。

明日買うだろう本について、内容が良ければお勧めしようと思います。

そもそも本屋に行って本を探すという行為自体が数年ぶりなので楽しみでもあります。