概要
AWSを中心に、GitHub ActionsやDockerを絡めて、様々なインフラ構成の構築方法を各記事にまとめてみました。
背景
普段はバックエンドの開発を中心に行っています。
これまではインフラを自分の手で構築するような経験がありませんでした。
そこで、クラウド・CI/CD・コンテナといった、開発の基盤となる技術の知見を得ようと学習を始めた次第です。
ここでは、学習した内容を記事に落とし込むことで、自身の理解を深めつつ、備忘録として残せればと考えています。
各記事
EC2 + GitHub Actions
使用技術:AWS(ELB, EC2)、GitHub Actionsなど
シンプルにWebサーバを構築してアプリケーションを動かす構成に、GitHub Actionsを組み込んでいます。
📝EC2を使用したWebサーバ構築、GitHub Actionsを使用したビルド・デプロイ自動化の方法を学びました
ECS + GitHub Actions
コンテナでアプリケーションを動かす構成に、GitHub Actionsを組み込んでいます。
使用技術:AWS(ELB, ECS, ECR)、GitHub Actions、Dockerなど
📝Dockerを使用したアプリケーションのコンテナ化、ECS, ECRを使用したサービスの構築、GitHub Actionsを使用したビルド・デプロイ自動化の方法を学びました
EC2 + RDS
使用技術:AWS(ELB, EC2, RDS)など
Webサーバ・DBサーバを構築し、DBと連携したアプリケーションを動かす構成です。
📝RDSを使用したDBサーバの構築、Webサーバとの連携方法を学びました
ECS + RDS
使用技術:AWS(ELB, ECS, ECR, ASM, RDS)、Dockerなど
DBサーバを構築し、コンテナでDBと連携したアプリケーションを動かす構成です。
📝RDSを使用したDBサーバの構築、ECSサービスとの連携、ASMを使用したシークレットの管理方法を学びました
Route 53 + ACM
使用技術:AWS(Route 53, ACM, ELB, EC2)など
EC2 + GitHub Actionsの記事で構築した構成をベースに、独自ドメイン・HTTPS通信を実現する構成です。
📝Route 53を使用したドメイン管理、ACMを使用したSSL証明書の発行方法を学びました
感想
①各技術の目的がイメージできた
例えば、GitHub Actionsを使用する構成において、初めは手動でのデプロイを行うようにしました。
その後、GitHub Actionsによりパイプラインを構築することで、CI/CDツールが達成したい目的がよりイメージできました。
他にも、EC2で構築したWebサーバでアプリケーションを動かす場合は、必要なコンポーネントのインストールなどを手動で行う必要がありましたが、
ECSを使ってコンテナ化アプリを動かす経験をすることで、先ほどのような作業が不要となり、結果的にコンテナ化技術によるパッケージ化の恩恵を肌で感じることができました。
②関心の分離を体感できた
これはAWSに限らず他のクラウドサービスでも、さらに言えばソフトウェア設計全般にも当てはまることだと思いますが、
AWSの各サービスが担当する領域が、分かりやすく分離されていることを体感しました。
例えば、ルーティングに関する設定はELBを、またはDBに関する設定はRDSを見ればよく、これらと連携するのがEC2でもECSであっても、接続部分が変わるだけで基本的な考えや設定は同じで済むという点です。
このように、あるサービスについて一度使い方を分かってしまえば、他のサービスと組み合わせる時に転用しやすいことを肌で感じました。
当たり前のことかもしれませんが、「インフラよく分からない」の状態からこのイメージを持てたことは、インフラやクラウドに対するハードルを下げることに繋がりました。
参考
AWS
GitHub Actions
Docker