앞서 서버리스로 웹 애플리케이션을 구축하는 과정을 간단히 살펴보았었다. 이번엔 서버를 직접 생성해서 웹 애플리케이션을 구축하는 과정에 대해서 실습해보고 그 과정에 대해서 학습해보고자 한다. 이를 위해 aws의 EC2와  VPC, ELB를 활용할 것이며 아래와 같은 순서로 구축해 나갈 예정이다.

  • 네트워크 구성
    • vpc 생성
    • 추가 서브넷 생성
    • 라우팅 테이블 편집
    • 보안 그룹 생성
  • 웹 서버 생성
    • 인스턴스 생성
    • AMI 생성
    • AMI 기반 인스턴스 생성
  • 로드 밸런서 구성
    • 로드 밸런서 생성

네트워크 구성

 

VPC 생성

vpc를 이용하면 사용자가 정의한 가상의 네트워크 공간 안에서 aws 리소스를 시작할 수 있다. VPC 생성 마법사를 사용하면 손쉽게 vpc를 생성할 수 있다. 지금은 프라이빗 서브넷 없이 퍼블릭 서브넷 1개만을 생성할 것이기 때문에 이에 맞게 설정해서 생성을 진행하였다. 
CIDR 주소 범위는 /16 넷마스크 ~ /24 넷 마스크 사이의 범위에서 본인이 원하는 주소의 수에 맞게 적절히 지정하면 된다.
생성 완료된 vpc와 서브넷의 이름이 길어 이를 보기 편하게 수정하였다.

 

현재까지 완료된 아키텍처의 구성은 다음과 같다. 고가용성을 위해선 다중 가용 영역에 서비스를 배포하는 것이 중요하다. 이를 위해 생성한 서브넷이 위치한 가용 영역 외에 다른 가용 영역인 C에 서브넷을 추가해 가용성을 높여보자.

 

서브넷 생성

subnet 섹션으로 이동 후 생성해둔 vpc내에 서브넷을 아래와 같은 설정값으로 생성하였다. 

현재까지 생성한 아키텍처의 구성도는 다음과 같다.

 

라우팅 테이블 편집

라우팅 테이블에는 서브넷 또는 게이트 웨이의 네트워크 트래픽이 전송되는 위치를 결정하는데 사용되는 라우팅이라는 규칙 집합이 포함되어 있다. 기본 라우팅 테이블은 vpc와 함께 자동으로 생성되는 라우팅 테이블이다. 다른 라우팅 테이블과 명시적으로 연결되지 않은 모든 서브넷의 라우팅을 제어하는 역할을 한다. 사용자 지정 라우팅 테이블은 기본 라우팅 테이블 외에 사용자가 생성한 라우팅 테이블이다. 위에서 생성한 서브넷C을 사용자 지정 라우팅 테이블과 연결되게끔 편집해보자.

서브넷C를 선택 후 라우팅 테이블 편집 버튼을 눌러 편집 화면으로 들어가준다. 변경 전 라우트 테이블은 인터넷 게이트웨이와 연결이 되어있지 않은 상태이므로 vpc를 생성하면서 생긴 라우트 테이블과 연결하여 IGW와의 연결을 시켜주었다. 해당 과정을 마친 현재의 아키텍처 구성도는 다음과 같다.

생성한 서브넷들에 라우팅 테이블을 모두 연결시켰으니 이제 보안 그룹을 생성해보자.

 

보안 그룹 생성

보안 그룹은 인스턴스에 대한 인바운드 및 아운바운드 트래픽을 제어하는 가상 방화벽 역할을 한다.
security 섹션의 Security Groups로 들어가 새로운 보안 그룹을 생성할 수 있다. 보안 그룹의 이름과 설명은 목적에 맞게끔 작성을 해주고 vpc는 이전에 생성해 둔 것을 선택해준다.

다음으로는 인바운드와 아웃바인드 규칙을 지정해줄 차례이다. 인바운드 규칙은 외부에서 내부로의 흐름 즉, 클라이언트가 서버로 접근할 때 적용되는 규칙이다. 인바운드 규칙은 모든 포트를 닫아두고 시작하는 것을 전제로 한다. 이는 기본적으로 발생하는 모든 보안 이슈가 외부에서 내부로의 접근 과정에서 발생하기 때문이다.
이때 허용할 유형과 소스 등을 지정할 수 있는데 현재는 ssh와 http를 나의 IP 주소에 한해서 접근할 수 있도록 지정하였다.

아웃바운드 규칙은 반대로 내부에서 외부로 나가는 흐름에 적용되는 규칙이다. 인바운드 규칙과는 반대로 모든 트래픽을 허용하는 것을 전제로 한다. 해당 규칙은 수정하지 않고 기본 세팅 되어있는 값을 그대로 사용하였다. 
EC2를 생성하여 위에서 만든 보안 그룹과 연결 하는 과정을 다음 게시물에서 다룰 예정이다.