ユアマイスターさんでサービスを分けることについて話してきた。
まえがき
みなさん初めまして。WealthParkという、不動産領域のDX、そしてDigital Alternative Assetのプラットフォームを作ることに挑戦しているスタートアップでVPoEをしている、藤井(@taka_ft)と申します。
最近は自分のサイトで記事を発信することも多かったのですが、今後日本語の記事に関しては、暫くNoteを使ってみることにしました。それもあり、あまり最初の記事っぽくないコンテンツですが、何卒よろしくお願い致します。
Noteの方でも、今後自己紹介や会社の紹介など、追ってさせて頂ければと思います。
はじめに
今月、縁あって、クリーニングや修理の職人とユーザーをつなぐECプラットフォーム、ユアマイスターなどを運営されているユアマイスター株式会社(以下ユアマイスターさんとさせて頂きます。)にて、講義をさせて頂きました。
顔w
ユアマイスターさんでは、"学びの窓"というオンライン勉強会を月に一回開催されています。今回はその第6回の講師として、マイクロサービスというテーマで話をしました。
内容を全て公開するわけではないですが、いくつか汎用的な部分もあるかなと思い、Noteにしました。
学びの窓については、こちらのNoteに詳しく書かれています。
マイクロサービスやサービス分割という文脈では、下記のような発表を過去にしています。
今、マイクロサービスというテーマで話をすること
まず、今回マイクロサービスというテーマで依頼を受けて、どんな話をしようかと考えました。
それこそ2016年のマイクロサービス本が出た頃であれば、マイクロサービスについての各論を話すのも良いかもしれません。しかし、もはやマイクロサービス自体はそこまで新しい話ではありませんし、今では多くの本や発表、記事などで学ぶことができます。(新しいマイクロサービス本、出ましたね。評判良さそう。読もう。)
マイクロサービス本
新マイクロサービス本
今回話をする中で、話を聞く人の中には、ある程度知っている人もいるでしょうし、今既に色々な良質な情報がある中で僕がそれを焼き直す必要はあまりないなと考えました。
また、進化的アーキテクチャの文脈にもありますが、アーキテクチャは漸進的で誘導的な変更です。
ユアマイスターさんにおける漸進的で誘導的な変更の過程に、僕は常に顔を出すわけではないです。
これからのアーキテクチャ変更の過程について考えるきっかけを与えることができる会にできたらいいなと考え、"マイクロサービス"ではなく、"サービスを分けること"と"ワークショップ"を軸にすることにしました。
マイクロサービスという言葉をあまり使わない内容にしました。
進化的アーキテクチャ
どのようなことを話したか
大きく分けて、3つです。
- 1.サービスを分けることとは
- 2.私の経験に基づく漸進的なアーキテクチャ変更のケーススタディ
- 3.ユアマイスターさんでサービスを分けることを考えた場合
2,3については公開できないことも多いのですが、恐らく、話の流れとしては流用できるはずです。
発表を通じて達成したいゴールは
“マイクロサービスを理解する”のではなく、自分が”なぜサービスを分けたいかを理解する”こと。あるいは、”サービスを分けることに対する理解が深まる”こと。
としました。
サービスを分けることとは
ここでは、皆でサービスを分けることとはどういうことだと(今)考えているか、というワークから始めました。まず、大前提として、ここに間違いはありません。皆がどういうことを考えているか、"何を大事にしているか"を知る為のワークです。
サービスを分ける目的は様々ありますが、多くの場合、それぞれの思惑、特に大事にすることは微妙にずれていることが多いです。ある人は組織や生産性のことを考え、ある人は特定の技術的な負債を解消することを考えていたりします。どっちも考えるでしょ、といえばそれはその通りなのですが、ありがちなのは、ベストな選択まで一気に持っていくことが出来ない場合、あるいは漸進的なアーキテクチャ変更を計画する場合、大事にしていることによって、その意見が食い違ったりすることがあります。
組織の規模のもよるとは思いますが、それぞれの考えていることの違いを知ることは意見の多様性を理解する上で役に立ちます。
実際にそれぞれの意見を聞いてみると、様々な違う考えがありました。まだ分けなくてもいいという意見もあり、実際にタイミング的にまだ早いと考えている人がいることを知ることができたのも良かったことだと思います。
僕の経験に基づく漸進的なアーキテクチャ変更のケーススタディ
ここに関しては、自分の経験を元に、アーキテクチャ変更のケーススタディを共有しました。
意識したことは、漸進的な変化を伝えること、そしてほぼ間違いなく、全てのアーキテクチャ変更には強い所と弱い所、良い所と悪い所、得意なことと苦手なことがあるという点です。
また、漸進的であることに焦点を当ててきましたが、最後にあるべき姿も考える、という話を話しました。
改善していくことは大事なことですが、そもそも何をしたいのか、どういうアーキテクチャでなければいけないのかという旗印を立てることも大切です。
これは1日2日で分かることではなく、会社が成し遂げたいビジョンやミッションを真に理解していく必要があります。これがあることで、漸進的なアーキテクチャ変更に軸を持たせることができます。
抜粋として、ここら辺に触れました。
- モノリスの分割について
- API化について
- マイクロサービス化について
- エラーやログについて
- テストについて
- Distribution Tracingについて
- オーケストレーション / BFFについて
- ビジョンとミッション / コアドメインについて
- 採用や組織との関連性について
ユアマイスターさんでサービスを分けることを考えた場合
ここに関しては、より話せない内容ですが笑、最初のサービスを分けることについて考えること、ケーススタディを経て、実際参加者の方に、ユアマイスターさんでのアーキテクチャ変更を考えていくならば、どのような道があるかをワークとして考えて頂きました。
加えて、僕だったらこう考えてみるかも、ということもお話させて頂きました。
まとめ
という3章立てで話をしてみました。
(ざっくり話しましたが、上のスライドが103ページ目なので、本当はかなり色々な内容が詰まっていますが笑)
- サービスを分けることについてチーム内で改めて議論すること
- 自社のサービスでどのようにサービスを分けていく道があるか議論すること
は、組織やサービスが拡大し、今後のサービスのあるべき姿を考えるスタートアップや小中規模のチームには有用だと思います。みんななんとなく同じことを考えているはず、となんとなく思っているような状態で、微妙な意識の食い違いを実際の作業時に解決することは容易ではありません。場合によっては気づけないことすらあります。
サービスを分けることをチーム内で議論することで、みんなの気持ちと、あるべき姿について一度話しあってみてはいかがでしょうか。
フィードバック
様々な嬉しいフィードバックを頂きました(許可を頂いて載せさせて頂いています)。いいフィードバックが沢山だったので、結構載せてしまってます笑
アーキテクチャについて考えることについて
・アーキテクチャーを考える時に現状の問題にばかり目を向けていたけど、未来どういうプロダクトを作り上げていきたいかを踏まえてアーキテクチャーを作っていくことの大事さをしれました。
・アーキテクチャーを設計する時に現状の課題にばかり目を向けていましたが、ビジョンやミッションなど未来も目を向けて設計する大切さに気づくことができました。
マイクロサービスについて
・マイクロサービスについて、今までなかなかイメージができていませんでしたが、理解に近づけたと思います。
・マイクロサービス など、専門用語を使わない説明だったのでマイクロサービスで何をしたいのか、どんなことが具体的に起きるのか、想像しやすかった。
ワークショップや発表する形式について
・こまめに休憩を入れたり、みんなに発表させたりして、それだけでもイベントに参加している感が出て良いなあと思いました。
・ワークショップでメンバーがどう思っているかを知れたので、社内でこのように話す機会を設けていきたいと思います!
その他
・将来成りたいプロダクトから逆算して設計を決めると、必然的に採用やチーム分けにも干渉する。プロダクト部のissueとしてしっかり捉えて議論を積み重ねていきたいと思った。
・最近クリーンアーキテクチャ輪読会を重ねていて、アーキテクチャのことにチーム全体が興味関心をもっていたので大変タイムリーな話だった。今聞けて本当に良かった。ありがとうございました。
というか、こんなにきちんとしたフィードバックを頂ける時点で、ユアマイスターさんのエンジニアチームはとても素敵な組織だと感じました。普段から良いコミュニケーションや議論が出来てるってことなんだろうなぁ。
最後に
もしも、講師やワークショップをご希望の方がいらっしゃいましたら、taka_ftまで気軽にご相談下さい。違うテーマでも歓迎です!