自社サービスで Azure App Service から Azure Kubernetes Service に移行した話 vol.3

こんにちは。 Azure Cloud Solution Architect の秋山です。 今回は前回に引き続き弊社の Mamoru Biz で k8s に移行した話について書きます。

移行をどのように進めたかについて書きます。 まずは移行のスコープの検討です。

移行の進め方

今回の移行では Azure インフラの置き換えが主であり、例えばアプリケーションが動作している Docker コンテナについてはこれまでのものをそのまま k8s 上で動かすことにしました。 (Mamoru Biz では Docker イメージを管理しているのは基本的にアプリケーションエンジニアです。)

これは、できる限りインフラエンジニアがコントロール可能な範囲で移行を進めるための措置です。 (実際には k8s 上で動くようになった後に App Service 向けにカスタマイズしていた Docker コンテナを修正する、ということも追って対応しました。)

移行のスコープ

移行のメインターゲットは App Service ですが、 AKS(k8s) で代替可能な機能は置き換えることを計画していました。 Vol.1 の記事 で書いたジョブ実行もそうです。

ジョブ実行は Container Instance 以外にも、Logic App の HTTP Request を使って、管理者用 Web API を実行する、というジョブもありました。 こういった機能についても、開発者自身が自由に作成できることが望ましいため、移行対象です。

最大のスコープを考えたところで、実際に移行を進めるときには パレートの法則 に従い、主だった部分を最初のリリースのスコープにしました。 このスコープはプロジェクトを進める間も微調整を行い、検討していたよりもより小さいスコープで最初のリリースを迎えることになりました。

結果からすれば移行時のトラブルは特に発生しなかったのですが、トラブル発生時に問題を最小化するためにも、小さい単位で何度もリリースするやり方は適切だったと思います。

k8s migration scope

Azure インフラ環境構築

環境構築にあたってはこの移行プロジェクト以前から Terraform を使い、開発/ステージング/本番の3環境で差分を極力発生させないように対応しています。

これは 「(開発環境では問題なかったのに)ステージング環境でアプリケーションがデータベースにアクセスできない。ファイヤーウォール設定が不足している」 というような問題を防ぐための措置です。

Terraform の実行環境としては Terraform Cloud を利用しています。 全体的に満足していて、一つ取り上げると Access Control 機能が便利です。 Mamoru Biz ではインフラエンジニアの Terraform の習熟度や環境の把握度合いに合わせて、 terraform apply を実行可能な環境を制限しています。

DevOps 環境の整備

インフラの DevOps については先に触れましたが、 k8s レイヤーの DevOps 環境について、このプロジェクトを通じて整備が必要でした。

ちなみに App Service ではコンテナの切り替えにはサポートされている機能をそのまま利用していました。 参考: Azure App Service でのカスタム コンテナーを使用した継続的配置 このあたりが手が行き届いていてありがたいですね。

k8s レイヤーについては GitHub Actions を利用しました。 k8s manifests の変更を検知し、 AKS に適用する、というものです。

k8s deploy

デプロイには Helm を利用しています。

DevOps 環境を整備することでリリースに困らないようになりましたが、この仕組みは App Service 時代のデプロイに比べて、まだオペレーション面、速度面ともに改善が望まれます。

まとめ

ここまで3記事に分けて、自社サービスの Mamoru Biz を App Service から AKS(k8s) に移行したプロジェクトについて紹介しました。 移行自体は終えましたが、お客様の “名もなき仕事を減らす” サービスをより高いレベルで提供できるように、引き続き小さい改善を積み重ねて活動していきます。

最後になりますが、

Colorkrew では自社サービスの開発と受託ビジネスの両方を経験できる環境があります。 もし弊社にご興味がある方がいらっしゃいましたら、 採用ページ からエントリーしてみてください。

また、コンテナ構成のシステムの導入支援についてご興味がある方がある方は以下からお問い合わせください。 サーバーレス/コンテナ導入支援 | くらまね