SHOEISHA iD

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

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

Developers Summit 2023 Summer セッションレポート(AD)

デプロイに45時間も! プロダクトの成長に伴うシステム肥大化と組織拡大にどう立ち向かうべきか?

【C-3】大規模クラウド録画プラットフォームのサービス成長に伴う技術負債解消と継続的改善

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

デプロイに45時間! 成長に伴うシステム肥大化にどう立ち向かう?

 ここからはメインテーマとなる事業の成長に伴う技術負債解消や継続的改善について見ていこう。今でこそ約20万台のカメラが稼働しているものの、2015年から4〜5年間は忍耐の時代だった。森本氏は「暗黒時代」と呼び、「カメラが売れず、エンジニアはほとんどいませんでした。そこですべての開発や保守運用をしていました」と振り返る。

 しかしその暗黒時代に蒔いた種が2019年ごろから開花しはじめた。根気強くプロダクトを増やし、パートナーを増やすことも続けたことにより、徐々に勢いが加速しはじめて、2021年の上場で急成長して現在に至る。

サービスの成長
サービスの成長過程

 急速に成長したため、いくつかの課題にも直面した。まずエンジニア数が急速に増加したことにより、新しいエンジニアが素早くキャッチアップする仕組みや、分担して効率良く開発する仕組みが必要となった。

 カメラ台数が増加し、システムが肥大化したことで、規模に合う耐久性も必要になった。現在は約20万台だが、将来を見越して100万台規模を想定したシステムを構築する必要があり、かつ運用保守と同時に新規開発も実行できる体制を整える必要がある。またパートナーや顧客層も増加・変化したことで、高いサービス品質を維持し、障害を最小限に抑え、迅速に対応できるようにする必要もあった。さらに業界ごとのソリューション提供にも取り組んでいく必要がある。

 これらの広範な課題をどのように解決したのだろうか。まずカメラ台数増加・システム肥大化については、データベースが大量のアクセスに耐えられないことや、障害発生時には影響範囲が広くなることが課題になっていた。そこで「Zone」で区切る分散管理システムを導入し、数万台のカメラごとにZoneを定義。負荷分散や障害の局所化を実現した。するとZoneで切り出せるようになったため、別システムとのハイブリッド環境を構築できるという副次的な効果も生まれた。

 もう1つ、システム肥大化に伴う課題として、接続品質向上のために独自の負荷分散やスケーリングを考慮する必要があった。サーバーは常に録画のための処理を行っているので、保守で止めるわけにはいかない。これについては、サーバーからカメラに再接続を指示したり、APIで手動スケールアウトさせたり、独自のデプロイ手法で乗り切ってきた。しかし台数が増えるにつれ、最終的にはデプロイに45時間もかかってしまうようになってしまった。そうなると「危ないから触るのをやめよう」と機能追加を忌避したくなるような状況に追い込まれた。

 そこでデプロイは周辺システムごと作り直し、CodeDeployによるCI/CDに移行した。EC2 Auto Scalingへの移行や、CodeDeployのスクリプトから独自の負荷分散を制御するなどした。この一連の仕組みによりデプロイは2〜3時間で完了するほど劇的に改善した。デプロイ頻度も1日に2.6回に高まった。

CodeDeployによるCI/CDに移行
CodeDeployによるCI/CDに移行の効果

 ビジネス成長に伴い、重要な顧客やパートナーも増えてきて、サービス品質を向上させる必要も出てきた。当初はサービス提供速度やコストを優先し、オープンソースのWebRTC SFUを採用していたものの、配信サーバーとは別の専用インスタンスが必要で、まれにCPUが上限に張り付き品質に影響が出るなどの課題があった。これを配信サーバーのリファクタリングを行い、WebRTC SFUを配信サーバーに取り込むことで管理面や配信品質が向上し、専用インスタンスが不要となったためコストダウンも実現した。

次のページ
難しい組織のスケール、カギはエンジニアのキャリア再考

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

  • このエントリーをはてなブックマークに追加
Developers Summit 2023 Summer セッションレポート連載記事一覧

もっと読む

この記事の著者

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

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

丸毛 透(マルモ トオル)

インタビュー(人物)、ポートレート、商品撮影、料理写真をWeb雑誌中心に活動。

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

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

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

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

提供:セーフィー株式会社

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング