サービスの成長を支える、AWSサーバ移行の話
こんにちは、日本フードデリバリーで「シェフコレ」の開発を担当している時實(ときざね)です。
今回は2021年末に行われた「シェフコレ」のサーバ移行についてお話ししたいと思います。
そもそもサーバとは
今回の話で出てくるサーバとは、当社が運営するシェフコレサービスを皆さんに提供しているコンピューターのことです。
普段IT業務に携わっていないとなかなかイメージしづらいと思うのですが、皆さんがインターネットでwebサイトなどを使用する時には、
皆さんが使用する端末
↓
DNSサーバ
↓
皆さんが使用する端末
↓
webサーバ
↓
皆さんが使用する端末
という順序で、指示やそれに対する返答が行われて最終的に皆さんの端末にコンテンツが表示されています。
たとえばAさんがインターネットで「シェフコレ」のサイトを開くためにリンクを押すと、DNSサーバに「シェフコレの住所(web上のシェフコレのありか)を教えてください!」という要求を行います。DNSサーバはAさんに「シェフコレの住所はここですよ」と住所を返答します。
Aさんは教えてもらった住所に行き、「ページを見せて!」とwebサーバに要求します。webサーバはAさんから要求されたコンテンツを作成及び返答します。これらの一連の流れの結果、皆さんの端末に「シェフコレ」が表示されるのです。
「シェフコレ」と一口に言っても、役割の異なる複数のサービスから成り立っています。今回は特に、【webサーバ】【データベースサーバ】に焦点をあてて、サーバ移行についてお話ししたいと思います。
移行前、サービスとしてどのような課題があったか
ー安定したサービス運営に課題
「シェフコレ」はAWSにサーバを移行する前、別の会社のクラウドサーバを使用していました。当社では「シェフコレ」以外に、「くるめし弁当」をはじめ複数のサービスを運営しているのですが、移行前これらのサービスは共通で使用しているサービスやサーバが多々あり、1つのサービスの為に設定を変更すると全てのサービスに影響する状態でした。
また、当時サーバのリソースが限られていたため、サービス規模が大きかった「くるめし弁当」に優先的にサーバを割り当てていました。その結果「シェフコレ」は1台で運用することになり、サーバの負荷が高くなるとサービス運営に支障が生じてしまう状況でした。
サーバに対して変更を加える際には現在の環境に対して直接変更する必要があり、サービスとして思い切った変更などもしづらい環境でした。
「シェフコレ」も年々サービス規模を拡大しており、そのような状態では支障がでるのも時間の問題でしたので、AWSサーバへの移行を検討しはじめました。
それ以外には、以前のサーバ環境では運用面の課題も大きかったです。当社にはまだ、インフラを専門に担当するエンジニアがいないので(絶賛募集中です!)各種サーバに変更があるときには開発エンジニアで対応する必要があり、サーバ運用に対する知識や経験が求められます。
そのような状況でリスクが少ない運用を可能とする為、AWSサーバへの移行に踏み切りました。
ー移行にはそれなりの工数と時間が必要
本格的に移行が決定したのは2019年頃ですが、新型コロナウイルスの感染拡大により一時移行プロジェクトをストップ。2021年にプロジェクトを再始動しました。当社でAWSを導入するのは初めての試みだったため、社内に知見のある者がおらず、専門のパートナー企業にも手伝ってもらいながら計画を進めていきました。
サーバ移行にあたって、具体的には、パートナーが構築した検証環境に既存環境のデータを流し込み、その環境で動くようにwebアプリケーション側を修正及び環境の調整を重ねる、という作業を幾度となく繰り返しました。
検証環境での構築で問題なく動くことが確認できたらいざ本番環境へ、検証環境と同じように構築します。そして2021年末、無事にリリースしました。
しかし、本番環境は多数のユーザーがアクセスする為、見落としていた不具合や環境構築時の設定ミスが発覚しました。それらの改修を終えて2022年1月末頃に新しいサーバ環境で安定して動くようになりました。
AWSにサーバを移行して…
ーセキュリティ面でも安心、今後の成長にも耐えうる状態へ
いくつか大きな変化はありますが、まずはAWS移行にあたって冗長化構成に変更したので、これまで以上に安定してサービス運営をすることができるようになりました。
AWSでは負荷に応じて自動的にサーバ数を増減(スケールイン/スケールアウト)でき、常に適切な状態を保つことができます。以前のサーバでは大幅なアクセス数の増加が見込まれる際には、手動でサーバのスペックを上げるなどの対応が必要でしたが、そういったことが必要なくなりました。
また、データベースサーバもAWSが提供しているサービスを利用しているので、自分たちで構築していた状態に比べると安定しています。
バージョンアップもマイナーバージョンであれば自動で行われ、セキュリティ面でも安心です。
AWSに移行した際にwebサーバをコンテナ環境に変更したことで、以前のように、使用中の環境に対して直接変更する必要がなくなりました。webサーバに対して変更する場合、新しいコンテナイメージを作成し、現在のコンテナイメージをまるっと入れ替えるイメージです。
こうすることで以前の環境を残しながら新しい開発ができるので、万が一上手くいかなくてもすぐに前の環境に戻せます。
ミドルウェアの大幅なバージョンアップや、大規模な改修なども行いやすくなりました。サービスとしても、大胆な挑戦をしやすくなり、より良いサービス運営を支える大きな一歩ではないかと思います。
ユーザーの体感として、AWSにサーバ変わったな、という目に見える変化はないのですが、全体的に「シェフコレ」サイトが軽くなったような印象は受けるかもしれませんね。
ひとまずAWS移行という大きなプロジェクトは終わりましたが、次はIT全般統制に対応するために、AWSでどのような仕組みを作っていくのかが大きな課題です。
日本フードデリバリーでは現在、一緒に働く仲間を募集中です。
気軽にお問い合わせください!
インフラエンジニアだけでなく、webエンジニアや社内SEも募集中です!
【コーポレートサイト】