Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BFFとmicroservicesアーキテクチャ

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for hirac hirac
May 19, 2022

 BFFとmicroservicesアーキテクチャ

Avatar for hirac

hirac

May 19, 2022
Tweet

More Decks by hirac

Other Decks in Technology

Transcript

  1. ©hirac 3 自己紹介 { "日立": "CTスキャナの制御ソフト開発リーダー ", "フィリップス": "医療IT製品のテクサポ・技術リーダー ",

    "シーメンス": "医療IT製品のPM", "オリンパス": "クラウドサービスの開発 PM", "CAPS": "電カル・AI問診など開発エンジニア ", "フリーランス": "SREやテックリード", "sweeep": "CTO" , "twitter": "@kimi_hira" }
  2. ©hirac Web mobile BFF ServiceX ServiceZ DB DB Frontend BFF

    Backend DB BFF & microservicesアーキテクチャ ServiceY
  3. ©hirac 複数リソースにおける情報の集約化 type Payment { """ 支払情報 """ Id: Int!

    # 支払管理ID userId: Int! # 担当者ID userName: String! # 担当者名 ... } GraphQL BFF ユーザ DB 支払 DB XXX DB
  4. ©hirac GraphQLスキーマからClient/Server生成 $npm run graphql-codegen --config ./path/to/config.yml Client (TS) →

    client/model生成 config.yml /schema: http://localhost:3000/graphql documents: ./src/**/*.graphql generates: ./src/types.ts: plugins: - typescript - typescript-operations $go run github.com/99designs/gqlgen generate BFF (Go) → resolver/model生成 gqlgen.yml schema: "*.graphql" exec: filename: generated.go model: filename: models_gen.go resolver: type: Resolver layout: follow-schema dir: . models: ...
  5. ©hirac GraphQLの課題 ・GraphQL ↔ Protobufの値の詰め替えが発生  Request:model.xxxInput → pb.xxxRequest  Response:model.xxx ←

    pb.xxxResponse ex. : GraphQLではintしかサポートしていない Protobufだとint32/64 → Protobuf -> GraphQL生成なども将来検討
  6. ©hirac GraphQL ↔ Protobufの値の詰め替え # ユーザ情報Input type UserInput { Id:

    Int # ユーザID ... } # ユーザ情報 type User { Id: Int! # ユーザID ... } GraphQL Protobuf // ユーザ情報Request message GetUserRequest { int32 id = 1; // ユーザID ... } // ユーザ情報Response message GetUserResponse { int32 id = 1; // ユーザID ... } toPb int → int32 toGraphQL int ← int32
  7. ©hirac 今後の課題 ・BFF開発分の工数増で冗長に感じることも多いが、  無いとFEで頑張らないといけなかったりする  次のサービスではGraphQL Gatewayなど検討したい ・GraphQL & BFFは現在はWeb &

    Mobile共通のため、同時  リリース。共通化やアジリティを下げない仕組みに課題 → アーキテクチャにも「銀の弾丸」はないので改善し続ける
  8. ©hirac 参考資料 ・sweeep Box - 書類保管AI ・sweeep Boxで使用している技術スタック ・スタートアップのCTOとして何を考え何を変えたか ・GraphQL

    Code Generator ・gqlgen ・みんなで育てる GraphQL スキーマ, それを支える Protobuf / GraphQL and Protobuf