SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2019夏】セッションレポート(AD)

売り上げ5000億円を支えるシステムを目指して――レガシーECサイトが挑むモダナイゼーション【デブサミ2019夏】

【B-3】モノタロウECプラットフォームを支える開発運用モダナイゼーションの取り組み

  • X ポスト
  • このエントリーをはてなブックマークに追加

リファクタリング&ログ基盤の整備

 「モノタロウ」の開発チームが次に取り組んだのはリファクタリングやログ基盤の整備である。リファクタリングの施策としては、大規模フロントエンドのクリーンアーキテクチャ化に挑んだ。

クリーンアーキテクチャ
クリーンアーキテクチャ

 クリーンアーキテクチャとは、ソフトウェアを開発するときに、ソフトウェアの要素の依存関係が複雑化しないよう、階層化して分離する設計思想だ。上図のように、ソフトウェアの要素を機能によって何層かの円上に配置して、要素間の直接的な依存関係は、外側から内側向きだけになるよう設計する。双方向の依存がなくなることで、外側の要素を取り替えたり変更したりしても、内側に影響が及ばなくなる。例えば、青の層を独自フレームワーク、緑の層をフレームワーク用アダプター、赤や黄色の層を業務ロジックとすると、フレームワークと業務ロジックが分離されているために、アダプターを差し替えることで、別のフレームワークへの載せ替えが容易になっているのだ。では、この施策により、どのような結果が得られたのだろうか。

 「ソースコードが3000行ほどでユニットテストがない機能に対し、クリーンアーキテクチャ化を行いました。その結果、もともと3000行だったものが1万5000行に増えています。増加したコードの半分はテストコードです。他に増えたのは、図の緑の層にあたるアダプター部分。この結果、テスタビリティやポータビリティがかなり上がりました。今後、独自フレームワークへの依存からも脱却しやすくなるでしょう」

 ログ基盤の整備についても金谷氏は解説。「モノタロウ」のWebサイトを支えるシステムは、毎日膨大な量のログを出力しており、その収集・集計には多くの労力が必要となる。システムによっては、1日あたり1億4300万行のログを生成する。grepコマンドのような伝統的なツールでの集計や調査は難しい。複数サーバーをまたぐリクエストの追跡も困難だ。

 理想の状態は「ログが1カ所に集まっていること」「鮮度の高いデータを高速検索できること」「ログ同士の関連付けがあること」である。これを実現するため、BigQueryを活用したログ基盤を構築した。

 新しいログ基盤の基本的な流れは以下の通りだ。BigQueryの持つ圧倒的なスケーラビリティによって、リアルタイムの各種ログ検索が可能になる。

  • FluentdでログをS3などにアップロード
  • AWS・GCPのマネージドサービスでログ加工
  • BigQueryにログ保存

 ログ同士の関連付けも、「AkamaiでリクエストIDを発行」「Upstreamへのリクエスト時に同一IDを渡す」「BigQueryにリクエストIDも保存」という流れで実現している。

 「ログ基盤の整備を行ったことで、モダナイゼーション前後のデグレーション確認やレスポンス速度比較、各種APIの利用状況の調査、さらにはコールセンターからの問い合わせに対応したお客さまの行動履歴調査などが非常に容易になりました」

 さらに今後は、新しいECプラットフォームへの移行も予定されている。既存のECプラットフォームをモダナイゼーションした結果、保守性や運用性、ポータビリティが向上した。これをベースに、新プラットフォームへの移行準備が整ったのだ。各システム間を疎結合にし、GCPベースのリアルタイムデータ基盤を構築していく予定だという。

 「システムをどうモダナイゼーションするか?」は、多くの企業が思い悩むテーマである。15年以上の歴史を持つ「モノタロウ」の事例は、そうした課題に対する「解」として、参考になる良質なノウハウにあふれていた。

お問い合わせ

 株式会社MonotaRO

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2019夏】セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11630 2019/09/12 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング