MicroAd Developers Blog

マイクロアドのエンジニアブログです。インフラ、開発、分析について発信していきます。

Cloud Native Kansai #02 にて分散システムデザインパターン などCloud Native開発に必要な事について発表しました

f:id:yassan0627:20190404104255p:plain

マイクロアドの京都研究所からリモートでインフラチームで働いている永富です。

今回は、3/15に開催された Cloud Native Kansai #02 で、Webアプリ開発者向けに Cloud Native 開発に必要なとっかかりについて話してきました。

Cloud Native Kansai について

f:id:yassan0627:20190404110714p:plain

Cloud Native Kansai は、 個人的にオーガナイザーとして参加している Cloud Native JP と言う Kubernetesに代表される Cloud Native 技術に関する地域コミュニティの関西版です。

私は、主に全体の運営と、関西地域の主催を行っています。
東京だけでなく、関西でも Cloud Native 技術について盛り上げていこうと日々活動しています。

Cloud Native JPでは、GWに全国各地でイベントをする事になっています。 北は札幌から南は沖縄まで、様々なところで開催します。
f:id:yassan0627:20190404111531p:plain
詳しくは、 connpassのグループページ にて公開されるので、GW中に地元にお帰りの際は、是非参加いただければと思います。

登壇について

当日の発表スライドはこちら。

www.slideshare.net

また、当日のイベントの他の発表スライドや Twitter の様子などは以下にまとめています。 Cloud Native Kansai #02 - 資料一覧

今回はあえて、Kubernetes に関する話はほぼしませんでした。
当日の他の方の発表や前回の Cloud Native Kansai #01 でも取り上げており、また、詳細は書籍に素晴らしい説明があるので、それらにお任せしました。

そこで、発表は ゆるふわに docker-compose を使い、Kubernetes や Cloud Native 開発と言われてもピンとこないWebアプリ開発者向けに、以下の構成で発表しました。

  1. Twelve-Factor Appのおさらい
  2. Cloud Native技術がもたらすもの
  3. Cloud Nativeな設計について
  4. どうやって始めていくか

まずは、Cloud Native のベースになっている(はず)の Twelve-Factor App のおさらいから始め、Cloud Native って何?使うと何が嬉しいのか?そして、本当に必要なのか?というそもそも論について話しました。

f:id:yassan0627:20190404105141p:plain

Kubernetes に代表される CNCF にホストされる Cloud Native のプロジェクトが日々、Webを賑わしている昨今において、まずは、Cloud Native やその効果について理解し、「本当に必要である」と判断した上で進めて欲しかったと言う思いがありました。

そして、実際に Cloud Native に開発を行うには適した設計があり、コンテナベースの開発向けのデザインパターンとして、Brendan Burnsさん、David Oppenheimerさんなどによる論文 Design Patterns for Container-based Distributed Systems が元になっている Brendan Burnsさんの書籍 Designing Distributed Systems に挙がっている以下の全パターンについて紹介しました。

f:id:yassan0627:20190404105236p:plain

また、Brendan BurnsさんのGitHubリポジトリ brendandburns/designing-distributed-systems-labs に、各パターンの一部をAzureでお試し出来る手引きまであります。

さらに、こちらの書籍は、4/19に日本語訳が 分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計 として発売されるようです。楽しみですね。

f:id:yassan0627:20190404105205p:plain

今回、この本を話の中心に持ってきたのは、デザインパターンを理解する事は、自分たちのアプリの設計に役に立つだけでなく、開発で利用する種々のツールがどういう設計に基づいているのか理解する上でも助けになると考えた為です。

その後の話は、どんな道筋で Cloud Native に進めて行けば良いのかについて、CNCFが挙げている Cloud Native Trail Map や、Kubernetes で開発する上で重要な開発スタイルとして GitOps について、軽くご紹介しました。

最後は、Rancher Labsの有償サポートについてご紹介しました。
Rancher Labs Support and Maintenance – Terms of Service
f:id:yassan0627:20190404105302p:plain

Rancherとは、Kubernetesをベースとしたコンテナ管理のプラットフォームを提供するOSSです。こちらは有償サポートになるのですが、こちらのすごいのは、Rancherに関する技術サポートだけでなく、上図の通り、Kubernetesを構成する様々なものが対象になっています。

お値段はそれなりにするものの、これらをサポートできる人材を確保するのが世界規模で難しい昨今において、詳しい人を雇ったと考えれば、十分に価値のあるものだと考えます。

気になる方は、Cloud Native JPの発起人でもあり、Rancher Labsの中の人 @shindoy さんまでお問い合わせいただければと思います。

そして、スライドの最後には、今回、スライドを作成する中で参考にしたものや、今回省略した Kubernetes や Docker に関するもの挙げているので、参考になるかと思います。

発表してみて

発表時間に対してボリュームが大きくなってしまったので、駆け足な説明になってしまいました。
その為、内容が薄くなってしまった感があるものの、後からスライドから補えるように考慮してみました。

大きな会場で発表したのは初めてでとても緊張しましたが、とても良い経験になりました。マイクロアドでは、Kubernetesが必要な箇所については移行していこうとしているところなので、これからもこちらのブログだけでなく、様々な技術イベントで発表して行きたいと思います。

最後に

マイクロアドでは、青い舵といったCloud Native技術だけでなく、黄色い象なHadoopエコシステムに興味のあるインフラエンジニアを募集しています。 一緒に働いてみたいと思う方は、 マイクロアド採用情報 ページより応募ください!