ペライチ開発を支えるインフラの技術〜Amazon密林の奥から OpsWorksとDocker編〜
はじめに
こんにちは。株式会社ペライチ のインフラエンジニア曽根と申します。
私は 2016 年からペライチのインフラを構築、運用を担当しています。
一口にインフラと言ってもいろいろな取り組みがありますが、今日はペライチ開発のインフラ技術の中からサーバの構成管理について紹介します。
サービスを構築するときにインフラとその構成をどうするか、という考えはサービスや開発スタイルにより異なります。
ペライチもサービスや運用に合わせて変化してきました。
ペライチのサービスインは 2015 年。その初期の頃から AWS でサービスの構築をしています。
2017年までのサーバの構成管理
ペライチでは 2017 年ぐらいまで EC2 + ansible でサーバの構築と管理をしていました。
EC2 | ansible |
その後、サービスの拡大に従ってサーバ台数の増加、それに伴う管理負荷の高まりを受けて新たに OpsWorks に移行を決断しました。
OpsWorks を選定した理由はいろいろあります。
- 構成管理をAWSに寄せたかった
- 当時メインのサービス外で Ruby on Rails の導入をはじめていてrubyの知見があった
というあたりがメインでした。
今にして思えば、現在のサービスと比べて当時はサービスの規模が小さかったので、けっこうすんなり移行できた記憶があります。
まだ初期の頃に、構成管理についてしっかりとした考えを持って実行に移したことが、その後のサービス拡大を支えることが出来る理由の 1 つになったと考えています。
2017年からのサーバの構成管理
2017 年から 2022 年現在まで OpsWorks でサーバの構成管理をしています。
OpsWorks |
OpsWorks とは AWS がマネジメントして提供している chef 構成管理サービスです。
Chef(シェフ)は、同名の企業によって開発されるRubyとErlangで記述された構成管理ツールである。システム構成の「レシピ」の記述には、ピュアRubyのドメイン固有言語 (DSL)を使用する。 Chefは、サーバーの構成と保守のタスクを合理化するために使用され、Internap、Amazon EC2、Google Cloud Platform、Oracle Cloud、OpenStack、SoftLayer、Microsoft Azure、Rackspaceなどのクラウドベースのプラットフォームと統合して、自動的にプロビジョニングし、新しいマシンを構成する。 Chefには、小規模システムと大規模システムの両方に対応するソリューションが含まれており、それぞれの範囲に応じた機能と価格が設定されている。
OpsWorks での管理に移行して良かった点はいくつもありました。
- OS、アプリに流し込む環境変数をAWSコンソールで管理出来て一覧性が高い
- 同じ構成のサーバを立てるのが手軽にできる
AWS コンソール画面を活用することで運用負荷が下がるだけでなく、サービスの停止に繋がるようなミスが少なくなるという保守的な面でもうまく活用出来ていました。
しかし、ペライチのさらなる拡大により、現在の運用に合わない場面も出てきました。
サービスの加速的な進化、顧客数の増加など、ある程度の予測可能な負荷増。
ページの露出アップ(yahoo砲…)を踏まえた素早いオートスケール対応など、事業拡大局面と合わせたインフラの対応が必要です。
しかしながら今の構成管理だと以下のような課題があると考えています。
- OpsWorksでサーバを構築するとOSのインストールから始まるので時間がかかり、素早いオートスケールが難しい
- OpsWorksのchefがアップデートされない
- サービス開発のスピードはどんどんアップしている
- サービスの高速かつ多頻度デプロイにそぐわなくなってきている
2022年からの令和のサーバ構成管理
課題を解決していくための初手として、ペライチでは今後、 OpsWorks から docker コンテナサービスへの移行を検討しています。
現在エンジニアの開発環境は docker コンテナを利用しています。
そこで、サービス用のサーバも ECS Fargate などの docker コンテナを活用したサービスにして、エンジニアの開発環境からサービス用のサーバまで docker コンテナを利用したい。
手元からサービス用まで同じアーキテクチャで見通しを良くして、サービスのさらなる拡大とスピードアップを支えていきたいと計画しています。
今後も docker コンテナ活用だけでなく、加速していくペライチに合わせてインフラも加速していかなければなりません。
採用情報
現在エンジニア募集しています!
▼ 選考をご希望の方はこちら(募集職種一覧)
▼ まずはカジュアル面談をご希望の方はこちら
募集中の職種についてご興味がある方は、お気軽にお申し込みください(CTOがお会いします)
Discussion