初めに
ざっくり解説です。
細かいところは気にしないでください。
あと、新環境のwebcrewのシステムすべてにこの構成が当てはまっているわけではありません。あくまで、大枠のところです。
事の発端
もともと2020年にオンプレからAWSへの移行が行われたわけですが、構成自体はそのまま移植した感じで、全く最適化がされていませんでした。
最適化というのは、AWSに合った構成にすることで設定の管理のしやすさやコストの削減などを行うことです。
例えば外部からHTTPなどでアクセスしてくる際に必要となるロードバランサーですが、オンプレ時代から使用しているBIG-IPという製品をそのまま移植していました。
本来であれば、AWSにはAWS環境のためのロードバランサーが提供されており(ELB)、"最適化"という観点では、こちらのロードバランサーに構成を変更する必要がありました。
そのため最適化された環境へのリプレースが必要でした。
また、クラウド環境への最適化とは別に、下記の理由からもOSリプレースをする必要がありました。
CentOS7のEOSL
ウェブクルーのサーバの半分程度がCentOS7で動いていますが、2024年2月でサポートが切れるということが大々的に発表されていました。
(まあ、サーバのもう半分のCentOS5系は2014年でサポートが切れているんですが。。)
そのため、OSを何か別のものにリプレースする必要がありました。
リザーブドインスタンスの期限切れ
AWSはEC2インスタンスをまとまった日数分買うとある程度値引きされるシステム(リザーブドインスタンス)というものがあるのですが、こちらの期限が2024年の2月でした。
ですので、ここまでにEC2をなるべく新しい環境に移行して再購入する分を減らそうとしていました。
構成図
これまでのwebcrewの構成
これまでのウェブクルーのWEBサイトはざっくり下の図のような構成でした。
上記でも説明しましたが、オンプレの構成をそのまま移植した感じで、
AWSの便利な新しい機能を全く使っていなかった構成でした。
新環境移行後のwebcrew
phoenixは新環境に移ったわけですが、ざっくりと下記のような構成になっています。
ロードバランサ
BIG-IPの代わりに、ALBというロードバランサを使用してロードバランシングを行っています。
また、webコンテナとappコンテナの間にNLBというロードバランサを新たに配置しています。
ALBやNLBは接続されているECSコンテナに対してずっとヘルスチェックを行っています。
ヘルスチェックとは、冗長化している2つのコンテナに対して、「生きていますか?」の信号を送ります。
返事が返ってきたらヘルスチェックはOK。ALBはそのコンテナに対してトラフィックを流します。
もしもNGが返ってきて、コンテナが異常状態になっていた場合、ALBはECSに信号を送りコンテナを再作成します。
これは、NLBであっても同様の働きをします。
特に、これまでのアーキテクチャでは、Apache⇒Tomcatのルーティングにロードバランサを用いていなかったので、tomcatが片方でも落ちるとサイトが落ちるという欠陥を持っていました。
Apache⇒Tomcat間にロードバランサを導入することで、tomcatの動作が不安定になった場合ルーティングを行わないようにしてコンテナを再作成するという作業を自動で行ってくれるようになりました。
EC2とECS
AWSにはマネージドサービスとアンマネージドサービスという概念があります。
EC2は、アンマネージドサービスで、運用の多くを自分たちで管理する必要がありました。
ソフトウェアバージョン管理なども行わなくてはいけないですし、サーバが不調になった場合は、手動で再起動なんかをしなくてはいけませんでした。(どうにか自動でやる方法もあるにはあります)
また、EC2特有の不定期の再起動なんかも必要でした。
ECSはマネージドサービスで、運用の多くをAWSが行ってくれます。
コンテナが異常状態になったときに自動で再起動してくれたりします。
マネージド証明書
ALBはACMというマネージドな証明書管理システムを持っており、これによってSSL証明書の更新も自動で行ってくれるようになりました。
2か月に一回行っている証明書の更新は、いまはほとんどGCP側のものしか残っていません。
その他
上記は、「インフラ観点での便利になったこと。」でしたが、今回のリプレース作業では、javaのバージョンをjava6からjava8に変更しており、それによる恩恵も多く受けています。
phoenixの切り替え後は実際に障害は減っていますし、java6環境のままだったら障害になっていた場面も少なくありません。
まとめ
まだまだOSリプレースは全然終わっていませんが、ウェブクルーのシステムがイマドキのシステムにアップデートされるように作業していきます。