サーバーの構成管理/構築とOSの移行
【概要】 - サーバーの構成を調査し、Ansible・Packerのコード化 - 社内で使用していたAmazonEC2インスタンスのOSを全てAmazonLinux2に移行 【担当】 チーム構成: - CTO: 1名 - エンジニア: 1名 エンジニアとして、インフラの設計,コーディング,テスト,運用/保守を担当 【使用技術】 Amazon EC2 | AWS IAM | Ansible | Packer | Nginx | Bash | Docker 【課題】 サービスの稼働に使用してきたCentOS7のサポートが2024年6月末に終了することが判明し、サーバーのOSを移行する必要があったが、サーバーの設定を把握しているエンジニアがおらず着手が困難な状況だった 【取り組み】 - サーバー設定を調査、Ansible・Packerのコードに落とし込み、インフラをコード化 - サーバーOSの移行先としてAmazonLinux2を選定し、社内の全サーバーのOSを移行 【工夫した点】 - 移行先としては、CentOSプロジェクトそのものが終了すること・クラウドインフラとしてAWS以外を使用する予定がないこと・AWSのサポート・マネージドサービスの恩恵を受けやすいことを鑑み、AmazonLinux2を選定 - インフラのコード化の過程で、環境ごとにライブラリのpathなどの差分があった箇所を統一。必要があればアプリケーション側のコードも変更 - 従来はサーバー内の環境変数にAWSの認証情報を記述していたが、よりセキュアにするため、EC2インスタンスにIAMロールをアタッチする運用へ変更 - マシンイメージにnode_modulesやRailsのgem等インストールに時間のかかるライブラリをあらかじめインストールしておき、デプロイタスクの時間を短縮 - Dockerを使用してAnsibleとPackerの両方が実行可能なUbuntuイメージを構築し、タスク実行環境構築を容易化 【成果】 - インフラのコード化により、設定の把握・不具合原因の切り分け・ライブラリのバージョンアップを容易化 - ライブラリの事前インストールにより、本番APIサーバーのオートスケーリング時のデプロイ時間を10分から5分に短縮し、素早い負荷対策を実現