0
0

More than 1 year has passed since last update.

オリジナルアプリをIaC化+データ移行

Last updated at Posted at 2022-09-30

はじめに

以前、以下のインフラ構成でオリジナルアプリをデプロイしましたが、いくつか改善などをしたく、今回別途インフラ構成をIaCで作成の上、移行をします。(Freenomで別の独自ドメインを取得)

【旧構成】
スクリーンショット 2022-09-25 10.33.49.png

【新構成】
スクリーンショット 2022-09-25 14.14.07.png

変更点

  • スマホの買い替え/MFA関連により、AWSアカウントAのrootアカウントではマネジメントコンソールにログインできない状況になってしまったため、今後は別のAWSアカウントBを利用していきたいと思い、アカウントB側でインフラ構築/アプリデプロイをして、既存データなども移行していく。
  • AWSリソースの構成管理を「CloudFormation」から「Terraform」へ変更
    別のIaC技術も学習し、違いなどを知るために今回は「Terraform」を利用。また以前、CloudFormationで構築した際のコードはきちんと管理できていなかったので、今回はGithubで管理する。
  • コスト削減のため、DBサーバはRDSではなくEC2で構築
  • 以前はWeb/APサーバ内の設定は手動で行っていたが、今回WorkサーバをEC2で作成し、そこからAnsibleで設定するようにする

Terraform

上記の【新構成】をTerraformで構築。
https://github.com/unimarist/memory_tank_terraform
「acm.tf」は以下が完了した状態で適用する。
「lb.tf」でALBとHTTP listenerを作成、「route53.tf」でゾーン,Aレコード作成
→Freenomのドメイン設定でAWS側のdns serverを指定するようにする

Ansible

Workサーバ内でAnsibleを実行し、Web/APサーバ、DBサーバの設定を実施。
https://github.com/unimarist/ansible

データ移行

  • 旧環境で実施
    Web/APサーバからmysqldumpでRDSのdumpファイルを取得
mysqldump -h [RDSのホスト名] -u [DBのusername] -p [DB名] > 出力先ファイルパス.sql
  • 新環境で実施
    上記で取得したdumpファイルをDBサーバ(EC2)に転送の上、インポートをする。
mysql -u root -p [DB名] < dumpファイル名.sql

まとめ

今回、新構成への移行を優先し、Terraform/Ansibleのベストプラクティスなるものを十分にインプットしきれていないため、時間をとって整理したいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0