ForceOperationX(F.O.X)は、日本国内で初めてスマホアプリ向け広告効果計測を実現するサービスとして、2011年2月に提供を開始しました。多くの広告主に支えて頂き、現在では日本国内での導入シェアNo.1になるまでに成長することができました。
2011年2月の運用開始から6年以上が経過したF.O.Xでは、長年運用してきたデータセンターからクラウド環境に全て移行するプロジェクトを2015年末から始めました。そのクラウド移行プロジェクトも運用開始76ヶ月目の2017年6月、ついに終わりを迎えます。
今回、クラウド移行プロジェクト初期から全体責任者として携わってきた、F.O.X開発責任者の黒木に話を聞いてみました。
黒木 亮太
ForceOperationX (F.O.X) 開発責任者
2012年1月サイバーエージェント中途入社。入社後新規サービス(BtoC)の立ち上げをいくつか経験後、2015年10月CyberZに出向。現在はスマホアプリ広告効果計測ツール「F.O.X」開発責任者を務める。
プライベートでは最近、1児→2児の子育責任者に昇格。
入ってすぐ感じた課題 : 成長ボトルネック
2015年10月にCyberZに出向後、F.O.Xチームに入ってすぐ感じたことは「データセンターでのサービス運用がメイン」であることでした。今までにもデータセンターを使ったサービス運用の経験はありましたが、サイバーエージェントに入ってからは何らかのクラウド環境を使っていたことが多かったので、かなり久しぶりの感覚でした。
一度クラウドを経験してからのデータセンター運用は不便な部分が多くて、サーバにトラブルがあってもデータセンターまで復旧に行かないといけないとか、サーバを増やす際に発注~稼働させるまでに数週間から数ヶ月かかるなど、問題を挙げ始めるとキリがないぐらいです(笑)
私も含めてですが、F.O.Xの中で特に問題になっていたのは以下の2点です。
運用保守にかける時間の増大
サービス規模が大きくなるにつれて、トラブル時の復旧やデータベースなどのミドルウェアの運用で各エンジニアがかなりの時間を時間を割くようになっていました。当然、新規の開発にかける時間が少なくなるため、生産性が上がりにくい状況でした。
日本国外へのサービス提供に対する課題
グローバルでの提供がメインになっていくことを視野に入れた場合、レイテンシやEUデータ保護指令はクリアしなければならない問題です。その場合、複数の地域においてサーバ運用を行う必要がありました。海外のデータセンター利用も検討しましたが、かなり敷居が高かったのを覚えています。
一言でいうと、データセンターでの運用がプロダクト成長のボトルネックになってしまっていました。
そのような状況を改善するために、F.O.Xをクラウドに全て移行することを目的とした、「クラウド移行プロジェクト」を私が中心になって2015年末にスタートさせました。
クラウド移行を始めて分かった課題
クラウド移行を始めてすぐにぶつかった課題がいくつかありました。
クラウド経験者が少ない
クラウドインフラの経験者が少ない事を発端として、環境構築スピードが鈍化していました。当時は環境を構築する際、アプリエンジニアからインフラ専任のエンジニアに依頼をして構築してもらうデータセンター時代とあまり変わらない運用をしていました。当然インフラエンジニアはずっと構築に大忙しで、アプリエンジニアは構築待ち状態が続いていました。
また、アプリエンジニアがクラウドに関する知識をあまり持っていなかったことが原因で、移行後のアーキテクチャ設計や移行作業計画の策定に遅れがでてしまっていました。
データセンターとクラウドの運用概念の違い
データセンターでは、サーバをダウンさせない運用が重要になりますが、クラウド環境ではサーバがダウンしたとしても復帰することが重要になります。データセンターで長い間運用していた影響でサービスの作り自体が運用概念の違いに対応できていないことが徐々に判明していきました。例にあげると、自動でサーバが増減するという概念や、ダウンしたサーバとは別のサーバでサービスを継続する というようなものです。
従量制のコスト管理
データセンターではコストが一定で管理がし易いですが、クラウドは従量課金になるため利用状況によってコストが変動します。高価なインスタンスを放置することによる「クラウド破産」などの問題もあり、運用コストをどのように管理/監視していくかが課題でした。
クラウド最適な組織にするための3つの組織改革
移行にあたっての課題を解決するため、3つの組織改革を実施しました。
インフラ専任エンジニアからの権限委譲
アプリエンジニアでクラウドインフラを構築運用することを目的に、インフラ教育と権限委譲をセットで実施する「インフラ向上プロジェクト」を発足しました。基本的な内容や、EC2/ELB/RDSやその他マネージドサービスに対するハンズオンを経て、一定レベルに達した場合に権限を委譲するといったものです。
詳細はプロジェクトを運用してくれたエンジニアが振り返りでスライドにまとめてくれています。
インフラ業務を開発エンジニアへ移譲して(茂木高宏)
https://www.slideshare.net/tkmoteki/ss-72529117
マネージドサービスの積極活用
自動復旧可能な構成や、サーバレスアーキテクチャを積極的に活用しながら、運用概念の違いをクラウドに合わせていく方針に変えていくようにしました。主には、RDS、Lambda、EMRなどリプレイスを行いつつ移行をしていきました。
従来からのレガシーなソフトウェアの変更も並行して行うため、かなりの負担を強いる方針になりましたが、将来的な運用コストを考えてこのような方針にしています。
プロジェクト単位でのコストレビューの実施
F.O.X全体ではなく、より小さなプロジェクト単位でのコストを算出し、月に1度コストレビューを実施するようにしました。クラウドのコスト閲覧に関する権限はインフラ向上プロジェクトの権限とは別で全員に先行して付与しています。
レビューにおいて重視する点は、コスト増加が想定通りだったか、プロジェクト規模にあったコスト感になっているかの2点です。クラウド独特の考え方になるスケールイン、スケールダウンを適切に利用すること、予期しないコスト上昇などを防ぐことにつなげるのが狙いです。
クラウド移行プロジェクトを終えるにあたって
2015年末から実施してきたクラウド移行プロジェクトも、ついに終わりを迎えます。
クラウドを全エンジニアが活用することができるようになったことで、構築だけではなく開発スピード自体を上げることにもつながっています。昨年ラスベガスで開催されたAWSのre:Invent 2016の内容は、翌日から個々で検証に取り組む動きが見られましたし、現地に行きイベント参加するメンバーもでてきています。このような動きを元に、「発展運用プロジェクト」という、クラウドの新機能の調査や運用効率化を目的とした有志での取り組みも始め、実際に運用を改善するライブラリの開発と導入など幾つか成果が出始めています。
クラウド環境では日々、新しい機能/サービスが出てきます。それに合わせて、意識やアーキテクチャを変えていくことこそがクラウドの醍醐味なのではないかなと思っています。
クラウドのマネージドサービスを活用した新しい機能の開発や、ソフトウェアでレガシーな部分のリプレイス/リニューアルなど、まだまだやるべきことは残っています。F.O.Xを更に大きく成長させることが出来るように今後も改善を積み重ねていきたいと思います。
F.O.X(株式会社CyberZ)では一緒に働く仲間を募集しています