読者です 読者をやめる 読者になる 読者になる

備忘録

なんとなく暇なときにでも....

Microservices Meetupに行ってきた話。

会社で最近話題のマイクロサービス化しようという流れがありまして、先週FiNCで開催されたMicroservices Meetupに行ってきました。

microservices-meetup.connpass.com
今回はAPI Gateway と BFFの話がメインテーマでした。
ざっくりまとめておきます。

APIのことはすべてシーマンが教えてくれた。

  • 何言ってるかよくわかんなかった…笑
  • (テーマとは関係ないですが)oracleAPI Gateway製品を出すらしい。

step by step BFF

  • BFFのユースケースについて話。(以下ユースケース)
    • APIコールをBFFでまとめてフロントに最適化した形で返却する
    • セッション管理
    • サーバーサイドレンダリング
    • ファイルアップロード
    • リアルタイム処理
  • BFFはクライアントとサーバーサイドのロジックのバランスを保つことで、クライアント・サーバーがそれぞれの役割に集中できる。

    • ドメインに特化したサービス(サーバサイド)とリッチ(フロントエンド)の調停役を担う。
  • BFFをNode.jsにすることで、

    • サーバサイドレンダリング
    • フロントの作業を共通化できる などのメリットも。
  • Netflixはバケモノ

    • 対応のデバイスが異常に多いのでBFFでそれぞれに最適化させた話
  • BFFを導入するときは

    • フロント、バックを分業したいとき
    • レガシーなシステムを少しずつリアーキテクトしたいとき
  • BFFを導入しないときは

    • フルスタックエンジニアが多い
    • (モノリシックにして)開発速度を優先したいとき
    • SEOいらないとき
      • 表示速度などにこだわる必要がなく、サーバサイドレンダリングなどが不要な時
  • step by step

    1. モノリシックな構成 f:id:tomAn:20170401172855p:plain
    2. モノリシックサービスからBFFを切り出す。 f:id:tomAn:20170401172852p:plain
    3. モノリシックサービスから少しづつサービスを切り出す。 f:id:tomAn:20170401172849p:plain

Webサービスの初期開発とマイクロサービス・BFF

  • できるだけAPIを単純化し、細かい粒度で作ることによって、設計・実装・テストが簡単になり、バグもほとんど起きなかった。

  • BFFの実装は難しくないけど、複雑で面倒なことが多いため、チームにはなかなか受け入れてもらうのに時間がかかった。

  • 個人的にはちょうどgolangをechoフレームワークで勉強中でした。。

    • BFFのサンプルコードをgithubにあげてくれててとても喜んでいます。 github.com

Railsで作るBFFの功罪

engineer.recruit-lifestyle.co.jp

  • 2番めと3番目のスライドではNode.js, golangでBFFを実装していて、個人的にもどっちかなんだろうなと思ってたところで、まさかのRailsでBFFを構築した話。

  • Node.js, golangと比べると、並列処理が苦手なので、パフォーマンスなどに問題が出る可能性があったそうなんですが、開発速度 > パフォーマンスという優先度として、Railsの使用を決めた。

  • 完全なマイクロサービス化は諦めて、BFFとモノリシックサービスを分離させることだけの集中した。

  • パフォーマンスの低下を少しでも防ぐには、BFFを極力薄く保つことが一番効いた。

パネルディスカッション

  • BFF の開発を誰が担うか。

    • フロントエンドの人が BFF の開発もする。WebSocket もやる。そこまでやらないといけないと思っている
  • API Gateway と BBF の違い。

    • BBF の機能の一つとして API Gateway があるという認識
  • bffはバックエンドのどの部分まで持つべきか?

  • ネイティブアプリだとリッチなマシンパワー使えるので、webと違ってBFF導入メリット薄い

感想

  • 今回の話だとBFFでのセッション・アグリゲータ・レンダリングの話が多かった。

  • BFF入れてAPIの並列化だけやってもパフォーマンス向上に繋がりそう。

  • 大規模になってくると、BFF自体がモノリシック化してしまいそうで怖い…