パーソルキャリア株式会社 / インフラエンジニア
クラウド移行
## プロジェクトの目的・背景 親会社への統合に伴い以下を実施しました。 - AWSからGoogle Cloudへの移行 - インフラコストの最適化 - システムの可用性向上・セキュリティの強化 - 開発者体験(DX)の改善 ## プロジェクト規模・体制 - 自社エンジニア3名と親会社側が10名程度 ## 担当業務・役割 - インフラ移行の主担当として以下を担当 - インフラ設計・移行計画の立案と実行 - CI/CDパイプラインの刷新 - セキュリティ設計 - コスト最適化 ## 使用技術 - Google Cloud(GCLB・Cloud IAP・Cloud CDN・Cloud Storage・Direct VPC Egress・CloudRun) - Terraform・Trivy・tflint・tfaction・tfcmt - GitHub Actions - k6 ## 具体的な取り組み 自社WebアプリケーションをAWSからGoogle Cloudにリプレイスするプロジェクトのインフラ移行を担当しました。また、インフラ移行に合わせて以下の改善を行いました。 1. ネットワーク・セキュリティ強化 - ネットワークの統廃合・適切なサブネット分離 - 社内向けサービスの認証追加やHTTPS化 2. CI/CD改善 - CIをGitHub Actionsに移行し、月間実行時間を約50時間削減・月間コストを75%削減 - CDをデプロイ用chatbotからGitHub Actionsに移行し、デプロイの高速化と安定性を実現(デプロイ時間を15分→7分に短縮) 3. インフラコスト削減施策 - 開発環境のロードバランサーを1つにまとめる - UptimeChecksを使いCloudRunを擬似的に常時稼働させ、コスト最適化とコールドスタートを回避 - 過剰気味だったDB・Cacheのスペックを最適化 4. インフラのモダン化 - 一部EC2で動いているものをコンテナ化してCloudRunに移行 - 社内向けサービスのセキュリティ向上のためCloud IAPによるSSO認証を設定 ## 工夫した点 1. CDの高速化・民主化 既存のCDはAWSのCodeシリーズに密結合になっており、保守性が低い・デプロイ処理が遅いという課題がありました。 [保守性が低い]に対しては、GitHub Actionsというデファクトなサービスへの移行・デプロイの流れを開発メンバーに共有することで基本的に誰でもメンテナンスできるようにしました。 [デプロイ処理が遅い]の改善のために、まずはコンテナイメージのビルド高速化を行いましたが、自社のWebアプリケーションの構成上、コンテナイメージのビルドキャッシュが使えない状況でのライブラリ(gem)のインストール処理に時間がかかるということが判明しました。(2vCPUのVMで20分以上かかる) これを回避するために、以下の手法を使いました。 - Dockerfileを使ったビルドのライブラリインストール処理でcache-mountを使う - ビルドで利用したcache-mountをGitHub Actionsのcacheに保存し使い回す これにより、ライブラリの更新があった場合でもコンテナイメージのビルド処理が2~4分程度で終わるようになりました。 2. デプロイ用chatbotの廃止 これまで検証環境へのデプロイには、Slackに配置したchatbotを利用していました。 しかし、chatbotの不安定さや保守性に課題があったため、クラウド移行を期にchatbotを廃止しCI/CDをすべてGitHub Actionsで行うようにしました。 新しく作成したCDの仕組みでは、誰でも手軽にデプロイできるようにするためGitHubのラベルを利用して開発環境にデプロイするワークフローを構築しました。 結果として、デプロイの安定化を実現することができ、開発メンバーからDXが大幅に向上したとの声をいただけました。 3. CloudRunのコスト削減 開発者ごとに専用のCloudRun環境を簡単に作成できるように設定できるようにTerraformを整備しました。 また、開発メンバー(約10名)ごとのCloudRun環境のコスト削減とDX向上を目指すため、UptimeChecksを使い定期リクエストを送り常にコンテナを起動状態に保つようにしました。 開発環境では約30ほどのCloudRunサービスが常時稼働していますが、コールドスタートを抑えつつ月のコストを$100程度に抑えることができました。 ## 成果 当初予定していたスケジュール通りにクラウド移行を完了させ、以下を達成しました。 - コスト削減 - よりクラウドネイティブな構成を実現し、インフラコストを移行前から約50%以上削減しました。 - パフォーマンス向上 - Googleサーチコンソールのレスポンスタイムを500ms台から300ms台まで改善することができました。 - DX向上 - CI/CDの安定性と高速化を実現し、DXを向上させることができました。 ## 得られた知見・教訓 - チームワークと信頼関係の構築 - 複数組織が関わるプロジェクトを円滑に進めるには、早期のスコープ定義と責任範囲の明確化が重要だと実感した - プロジェクトマネジメントの知見 - 大規模なインフラ移行では、技術面だけでなく関係者間の合意形成(移行スケジュールのフィックスや統合テスト時の協力など)が成功には重要だと実感した