こんにちは。インフラエンジニアの杉本と申します。
2018年12月15日に行われたDevelopers Boostにて、「運用規模の拡大を乗り越える 〜Toilの撲滅〜」と題して、弊社インフラチームの取り組みを発表させていただきました。講演にご参加いただいた皆様、誠にありがとうございました。
講演資料はこちらになります。
演題にもありますとおり、Toil(苦労)を削減し運用負荷を低減するべく行ったことと、その成果物についてお話させていただきました。Toilとは、サイト・リライアビリティ・エンジニアリングの文脈で用いられる言葉です。日々の作業のうち、手作業である、繰り返されている、自動化が可能であるといった性質が強いものはToilであると言われます。私たちインフラチームは、エンジニアがToilにかける時間を減らし、チームやプロダクトに恒久的な改善を加えるための時間を増やすことで、年々規模が拡大してゆくインフラ運用の負荷を乗り越えてきました。
本講演では“サーバー構成情報管理のToil”および“サーバー構築のToil”を取り上げ、それぞれどのように削減していったかを主要なトピックとしました。以下、発表内ではお伝えしきれなかった点も含めてご説明いたします。
サーバー構成情報管理のToil
インフラチームが管理するサーバーは多数かつ多様なため、サーバー構成情報の一元的な管理が重要になります。そこで、サーバー情報が自動的に登録・更新されるデータベースと、その情報が反映されるローカルネットワーク用プライベートDNSを作成しました。
これらの機能は、各サーバーにインストールする独自実装のエージェントの働きとAWSのマネージドサービスを活用した処理フローによって実現されています。エージェントを独自実装することによって収集したい情報を柔軟に設定することができ、オンプレミス環境とクラウド環境が混在するCygamesのインフラ構成をカバーできます。また、AWSのサービスを活用することで、非同期的・スケーラブルな特性の獲得と、マネージドゆえに低い管理コストを実現できています。
サーバー構築のToil
サーバーの構築は繰り返しの作業であり、ミスを起こさないよう注意が必要な作業です。内製ツールのインストール作業などはRPM化しプライベートなリポジトリに格納しておくことで、再利用が容易になりました。加えて、サーバー構築をプロビジョニングツールで行うことで、作業の自動化・インフラのコード化が達成されました。
プロビジョニングツールは様々なものを用いてきましたが、徐々にAnsibleを使用するケースが増えてきています。記述がシンプルであることと、エージェントレスで動作することがメリットとなっています。最近では、長期運営タイトルでのPHP 5からPHP 7への移行作業などで活用しています。
おわりに
CygamesではToilの削減やサイト・リライアビリティ・エンジニアリングにご興味のある方、実践経験のある方を募集しております。最高のコンテンツを支える基盤の信頼性を高めるべく、ともに業務効率化を推進しましょう。詳細はこちらをご覧ください。