Slide 1

Slide 1 text

© 2024 Wantedly, Inc. Wantedly のバックエンドの 将来に向けた取り組みと課題 Wantedly Tech Night 2024/5 May 24 2024 - Ryota Egusa

Slide 2

Slide 2 text

© 2024 Wantedly, Inc. #wantedly_tn

Slide 3

Slide 3 text

© 2024 Wantedly, Inc. © 2024 Wantedly, Inc. Ryota Egusa @gedorinku Quality Control Squad https://www.wantedly.com/companies/ wantedly/post_articles/459966

Slide 4

Slide 4 text

© 2024 Wantedly, Inc. ●

Slide 5

Slide 5 text

© 2024 Wantedly, Inc. gRPC in Ruby https://docs.wantedly.dev/fields/the-system/grpc-in-ruby

Slide 6

Slide 6 text

© 2024 Wantedly, Inc. gRPC in Ruby gRPC Service ActiveRecord Protobuf Serializer Rails Application

Slide 7

Slide 7 text

© 2024 Wantedly, Inc. ●

Slide 8

Slide 8 text

© 2024 Wantedly, Inc. GraphQL Gateway ● 個別の App とは疎結合な API を提供する ○ 一度 API を作れば App 側の変更だけでできることが増える ● GraphQL リクエストを受け、各マイクロサービスへ gRPC リ クエスト ○ その結果を集約して返す

Slide 9

Slide 9 text

© 2024 Wantedly, Inc. GraphQL Gateway の型生成 Protobuf message JobPost { uint64 id = 1; string title = 2; } type JobPost { id: String! title: String! } GraphQL

Slide 10

Slide 10 text

© 2024 Wantedly, Inc. 今後の課題 ● リアーキテクチャのコスト ○ アプリケーションの移行は比較的にスムーズ ○ ログの互換性の維持が高コスト ● GraphQL Gateway の扱いにくさ ○ Protobuf から GraphQL への型変換の制御が難しい

Slide 11

Slide 11 text

© 2024 Wantedly, Inc. ログの例 ● アプリケーションのアクセスログ ● 色々なイベントログ ○ ページの表示 ○ ボタンのクリック ○ …

Slide 12

Slide 12 text

© 2024 Wantedly, Inc. ログの継続性 ● プロダクト指標の計算にも使われる ● ログの互換性が失われるとこの指標の追跡ができない ○ 例: Rails が HTML を返すアーキテクチャ→Next.js ■ 「ユーザーがページを開いた」ログのタイミングが変わ る

Slide 13

Slide 13 text

© 2024 Wantedly, Inc. まとめ ● Wantedly のアーキテクチャ ● リアーキテクチャをやって見えてきた課題 ○ ログの移行の難しさ ○ …