프로덕션 환경
- 누군가 서비스의 프론트엔드 주소를 브라우저에 입력하면 프론트엔드 서버에 연결된 애플리케이션 로드 밸런서를 거쳐 로드 밸런서에 연결된 오토 스케일링 그룹 내의 EC2 인스턴스 중 하나에 트래픽이 전달된다.
- EC2 인스턴스 내부에서 실행 중인 프론트엔드 애플리케이션이 브라우저에서 동작할 React.js 애플리케이션을 반환하면, 사용자는 프론트엔드 웹의 메인 화면을 보게 된다.
- 사용자가 아이다와 비밀번호를 입력하고 로그인하면, 백엔드 서버의 애플리케이션 로드 밸런서를 통해 백엔드 애플리케이션에 전달된다.
- 백엔드 애플리케이션은 MySQL 서버와 통신해 적절한 데이터를 주고 받는다.
서비스 아키텍처
EC2
- EC2는 서버 컴퓨터로로, EC2에서 애플리케이션을 실행할 수 있다.
- EC2에서 애플리케이션을 실행하는 경우 EC2의 IP나 EC2가 제공하는 퍼블릭 도메인을 이용해 애플리케이션에 접근해야 한다.
라우트 53 - DNS
- 네트워크에 연결된 모든 컴퓨터는 고유한 IP 주소를 가지며, 서버는 자기 IP만 알고 있다.
- 사용자가 서버와 통신하려면 서버의 IP를 알아야하는데, 사람들이 모든 IP 주소를 일일이 기억하는 것은 힘들다.
- 그래서 IP 주소 대신 XXX.com 이라는 이름을 붙여 사람들이 IP 대신 이름으로 접근할 수 있도록 하고, 사람들이 IP 대신 이름으로 검색할 수 있도록 어떤 시스템이 이 이름을 등록한다.
- 이처럼 IP 대신 사람들이 검색할 수 있는 이름을 도메인 이름이라고 하고, 도메인 이름과 주소를 매핑해 놓은 시스템을 DNS라고 한다.
- DNS에 도메인 이름을 물어보고 IP를 가져와 통신하는 작업은 브라우저가 대신 해준다.
- 컴퓨터는 IP 말고도 DNS 서버 IP를 가지고 있으며, 이 IP는 대부분 인터넷 서비스 제공자(ISP) 회사들이 제공해 준다.
- 인터넷 서비스 제공자의 DNS 서버게 우리가 원하는 주소가 없으면, 여러 다른 DNS 서버들에게 물어봐서 최종적으로 우리가 원하는 주솔르 받아온다.
- 여기서 여러 다른 DNS 서버들 중 하나가 라우트 53
- 라우트 53을 이용해 "www.example.com"을 현재 애플리케이션이 실행 중인 EC2 인스턴스의 IP에 매핑하면, 누군가 "www.example.com"으로 접속할 때마다 애플리케이션이 실행 중인 EC2로 라우팅 된다.
애플리케이션 로드 밸런서
- 로드 (트래픽), 밸런서 (균형을 잡는다.)
- 로드 밸런서는 연결된 여러 서버의 트래픽을 균형있게 처리하도록 도와주는 시스템으로, 트래픽을 서버에 적절히 분배하는 역할
- AWS가 제공하는 로드 밸런서가 애플리케이션 로드 밸런서이며, 애플리케이션 로드 밸런서는 HTTP/HTTPS 요청을 연결된 서버로 분배한다.
오토 스케일링 그룹
- AWS 애플리케이션 로드 밸런서에 여러 인스턴스가 연결된 경우를 생각해보자.
- 연결된 인스턴스들을 AWS에서는 타깃그룹이라고 한다.
- 인스턴스 중 하나가 다운된 경우, 로드 밸런서가 다운된 인스턴스로의 트래픽을 중단하고, 서비스는 스케일 다운된 상태로 운영된다.
- 서비스를 복구하려면 EC2를 실행하고 타깃 그룹에 올리고 서비스 상태를 확인해야 하는데, 이러한 작업을 대신 해주는 것이 오토 스케일링 그룹 (ASG)
- 오토 스케일링 그룹은 자동으로 스케일해 준다는 뜻으로, min, max, desired 인스턴스 수를 정해 놓으면 ASG가 적정 인스턴스 수만큼 인스턴스를 실행시킨다.
- 또한, 트래픽의 변동에 따라 자동으로 scale in 또는 scale out 하도록 설정할 수 있다.
VPC와 서브넷
- VPC(가상 사설 네트워크)는 사용자의 AWS 계정 전용 가상 네트워크이다.
- 가상 네트워크란, 특별한 네트워크 설정을 하지 않는 이상 이 네트워크 안에서 생성되는 EC2는 외부에서 접근하지 못한다는 것을 의미한다.
- EC2는 다른 계정에서 또는 인터넷에서 접근할 수 없는 독립된 가상의 네트워크에 존재하고 VPC의 주인인 나만이 인터넷 또는 클라우드를 통해 접근할 수 있다.
- VPC 안에는 서브넷이라는 여러 쪼개진 네트워크가 존재한다.
- VPC의 한 서브넷 내에 EC2를 생성하면, 서브넷이 어떻게 설정됐느냐에 따라 서브넷 아래 EC2의사설 IP 주소가 결정된다.
일라스틱 빈스톡
위에서 언급된 모든 인프라를 대신 구축해주는 서비스가 바로 AWS 일라스틱 빈스톡
- 일라스틱 빈스톡에게 필요한 리소스들(로드 밸런서, 최소 인스턴스 개수, 데이터베이스 등)을 알려주면, 일라스틱 빈스톡이 로드 밸런서, 오토 스케일링 그룹, RDS, EC2 환경을 구축해준다.
- 우리는 구축된 EC2 환경에 애플리케이션을 실행시키기만 하면 된다.
- 일라스틱 빈스톡은 내부적으로 AWS Cloudformation이라는 서비스를 사용한다.
- 이 서비스는 JSON이나, YML 파일을 인풋으로 받는데, 이 설정 파일에 원하는 리소스와 리소스 간의 관계를 작성한다.
- 그러면 AWS 콘솔에 들어가 GUI 환경에서 환경을 생성하거나 업데이트 할 필요없이 설정 파일을 작성하는 것으로 인프라를 구축할 수 있다.
- 이렇게 파일에 코드로 인프라를 묘사하고 서비스가 이를 반영해 인프라를 구축하는 것을 IaC라고 한다.
'AWS' 카테고리의 다른 글
AWS 서버 환경 세팅 (0) | 2022.01.28 |
---|