こんにちは。Cacooチームの木村(@cohhei)です。前回、Cacooのmicroservices化について書いた記事が幸運にもたくさんの方に読んでいただきことができました。さらに幸運なことに、複数のミートアップでの登壇依頼をいただきました。
Kubernetes Meetup Tokyo#14とAlternative Architecture DOJO#1というすばらしいミートアップで発表する機会をいただき、関係者のみなさまには大変感謝しております。他の方々のおもしろくてレベルの高い発表に圧倒されつつも、非常に参考になるフィードバックや質問もいただきました。
Cacoo における事例! #k8sjp pic.twitter.com/NWEBCJWkXP
— Kazuki Suda / すぱぶら (@superbrothers) November 8, 2018
トップバッターは株式会社ヌーラボの木村(@cohhei )さん!「CacooはなぜKubernetesによるmicroservicesへの道を選んだのか?」 #aadojo pic.twitter.com/TqpPKo89Pm
— オルターブース (@alterbooth_inc) November 28, 2018
発表資料
※どちらもほぼ同じです。
いただいたフィードバックとご質問
「namespace は分けないのか?」
現在 Cacoo では環境ごとに Kubernetes の namespaces で切って分けているのですが、ひとつの namespace にすべてのアプリケーションが乗っている状態です。
そうすると全体で secrets を共有することになるのですが、それは問題ないのか?という質問をいただきました。
この質問に関しては「現状必要ないため namespace を分けることはやっていない」という回答になります。
チームの規模が大きくなれば namespaces で Kubernetes のリソースを完全に分離して、 secrets も含めた別のチームのリソースに一切触れられないようにする必要性が出てくるかもしれません。しかし、現状の Cacoo の開発チームと SRE チームの規模を鑑みると、分割するメリットよりひとつにまとめているメリットの方が大きいため分割していません。
「GraphQL service と envoy の関連は?」
時間がなくて軽く説明するに留まっていたため質問をいただきました。
Cacoo のダッシュボードのバックエンドでは、 BFF (Backends For Frontends) として Cacoo 開発チームが GraphQL service と呼んでいるサービスを置いています。こいつがクライアントからのリクエストをとりまとめて gRPC service と呼んでいる別のサービスに gRPC でリクエストを送ります。 envoy はこの HTTP/2 および gRPC 通信をサポートしており、 GraphQL service は exvoy をプロキシとして使っています。
実際、 envoy の公式ページでも HTTP/2 と gRPC へのサポートが強調されています。
HTTP/2 AND GRPC SUPPORT
Envoy has first class support for HTTP/2 and gRPC for both incoming and outgoing connections. It is a transparent HTTP/1.1 to HTTP/2 proxy.
「Goのエンジニアはどう採用しているか?」
Cacooのバックエンドのほとんどは Go で書かれているという話をしたので、「Go エンジニアの採用、どうです?」という質問をいただきました。個人的な意見として「Go の業務経験がある人を採用しようとするのは諦めよう」という回答をしました。
Cacooの開発チームは国内では福岡だけなので「福岡在住/福岡移住希望」かつ「Go の業務経験あり」かつ「転職活動中」のエンジニアとなると相当数が限られてきます。その中から弊社にエントリーしてくださる方はほとんど皆無と言っていいと思います。
幸いにも、 Go は言語仕様がシンプルで学習コストの低い言語です。「Go の業務経験はないが他言語で実績がある」かつ「本人が Go を使って仕事をしたいと思っている」エンジニアにも採用の幅を広げていく必要があるといえるでしょう。
所感
今回は僕がCacooのmicroservices化をブログという形でまとめたので僕個人に登壇依頼が来ましたが、この成果はCacooチームのエンジニアたちが長年改善を積み重ねてきた結果です。
Cacooチームは伝統的にこういった新しい技術を積極的に取り入れて改善し続ける文化があります。
そんなエキサイティングなチームのひとりとして働けることはとても幸運だと思っています。今後は僕自身が中心になって開発をガシガシ進めることでCacooのユーザー体験をより良いものにしたいと思っています。