サイバーエージェントでインフラエンジニアをしている技術本部の中島( @nakashii_ )です。エンジニアブログでは初めて記事を書かせていただきます。

この記事は CyberAgent Developers Advent Calendar 2016 の1日目の記事となります。

よろしくお願いします。

先日の記事では、アメーバブログ(以下アメブロ)のフロントエンドのリニューアルについて原さんに解説をいただきました:)

アメブロ2016 ~ React/ReduxでつくるIsomorphic web app ~

とても良い記事になっていますので、まだご覧になっていない方がいらっしゃいましたらぜひご一読をオススメします。

さて、記事中で軽く触れられていますが、

 また、バックエンドのシステム移行も並行しており、データがAPI化されていました。

フロントエンドのリニューアルの前段階として、サーバーサイド・データベースなどのバックエンドシステムも人知れずフルリニューアルが行われていました。

前振りが若干長くなってしまいましたが、今日は、アメーバブログの最新のインフラについてご紹介させていただきたいと思います。

フルリニューアル前の状況

アメブロは2004年のサービス開始後何度かのシステム刷新を経ていますが、稼働の長期化に伴い、大きくまとめても以下のような問題が見られるようになってきていました。

サーバーサイド

 サービス拡張に合わせて大量に発生したAPIとDB群がありました。拡大期の負荷を乗り切るためにデータ取得の仕組みが特殊になっていたりするものも多く、複雑でテストしにくい環境でした。

インフラ・ミドルウェア

 アメブロへのMySQLの導入は2006年から本格的に始まっています。MySQLの4系やMyISAMのDBが各所に残っており、さらにOracle DBも稼働するなど、運用上別々のノウハウが必要になるシステムが多数ある状況でした。

データセンター移設がリニューアルのきっかけに

今回の移行前、アメブロのシステムが設置されたデータセンターは導入から10年程度の稼働を経ていました。ラックなどの物理的余裕も少なくなってきており、また、機器の老朽化による故障の増加とその対応もじわじわと効いてくる課題でした。

2015年に入り、ラックスペースや利用電力に余裕のある新規のデータセンターへプライベートクラウドを増設することが決定します。

アメブロとバックエンドを担当するサーバーサイドとインフラのチームでは、パブリッククラウドの利用を含めて様々な検討を行った結果、アメブロを含む周辺サービスもデータセンターの移設に追随し、さらに移設のタイミングでシステムのボトルネックとなっていた部分を全て改修し、クリーンにするという方向性を決断しました。

最終的にフロントエンドのリニューアルまで行われることで、アメブロはインフラ・サーバーサイド・フロントの全てがリニューアルされることになります。

移設を機に統一されたシステムへ

問題は全て改修する!という決意のもとに、互換性は考慮しつつも全てのコンポーネントに手を入れる形でリニューアルが実行されました。インフラに関係する主な改修点だけを上げても以下のようになります。

  • 全てのMySQLを5.5以上で統一、フルInnoDB化
  • Oracleの廃止
  • データアクセスは全てAPIで
  • Openstack + Chef + Serverspec による構築の自動化

また、サーバーサイドではオールAPI化とDB形式の変更に伴う改修が想像を全する規模で入っており、移設を完遂した各チームメンバーの力量を改めて実感する結果となりました。

サーバーサイドのシステム刷新は以下のスライドでも詳細をご覧いただけます。

また、この記事では紹介しきれませんでした、Openstackを含めたインフラ移設については、以下のスライドでも詳細にご説明しています。

リニューアル後に現れた効果

性能面

移設に伴い負荷試験を繰り返し行ったことで、普段の運用で見えていなかったボトルネックも発見することができました。結果、リニューアル後にスマートフォンぺージのレスポンスタイムが大きく改善しています(フロントエンドのリニューアルでさらに改善!)。

コスト面

400台以上の物理サーバー → 物理サーバー換算で100台以下に。全体の費用が大きく圧縮されました。

運用面

Openstackでは、terraformなどのツール類も対応が進んでいます。これらを利用し、構築と管理の自動化を行いました。DBを含めたサーバー増設はJenkinsのJobで自動化されておりアプリ側担当のみで実施可能なほか、負荷の高いマシンを即日HDD→SSDインスタンス化など、要求の変化に柔軟に対応可能となりました。

おわりに

フロントエンド・サーバーサイドの各記事でも触れられていますが、リニューアルの結果、インフラの運用面でも大きなメリットを得ることができ、プロジェクトの結果としてはとても満足の行くものを得ることができました。

大規模プロジェクトのリニューアル例として何かの参考になれば幸いです。

また、プロジェクトのインフラ担当メンバーの一員として入社直後から本プロジェクトに関わり、リニューアルに多大な貢献をした岡田くんにこの場を借りて改めて感謝を述べさせていただきます。

明日もAdvent Calendarを是非ご覧ください!

CyberAgent Developers Advent Calendar 2016

インフラエンジニア。前職はオンラインゲーム運営。サイバーエージェントでは、主にアメーバピグや各種ゲーム、プラットフォームなど大規模システムの負荷対策を担当。