EC2(Ealstic Compute Cloud): AWS에서 제공하는 서버 컴퓨터로서 로컬 환경에서 애플리케이션을 실행하듯이 EC2에서 애플리케이션을 실행할 수 있음
로컬환경에서 애플리케이션을 실행하면 localhost:8080 등으로 애플리케이션에 접근했지만, EC2에서 애플리케이션을 실행하는 경우 EC2의 IP나 EC2가 제공하는 퍼블릭 도메인을 이용해 애플리케이션에 접근해야함

위의 그림과 같이 프론트엔드 서버와 백엔드 서버는 각각 IP 주소를 갖고 있고 각 애플리케이션은 기본 포트인 80포트에서 실행된다고 가정할 때,
localhost:8080/api 대신 128.29.30.2/api를 이용해 REST API를 사용할 수 있음
하지만 IP 주소를 사이트 주소로 사용할 수 없으므로 DNS가 필요함
DNS(Domain Name Service): 사용자가 브라우저에 검색할 수 있도록 도메인 이름과 IP주소를 매핑해 놓은 시스템
Route 53: AWS에서 제공하는 DNS
DNS에 도메인 이름을 검색하여 IP 주소를 가져와 통신하는 작업은 아래 그림과 같이 브라우저가 대신 해줌

Route 53을 이용해 도메인 이름을 현재 애플리케이션이 실행 중인 EC2 인스턴스의 IP에 매핑할 수 있고,
사용자가 도메인 이름으로 접속할 때마다 애플리케이션이 실행 중인 EC2로 라우팅 됨
애플리케이션 로드 밸런서(Load Balancer): AWS에서 제공하는 로드 밸런서로, HTTP/HTTPS 요청을 연결된 서버로 분배하여 트래픽을 균형있게 처리하도록 도와줌

위의 그림처럼 두개의 EC2 인스턴스가 공유하고 있는 IP가 있고, 로드 밸런서는 IP를 공유하고 있는 서버에게 트래픽을 분배함
타깃 그룹(Target Group): 애플리케이션 로드 밸런서에 연결되어 있는 인스턴스들
ASG(Auto Scaling Group): 자동으로 스케일 되는 인스턴스들 이를 통해 자동으로 스케일링이 가능한 서비스를 구축할 수 있음
ASG에 최소(min), 최대(max), 적정(desire) 인스턴스 수를 정하면 ASG가 적정 인스턴스 수만큼 인스턴스를 실행시킴
만약 인스턴스가 다운되면 로드 밸런서가 ASG에게 다운된 인스턴스를 알리고 ASG가 다운된 인스턴스를 제거 후 새 인스턴스를 실행시킴
트래픽의 변동에 따라 자동으로 서버 증설(scale in) 또는 서버 수축(scale out)하도록 설정할 수 있음

VPC(Virtual Private Cloud): 사용자의 AWS 계정 전용 가상 네트워크
가상 네트워크는 사용자가 특별한 네트워크 설정을 하지 않는 이상 이 네트워크 안에서 생성되는 EC2는 외부에서 접근하지 못 함
VPC 안에는 서브넷(subnet)들이 존재하는데, VPC의 한 서브넷 내에 EC2 서버를 생성함
서브넷이 어떻게 설정되었느냐에 따라 서브넷 아래 EC2의 사설 IP 주소가 결정됨

Elastic Beanstalk: AWS에서 제공하는 서버 배포 환경 구축 서비스
엘라스틱 빈스톡에 필요한 리소스(로드 밸런서, 최소 인스턴스 개수, 데이터베이스 등)들을 알려주면 엘라스틱 빈스톡이 로드 밸런서, ASG, RDS, EC2 환경을 구축하고 EC2에 애플리케이션을 대신 실행해줌