준비물 : 1. 자신 소유의 도메인
2. AWS, Azure, GCP 계정
3. 테라폼 사용가능한 WSL2 (EC2같은 다른 리눅스도 가능하다. Ubuntu 18.04 or 20.04 추천)
멀티 클라우드
•
멀티 클라우드는 2개 이상의 클라우드 플랫폼에서 하나의 서비스를 운영하는 것
•
한가지 플랫폼에 Lock-In 되는 것을 방지할 수 있다.
•
여러 플랫폼의 경쟁력있는 서비스를 골라서 사용할 수 있다.
•
정말 만약의 사태에 한쪽 클라우드 플랫폼 전체적인 장애 발생시 더 높은 가용성을 제공할 수 있다.
시작 전
•
AWS는 많이 사용해보았지만 Azure와 Gcp는 이번이 처음 사용이다.
•
GCP 회원가입 안 넘어가질 때
시행착오 : 이번 실습을 진행하면서 겪은 시행착오와 해결방법등을 적어두었다. 본문 내용들은 해결이 완료된 후 수정된 내용들이다.
•
간단한 멀티클라우드 아키텍처 - 사용자는 도메인에 접속하면 Cloudflare가 각 플랫폼의 인스턴스로 연결 해 준다.
Terraform 환경
•
작업 디렉터리 : WSL2 내부의 /web_infra/.
•
Terraform 버전 : v0.13.0 (0.14.5 버전은 실습 에러남) → terraform 0.13upgrade .명령으로 업그레이드
•
Terraform 버전 변경 : tfswitch 프로그램 사용
버전 변경 안될 때
Cloudflare 가입 및 도메인 추가
1. Cloudflare 가입하기
2. 구매한 도메인의 NS 변경 (가비아 기준)
3. 도메인 - Cloudflare 연결 (레코드 추가)
4. Page Rule 설정을 통한 실제 페이지에 연결
5. API Keys - Cloudflare
AWS에 WEB배포 (Terraform)
1. 공통 변수에 대한 파일 생성 (common-variables.tf)
2. AWS 변수 선언 및 설정값 추가 (aws-variables.tf)
3. AWS 인증정보 파일 생성 (terraform.tfvars)
4. EC2에 Apache 설치 및 index.html 구성을 위한 파일 생성 (aws-user-data.sh)
5. VPC, 네트워크, EC2 및 보안그룹 구성 파일 생성 (aws-main.tf)
•
AWS Terraform 배포 확인됨
Azure에 WEB배포 (Terraform)
1. Azure CLI 환경 구성
2. Azure 변수 선언 및 설정값 추가 (azure-variables.tf)
3. VM에 Apache 설치 및 index.html 구성을 위한 파일 생성 (azure-user-data.sh)
4. Virtual Network, Azure 네트워크, VM 및 보안그룹 구성 (azure-main.tf)
GCP에 WEB배포 (Terraform)
1. GCP 변수 선언 및 설정값 추가 (gcp-variables.tf)
2. GCP 인증정보 발급
3. GCP 인증정보 파일 생성 (terraform.tfvars)
4. Compute Engine에 Apache 설치 및 index.html 구성을 위한 파일 생성 (gcp-user-data.sh)
5. VPC, GCP 네트워크, Compute Engine 및 보안그룹 구성 (gcp-main.tf)
Cloudflare
1. Cloudflare 자격 증명 정보 추가 (terraform.tfvars)
2. Provider를 초기화하고 www 및 Root DNS 레코드를 생성 (cloudflare-dns.tf)
실행 & 결과
terraform init명령 실행
•
terraform plan으로 확인 후 terraform apply로 프로비저닝
프로비저닝 및 확인
리소스 삭제
결론
•
AWS, Azure, GCP를 통해 웹서버 인스턴스의 멀티클라우드 실습을 성공적으로 마쳤다. 단순하게 서버의 인스턴스를 멀티클라우딩하여 가용성을 극대화하는 것을 넘어, 인프라와 플랫폼을 나누거나 플랫폼마다 제공하는 다양한 강력한 서비스를 섞어서 사용하는 것에 멀티클라우딩의 목적이 있을 것 같다.
•
또한 대부분의 기업의 최종 목표가 멀티클라우드 환경이라고는 하지만 모든 전략에 장단점이 있듯이 어려운 설계 및 관리를 비롯한 단점 또한 있을것이다.