トラコレ
会員20万人以上のWebアプリケーションサイトのリニューアル
4年間の運用実績を持つ既存会員20万人のWebアプリケーションサイト、株式会社シンクスマイル様の「トラコレ」のリニューアルプロジェクトをライブミーム株式会社様と共同で行いました。
- 01
- プロジェクト概要
- システム、デザインを一新する大規模リニューアル
4年間の運用実績を持つ、既存会員20万人のWebアプリケーションサイトのリニューアルプロジェクト。
既存システムはPHPにより構築されていましたが、長年の拡張によってソースコードの行数が膨大になっており、サイトの拡張性が失われてしまっていました。本プロジェクトでは、サイトの大規模なリニューアルを行い、既存データを移行しつつシステムデザインを一新いたしました。また、アクセス数が月間200万PV前後あるため、サーバでの負荷分散、および冗長化が要求される開発となりました。
- 02
- 設計方針
- 複雑化していたデータ構造の再設計
開発方針の決定
本プロジェクトはクライアント様より今後も機能を拡張していきたいというご相談を受けていたため、リスクもありましたが現行ソースコードを一新し、Railsによってデータベースレベルから再設計することを前提といたしました。 通常動いているシステムを再設計し直すことは、多くの場合無用なリスクを孕むので慎重に検討いたしましたが、PHPで記述された既存システムが当初設計からの度重なる小修正により、MVC分離や全体把握を行うことが困難であり、既存システムを今後メンテナンスするためのオーバーヘッドを考えると再設計の工数を上回ると判断いたしました。
- 03
- 開発環境
- 複数開発者による高速開発、分散バージョン管理システムの利用
開発環境について
各開発者は開発マシンに自分専用のテストサイトを仮想マシン環境等を用いてセットアップし、誤って環境を壊してもプロジェクトに問題が出ない環境を与えた上で開発を行いました。ソースコードはGitによるバージョン管理を行い、共有のGitリポジトリに反映された最新コードが常に反映される、開発向け動作確認環境を用意し、動作確認が取れたバージョンのみを本番環境に適用するというリリースポリシで開発を行いました。
Ruby on Railsによる高速開発
開発期間に対して作成する機能数が比較的多く、データベース再設計を行えるという点からRailsをフレームワークとして選択いたしました。Railsの持つ豊富な開発支援機能を利用することにより、より少ない記述量で再利用性の高いプログラムを記述することができました。PC、スマートフォン、フィーチャーフォンの3種同時対応についても、Railsの持つViewの出しわけ機能とライブラリのカスタマイズを行い、重複部分の共通化を通してメンテナンスしやすいファイル構成を実現しました。
- 04
- サーバ環境
- 大量アクセスに耐え、スケールアップ可能なシステム構成
既存システムの時点でもmemcachedやスレーブサーバを用いた負荷分散が行われていましたが、機器の故障などによる不具合に対してより堅牢、かつスケールアウト可能なシステムを構築すべく、Amazon Web Serviceを利用したサーバ構築を行いました。 キャッシュサーバ、アプリケーションサーバ、データベースサーバはそれぞれアクセス数に応じて任意にサーバ台数を増減させることが可能です。そのため、CMやイベントといった一時的に大量のアクセスがある場合でも、比較的柔軟に負荷に合わせたサーバ構成を調整できます。 通常サーバ台数が増えるとメンテナンスコストもそれに比例して増大しますが、アプリケーションのバージョン更新にはcapistranoによる一括更新を行うことで、オペレーションミスや更新にかかる時間の短縮を行っております。