1
/
5

地道にシステム統合した話

テクノロジーグループの冨田です。
前回は情シスの話でしたが、今回はアプリケーションの話です。

「北欧、暮らしの道具店」のお客様向けのWEBシステムは3つのアプリケーション/リポジトリに別れていました。

- CMS
- 旧世代アプリケーション
- 新世代アプリケーション

木村岩橋矢田によって2021年5月にCMSを新世代アプリケーションに統合しました。
私と矢田の2名で2021年5月から旧世代アプリケーションを新世代アプリケーションに統合し始めました。
矢田はSREチームではありますが、元々アプリケーションエンジニアでもあり、インフラ面の課題も解消するので職種の壁を超えて仕事しています。

システムの課題感

技術的負債」もとい「文化遺産」 は、いままで事業を支えてきてくれたアプリケーションではありますが、このような課題がありました。

- エンジニアの人数が6人しかいないのにリポジトリが別れすぎていた。
- アプリケーション面ではバナーやメニューなど同じようなコンポーネントや機能を修正する場合、3つのリポジトリを修正する必要があり工数が無駄にかかっていた。
- インフラ面ではAWS OpsWorksやElastic Beanstalk、Fargateでそれぞれ動いておりOSやミドルウェアのアップデートをするのが辛くFargateに一本化したかった。
- 旧世代アプリケーションはLaravelらしいコードの書き方になっておらず、冗長な書き方になっていた。
- 旧世代アプリケーション、新世代アプリケーションでそれぞれでsessionを持っておりログイン情報が共有できず、session情報を必要とする機能が作りにくかった。
- DBのテーブル設計やコード体系に課題があり、将来DBのリファクタリングを実施することを見据え、DBの参照部分なるべく減らすためネイティブアプリAPI用のストレージとして利用していたElasticSearchを参照するようにしたかった。

プロジェクトの進め方

プロジェクトを進めるにあたり全体像を把握するため、統合する機能を1機能毎にURL、Controllerやaction、参照するテーブルや課題を洗い出しました。


テクノロジーグループでは毎週tech相談会というエンジニア全員参加の「ザッソウ」の時間を設けています。
レビュー方針や困りごと、トイルの解消など多岐にわたることを「ザッソウ」しています。
今回は統合方法や設計の方針を話しましたが、「ザッソウ」する中ですでに使われていない機能や気をつけなければならない部分のアドバイスも貰えました。
tech相談会以外にもプロジェクトの定例ミーティングやSlack上での分報でもフォローしあっています。

その後、機能間の依存関係を考慮し、1機能ごとにタスクを分解しロードマップを作成しました。
タスクの工数見積もりは実工数にブレがあったり、差し込みもあったり、見積もりをする工数自体もかかるため精緻には行わず、ざっくり1週間1スプリントかかる前提でロードマップを作成しました。
ロードマップは作成し代表の青木にはおおよその目処は共有するものの、リリース日を基本的には表に出していないので締め切り優先にならず品質を重視しています。

レビューの負担や、心理的負荷を考えて小さく、少しずつ1機能毎に移植して統合しいきました。


クラシコムではインフラをterraformで管理しており、GitHubのプルリクエストをだしアプリケーションコードと同様にレビューをしています。
統合に際してはterraform applyしALBを切り替えています。
今回統合先にトラフィックを流したところ、一部の機能で障害が発生しましたが慌てずに1つ前のリビジョンに戻しterraform applyし、切り戻すことができました。

まとめ

地道に既存のシステムのお手入れをして、本質的な開発業務に割ける時間を増やしていっています。
バックエンドは概ね統合できましたが、JavaScriptやCSSの最適化やDBのリファクタリングが待ち構えている状態です。
今後はそれらの課題や社内スタッフ向けのシステムを整え、結果としてお客様のユーザー体験の向上を進めていけたら思っています。

一緒にシステムをお手入れして、ブラッシュアップしていってくれる仲間を募集しています。

株式会社クラシコム's job postings
1 Likes
1 Likes

Weekly ranking

Show other rankings