Rails Developers Meetup 2018 世はまさに大マイクロサービス時代
Rails Developers Meetup 2018
これ、イベントページ立った瞬間申し込んだのですが、気づけば大量のキャンセル待ち行列。正直「土日潰れるのはなあ、、、」と思ったけど申し込んでよかった。凄く濃い2日間でした。
マイクロサービスとシステム分割の話
セッションの1/3くらいは何かしらマイクロサービスがらみの話をしていたように思います。個人的にマイクロサービスに興味があり、今回はマイクロサービスの話を中心に聞いていました。
高橋さんがこんなTweeetをされていたのが印象的でした
今日の #railsdm では「マイクロサービス」というタームをさんざん聞いたけど、想像している機能や粒度が発表者ごとに違ってそうで、同じ単語を使ってても話が合わないところがあったような
— masayoshi takahashi (@takahashim) 2018年3月24日
「マイクロサービス」って単語は以下2つの文脈で語られているような気がします。
- 書籍マイクロサービスアーキテクチャに書いてあるNetflixの事例みたいなやつを作るぞ!という方向性
- モノリシックアプリを分割するぞ!という方向性
小さなサービスうじゃうじゃ
私は「マイクロサービス」と聞くと、前者のNetflix的な、本当にマイクロなサービスがうじゃうじゃいるのを最初に想像します。なんかこの記事のタイトルによるとNetflixには数千(!!)のマイクロサービスで成り立ってるらしいのですが、、、(全く別種のサービスが数千種類いるわけじゃなくて、インスタンス数的なことですよね?記事最後まで読みたい。。。)
私が聞いたセッションだと、Cookpadさんはこちら寄りなのですかね
Observability, Service Mesh and Microservices // Speaker Deck
なんというか、「サービスが小さいことのメリットを享受したいから積極的に小さくしていく」という姿勢なのかな、という気がしました。
モノリシックアプリの分割
一方後者は、「システム分割にマイクロサービスアーキテクチャを取り入れるぞ」という話。
私が聞いたセッションだと、TresureDataさんがこちら寄りなのかな、
安全かつ高速に進めるマイクロサービス化 / railsdm2018 // Speaker Deck
私の勝手な印象なので語弊があると申し訳ないのですが「くっついてるせいで困ったことが起きているから分けようぜ」という姿勢に感じました。
小さいことはいいことなのか?
個人的には、これから新規サービス作るならぜひAWSでk8sでマイクロサービスで〜というのをやってみたいとは思いますが、余程大きなwebサービスでもなければ、名前を覚えられないほどの個数のサービス数になるのはなんか違うかなーという気がしないでもないです。
最高の解決策:
みんなで一つのチームになり
全員が全てをメンテできるようになり
そもそもマイクロサービス化を不要にする
@k0kubunさんのスライドの引用です。
全員が全てをメンテできる状態なら、分断されたたくさんサービスよりも、モノリシックアプリの方が開発も運用も簡単だと思うので、小さくしたいの、って、大きすぎると人の脳みそのスペックがついていかないから、ってことなのかなと。
きっと、モノリシックアプリの分割においては、「こいつは明らかに切り取れるな」っていうもの以外は、「サービス境界を見極めて細かく分けていく」というよりは「人間の脳みそがついていく範囲でざっくり切り取るか」みたいな感じの手段を取るのがいいのかな、、、と思いました。
できるなら綺麗に分けるのがいいのかもしれませんが、いまくっついちゃってて、明らかに切り取れる空気がないものに対して境界線引くの、エンジニアリングというより政治力の問題に発展しそうですし。
マイクロサービスと組織論
出典がわからないのですが
「日本におけるマイクロサービスは組織に合わせたサービス分割の話になりがち、欧米はNetflixのような機能別サービスになってて面白いなあ」
という話を、どこかで聞いたか読んだかした覚えがあります。
今日になって感じたのは、それって、欧米がとか日本がということではなくて、紹介される事例は「模範解答」だから「クラウドで、k8sで、DDDで、、、」だけど、普通にモノリシックアプリを分割しようと思うと大概
「このチームが詳しいところを切り出すぞ、っていうところに落ち着く」とか、
「いまくっついてるものを切るのに政治的境界が収まりがいい」
というだけのことなんじゃないかという気がしてきました。
結論
「マイクロサービスアーキテクチャ的マイクロサービス」と「マイクロサービスアーキテクチャを参考にしたシステム分割」は持ってる楽器はちょっと似てるけど、音楽性はちょっと違う、って感じがしました。
どっちもトランペットだけどブラスバンドとスカバンド違うよね、どっちもストラトだけどイングヴェイ・マルムスティーンとエリック・クラプトン、違うよね、みたいな?
あと、モノリシックアプリか、マイクロサービスかの選択も、どっちがいい、ってもんではなくて、どっちのデメリットを愛せるか?という音楽性の違いなだけな気がしました。
音楽性は大事です。
Rails Dcevelopers Meetup 2018 凄く良かったです
他のセッションも凄く良かったのにマイクロサービスについて書いてただけで結構な文字数になってしまいました。他のセッションについては追ってまた。。。