株式会社カカクコム
食べログを高凝集・疎結合なモジュラモノリスにリファクタリングするのモジュラモノリスアプリケーション化エンジニアのミッションになります。
・コードのメトリクスを元に改善計画を立てて進行する
・不要なコードの削減
・結合度・凝集度・認知的複雑度などコードの質の指標を改善する
・業務ドメインの開発エンジニアと共同してモジュールの境界を定義・設計
・モジュラモノリスアーキテクチャへのリファクタリング
【ミッションへの道のり】
食べログは2007年に Ruby on Rails でリプレイスして以来、約15年の長期に渡り抜本的なアーキテクチャ刷新なしに開発と運用を継続しており、モノリシックで巨大なコード、かつ巨大なデータを持つ状態になっています。
この巨大なシステムを以下のステップで改善しています。
1.システムをKubernetesなどモダンなインフラ基盤に刷新して変更安全性と変更容易性を高める
2.設計変更や不要なコード削除などの大胆な改修を小さく速く繰り返し、疎結合・高凝集なモノリスに作り変える
3.組織構造やビジネスファンクション・ドメインモデル・ユースケース等より、マイクロサービスの境界を考察し、定義し、分割する
(詳細は「食べログの大規模なレガシーシステムを段階的に改善していく取り組み - https://qiita.com/tkyowa/items/6417b0a7895399f8f9be 」で公開されています。)
業務内容の変更の範囲は会社の定める業務となります。
入社後のイメージ
<オンボーディング>
食べログのRailsアプリケーション設計、基本的なシステム基盤(例えばサーバミドルウェア)、業務の概要をドキュメントと先輩社員のレクチャーを併用して学習していただきます。並行してデッドコード削減や結合度、凝集度のようなメトリクス改善を実装して開発・リリースワークフローを理解していただきます。
<最初の業務>
マイクロサービス化チームと開発チームとの合同のシステム改善プロジェクトに参画して、例えばアプリの店舗詳細機能のような特定機能のシステム改善をメインで担当していただきます。(システム改善の詳細は業務内容をご覧ください。)
<近い将来>
システム改善プロジェクトにおいてマイクロサービス化のリーダーを想定しています。
開発環境
・プラットフォーム: オンプレ DC / GCP / AWS
・仮想化基盤: VMWare / Kubernetes
・OS・ミドルウェア: Linux / Ruby on Rails / MySQL / Nginx
・コード管理・CI: GitHub / CircleCI
・監視: NewRelic / Prometheus / OpsGenie / Sentry
・コミュニケーション・プロジェクト管理: Microsoft Teams / Miro / Asana
・データ基盤: BigQuery / Tableau
キャリアパス
アプリケーション設計のスペシャリストとして、システムを最適化し、モジュラモノリスからマイクロサービスや新しい設計パラダイムへ進化させるキャリアパスを期待しています。その中においてご本人のスキルと志向次第で技術面でのリードや、施策やチームをリードするマネジメント方面を想定しています。
仕事のやりがい、成長できるポイント
【高度な問題解決能力を鍛える機会が得られる】
大規模システムのリファクタリングは、技術的な問題解決能力を鍛える絶好の機会です。保守性、パフォーマンス、スケーラビリティなどの問題に対処する必要があります。これらの課題を解決することは困難ですが、成功したときの達成感は大きいです。
【先端技術に強い企業・部門で働ける】
日本最速でChatGPTプラグインをリリースできたように、老舗のサービスを開発・運用しながら最先端技術の採用もできる職場です。
【持続的な学習の機会が得られる】
システムエンジニアリングは日進月歩で、最新の技術を学び続けることは極めて重要です。大規模システムのリファクタリングは、新たなテクノロジーやアーキテクチャパターンを学ぶ絶好の機会を提供します。技術スキルを維持・強化することができます。
【プロジェクト初期から大きな裁量を持って参加できる】
アプリケーションの改善は始まったばかりで、プロジェクトの初期から参加して、採用する設計パラダイムなどの意思決定に参加できます。
【発表経験を積める】
社内で発表する機会が大小用意されており、発表経験を積むことができます。
【社会的へ大きな影響のある仕事ができる】
約9,600万MAU(※1)を持つ食べログのシステムを改善するということは、多くのユーザー、飲食店経営者の生活をより良くする大きなやりがいのある仕事です。
※1 2023年3月現在。PC、スマートフォンブラウザ/アプリ等で同じユーザが閲覧している場合には重複カウントとなります。
【在宅でも出社でも働きやすい環境である】
業務に支障がないことが条件ですが、在宅勤務するか、出社するかの勤務スタイルはチームや個人の裁量に任されています。コロナ禍を機会に在宅勤務で働くための環境が整備されており、コラボレーションツールとしてはMiro/Asana/Microsoft Teamsなどを採用しています。
在宅勤務環境下でもコミュニケーションがとりやすい環境になっています。
【その他】
食べ歩きを趣味にしている人が多いため、美味しいお店に詳しくなれます。
Tabelog Tech Blogについて
Tabelog Tech Blog は、食べログの開発者が技術的課題に対する取り組みやプロダクト開発の試行錯誤で得た学びなど、食べログの開発にまつわる様々な情報を発信するブログです。
食べログのエンジニアがどのように業務を進めているかもわかるコンテンツですので、ぜひともご覧ください。