クライアントサイドとマイクロサービスの難しい関係 — Microservices Meetup Vol.9 (FiNC App & Frontend) 登壇内容レポート #microserv

こんにちは、qsona (twitter) です。先日 2018/10/30 に、Microservices Meetup vol.9 を開催しました。当日は130名の方にご参加いただき、大盛況でした。

テーマは FiNC App & Frontend で、FiNC Technologies社からFiNCアプリやWebフロントエンドのエンジニアが5名が登壇し、マイクロサービスとの関係についてお話しました。本記事ではイベントの内容をレポートします。

資料などのリンクまとめ

登壇テーマ

FiNC Technologiesのエンジニアから、以下の5つのトークを行いました。

飛び入りLT

レポート記事

特にお願いしたわけでもないのに6つものレポート記事を書いて頂けたのは、主催者として嬉しすぎることです・・・。ありがとうございました。

イベントの様子と内容

今回のイベントは、それぞれの内容が相互に補完し合う形で構成されています。約2時間分の内容なので少し長いですが、よろしければぜひ最後までご覧いただければ有り難いです

ウェルカムトーク「マイクロサービスとクライアント: 理想と現実の狭間で」

これから話される各テーマの前提になります。クライアントサイドはマイクロサービスを結合するレイヤーです。それにより起きうる問題と解決の方向性について話しました。

「クライアントサイドから考えるマイクロサービス」 by @neonankiti

クライアントエンジニアとしてマイクロサービスと向き合ってきた話をしていました。資料の中にもある Client Fusion など、FiNCアプリチームでは改善の取り組みを長く続けています。後半では、マイクロアプリという考え方を紹介し、将来的なFiNCアプリの方向性を提示しました。

登壇者の南里さんはFiNCの最初期から4年以上Android開発を支えてきたエンジニアで、それだけにマイクロサービスの運用的な課題も肌で感じてきていたと思います。

「マイクロサービスとクライアントとコンテキスト境界」 by @takasek

マイクロサービスの集約をどのレイヤーで行うのか。それぞれのパターンのメリットやデメリットを、Domain-Driven Design (DDD) の文脈を使いながら考察しており、非常に良い問題提起だったと思います。DDDの用語がどんどん出てきて、最近DDDを勉強しておいてよかったなどの声もありましたが、実際にマイクロサービスの世界では非常に有用な概念だと思います。

関さんもフリーランスとして3年近くFiNCアプリに関わり続けていて、特に設計面では多大な貢献をされています。著書「iOSアプリ設計パターン入門」が近々リリースされるそうなので、お楽しみに!

「実践、BFF ~ BFFはFiNCのアプリで何を解決したのか ~」 by @izmeal2000

「ためる/つかう」というFiNCアプリの新機能にBFFを導入した実例を通して、BFFのメリットや設計について話してくれました。BFFが流行しつつある中で、改めてFiNCアプリのBFFは何を達成すべきなのかということを明確にし、その実例を示したという点で価値があったと思います。

ちなみに今回発表してくれた泉さんは、インターンを経験しつつ今年新卒として入社したAndroidエンジニアです。このような大きな登壇は初めてでしたが、堂々と良いトークをしてくれました。資料の後半にありますが、ためる/つかう機能の実装も、ビジネスサイドとの仕様詰めからAndroidの実装、BFF含めた設計などをリードしてくれており、頼りになる存在です。

「お礼ポイント投票機能をSPAに実装してMicro Frontendsを実践している話」 by nobuhikosawai

Vol.7 でも取り上げた Micro Frontends をFiNC App Webで実装した具体事例の話でした。澤井さんはこの勉強会の後に 11/2 (金) の AWS Dev Day 2018 にて同じくMicro Frontendsに関して登壇しており、そちらの資料がよりまとまった内容なので、そちらを掲載いたします。

ちなみにVol.7でのMicro Frontendsの議論まとめは以下です。こちらの議論も非常に面白いので、Micro Frontendsにご興味がある方はぜひご覧ください。

(澤井さんの登壇の様子の写真は取り忘れました。)

澤井さんは現在社内唯一のWebフロントエンドエンジニアです(バックエンドも兼任)。社内ではRails + React を利用したサービスが増えており、RailsメインのエンジニアがReactの実装もできるよう、実装パターンの整備やレクチャーなどを進めてきました。そういった事情もあり、1つのモノリシックのSPAをメンテナンスするよりも、各チームで小さなアプリケーションをメンテナンスできるMicro Frontendsを取り入れようとしており、澤井さんがそれを主導してくれています。(※もちろん、Webフロントエンドのエンジニアの採用は募集しております。)

飛び入りLT: 「マイクロサービス開発に分散トレーシングを導入してみた」 by @bgpat

なんと、飛び入りLTを準備していただいていた方が!過去9回ずっと募集はしていたのですが、実際に飛び入りLTがあったのは今回初めてでした。

bgpatさんによる、分散トレーシングを導入した話。マイクロサービスの中でも非常にホットな話題で、先を行っていて素晴らしいの一言です。単に「試す」のと「社内の多くのサービスに導入していく」の間にあるハードルを日々感じますが、その導入を進めるところまで行っているのがすごい。

懇親会

懇親会で、テーマを設けてディスカッションを行いました。テーマは iOSとAndroidでドメインロジックを共有する です。

これは今回はじめての試みでしたが、非常に盛り上がりました。次回以降もやっていきたいと思います。

メイキング

今回は「クライアントサイドはマイクロサービスをどう統合するのか」というのが一つのテーマでしたが、実はこのイベント自体も「統合」を意識して作り上げました。具体的には、事前準備にて各登壇者がトークを持ち寄り、お互いに聞き合う時間を何度か作りました。結果として、フィードバックと議論によって考えが深まり、結果的にトークがブラッシュアップされました。また、1つのトピックの抽象と具体の話を別々のトークで出現させたりと、イベント全体としてメッセージを伝えていくような形を作り上げることができたのではないかと思います。

エンジニア積極採用中!

以下の技術に興味がある方、ぜひ一度カジュアルにお話しませんか?

  • 大規模 iOS/Android App 開発 (Swift/Kotlin, Clean Architecture, Rx, etc)
  • Backends for Frontends (Kotlin + WebFlux + coroutine)
  • Micro Frontends
  • マイクロアプリ
  • Flutter

いずれも真剣に、かつ楽しく取り組んでいます。興味ある方 Wantedlytwitter (qsona, DM開放中) などで気軽にお声がけ下さい。お待ちしています。

次回もお楽しみに!