@making@github さんが主催している04/18のCloudFoundryのワークショップに参加したので、そのレポートをば。参加したのは以下のイベントでした。
もともと2015年のJavaOneに参加した際に、IBM Bluemixのワークショップに参加し、その時に初めてCloudFoundryに触れました。色々なコマンドが実装されていることから当時「すげぇ」とは思ったのですが、より詳細に聞けそうだったので参加することに。
感想
早急に勉強しなきゃこれ。そのうち出てくる運用面の大きな課題の解決策になりそう。
というのが参加した自分が実感したことです。
これからクラウドを使った大きなシステム構築が当たり前になってくる中で、如何に運用を効率的に行えるかは、開発者にとっては重要かな、と。そのためのサポートを受けられるCloudFoundry的なモノは、需要が増してくると思っています。
加えてDevOpsなんてよく言われてますけど、Blue/Greenデプロイ一つとっても如何に自分たちだけでやるのが大変か、手を動かしたことがある人なら実感していると思います。そこにもしインスタンスが複数あって、、、なんていろんな条件が加わったら、、、ぞっとしますね。
スライドとか、資料とか
今回これに沿って進めました。これやるだけでも、十分CloudFoundryのすごさはわかる。
会の中で使われた資料は以下になります。
Introduction to Cloud Foundry #JJUG
会の後にCloudFoundryについて勉強したくて参考にしたSlideShare
Cloud Foundryで学ぶ、PaaSのしくみ講座
※QiitaってSlideShareがそのまま埋め込めないのが不便。。。
内容
基本的なことは、他にも参加された方がブログなどに書いていますので、まとめ的なモノはそちらを見てもらうのがいいかと思っています。
※「#cfws」でTwitterを検索だ!
自分的に気になった、「おっ」と思ったことで。
運用面でのメリットがかなり大きい
DevOpsが自分自身そこまで得意ではないから、というのもありますが、いちいち面倒なこと考えなくても、運用面でかなりのサポートをもらえるのが大きいと思っています。たとえば以下のようなこと。
Blue Green デプロイがコマンド操作のみで可能
Blue Greenに限らず、運用を考えた時に「めんどくさいな」と思うものをいくつも、CloudFoundryではコマンド一発、あるいは数発で実施できるようになっています。cf様様ですほんと。Blue Green デプロイで言えば
$ cf map-route <App> <Domain> -n <Hostname>
$ cf unmap-route <App> <Domain> -n <Hostname>
を数発打てば、Blue Greenデプロイが実施できてしまいます。
4レベルのHAを搭載
Application / Process / VM / AZをそれぞれ監視していて、ダウン時の復旧をしてくれるようです。このレベルのPaaSを自分で作ろうとしたら泣けてくるくらい大変ですね。それを最初からサポートしているのは大きな特徴かと思います。
Scaleoverプラグインを用いた、複数インスタンスのBlueGreenデプロイが可能
結構衝撃を受けました。Scaleoverプラグインを使うことで、インスタンスが複数あるサービスに対して、Blue系から少しずつインスタンスをGreen系に移しながらデプロイをするコマンドが存在するんです。
$ cf scaleover try-scale-over-v1 try-scale-over-v2 10s
単純に考えたら、Blue系が10のインスタンスを持っていたらGreen系も10のインスタンスを用意して、「エイヤ」で変更をかけそうですが、そうすると一時的にも20インスタンスが必要になり、クラウドの契約など諸々絡んでくると面倒なことになります。ただこのScaleoverプラグインを使って実際にBlueGreenデプロイをmakingさんが実施したところ、全体で11のインスタンスを確保するだけでデプロイがされてしまいました。ダウンタイムも見た感じでは0(1秒以上のダウンタイムは確認できなかった)。これは便利すぎる。
Dockerにも対応
Diegoバージョンにて、Dockerにも対応したようです。その際
Buildpack ⇔ Dockerfile
Droplet ⇔ Docker image
になるようです。
まとめ
CloudFoundryは今から学んでおく必要がありますね。いずれかならず必要になる技術かと思いました。
※先輩からOpenShiftとの比較をしてほしい、と言われているのですが、どうしようかな。。。