M&Aによって得たプロダクトとチームを成長させるリファクタリング
【10-E-5】スタートアッププロダクトのエンジニアリング組織をまるっとリファクタリングする方法
サービス拡大に備え、インフラ基盤を新たに構築する
OurPhotoのインフラはMicrosoft AzureからAWSに引っ越しすることにした。AzureではWebサーバーやDBサーバーを単一インスタンスで運用していたが、AWSではコンテナ技術を利用して複数のWebサーバーの並行稼動や、DBはAuroraを導入し、オートスケールを可能にするなど、システム全体の可用性を向上させた。もともと他の自社サービスではAWSを使っており、社内エンジニアが慣れており、ナレッジを存分に活かせるという利点もあった。
デプロイフローの自動化では、AWSのコードシリーズを使って実現した。GitHubに新しいコードをマージしたら自動で動く仕組みを実践。これによって基本的には誰でもリリース作業ができるようになる。
AWS Lambdaなどのサーバーレスアーキテクチャーを採用して画像のリサイズ処理を行い、画像のアップロードなどの処理スピードを向上した。これは登録フォトグラファーによる納品作業スピードが上がり、かなりの好評を得た。セキュリティ面では、AWS Security Hub、Amazon CloudWatchなどを利用して、ログの収集や、セキュリティの穴や危険な設定の検知を実施し、定期的なチェックと改善ができる状態にした。
保守性や品質を上げるための改善を実施
1000行を超える巨大なコントローラーのスリム化を実施。堂上氏は「今回の改善で一番時間を使った部分です」と振り返った。コードは必要な処理が上から順にバーっと書いてある状態だったので、データ処理のロジック、業務ロジック、画面操作のロジックなどを適切に分け、責務の分割を実施。これで可読性が大幅に向上。またコードのリファクタリングの中で、バグが相当数見つかり、併せて修正作業も実施した。
スリム化の対象はユーザー側に絞った。堂上氏はその理由を「プロダクトをもっと成長させていく時に、ユーザー側で機能の追加、機能の改修などをたくさんやっていきたい。だからユーザー側のコントローラーをスリムにするように優先順位をつけました」と、事業のフェーズに合わせて作業を進めることが大切と述べた。
属人化の解消では、今までのCTOに手順や運営について明文化してもらう。CTOの時間は、すべてこれに充てた。ただ、しっかりしたドキュメントは時間がかかるので、ヒアリングなどを重ねて適宜判断していった。
当時OurPhotoにはテストコードがまったくなかったので、Unitテストを導入。CI/CDツールである「CircleCI」を導入して、GitHubにプルリクエストを上げたら同時にテストを実行、テストが通らないと次に進めないフローも確立した。ユーザーがサービスを利用する上での重要な操作において、バグを起こさないという観点で、優先順位をつけながらテストを用意した。
その他、技術的負債の確認に「Code Climate」、バグの検知に「Bugsnag」、パフォーマンスの監視に「Datadog」などのツールを活用した。
この記事は参考になりましたか?
- Developers Summit 2023 セッションレポート連載記事一覧
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
森 英信(モリ ヒデノブ)
就職情報誌やMac雑誌の編集業務、モバイルコンテンツ制作会社勤務を経て、2005年に編集プロダクション業務やWebシステム開発事業を展開する会社・アンジーを創業。編集プロダクション業務においては、IT・HR関連の事例取材に加え、英語での海外スタートアップ取材などを手がける。独自開発のAI文字起こし・...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
提供:株式会社うるる
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
