티스토리 뷰
서비스 오픈을 준비하면서 내가 가장 걱정했던 것인 AWS에 서버 구축하기를 마쳐서 그 과정을 정리해본다. 우선 구축하려는 아키텍처는 아래와 같았다.
EC2 인스턴스 만들기
EC2 인스턴스를 만드는 과정은 다른 블로그에 잘 나와 있으므로 생략한다. 서버1을 먼저 인스턴스 생성으로 만든 후에 서버1을 이미지화하여 템플릿 생성 후 템플릿으로 인스턴스를 복제하여 서버2를 생성했다. 이때, 서버1을 접속하기 위한 .pem 파일을 함께 사용할 수 있었다. 만약 각 서버마다 다른 .pem 파일로 관리하기를 원한다면 새로 만들어주는 수 밖에 없는 듯하다.
RDS로 Master-Slave 만들기
RDS로 DB를 하나 만든 후, 그 DB를 선택하고 읽기 전용 복제본 생성을 선택한다. 이렇게 되면 Master로는 CRUD가 전부 가능하지만, 읽기 전용 복제본(Slave)로는 Select만 가능해진다. 그리고 Master에 생긴 변화를 바로 반영하는 것을 확인할 수 있었다. Slave를 생성하면 엔드포인트 정보가 뜨는데 이 엔드포인트 정보로 애플리케이션 단에서 Slave는 이 엔드포인트로 설정해주면 된다.
후이즈에서 구매한 도메인 연결하기
이미 후이즈에서 구매한 도메인이 있어서 그 도메인에 연결하는 과정을 거쳐야 했다. 그냥 외부 도메인 연결만 하는 건 해본 경험이 있긴 한데 이 도메인을 LB와 붙여야 해서 이 과정에서 조금 헤맸다. 간단하게 정리해보자면, Route 53에서 호스팅 영역을 생성 -> NS 유형의 정보를 도메인 구입처에서 네임서버 변경에 입력 -> SSL 인증서 신청 -> 인증서 발급 확인 및 DNS 변경 확인 -> LB 생성 -> Route 53에서 레코드 생성을 눌러 LB와 연결 이런 과정이다.
후이즈에서 네임서버를 변경하고 아래 명령어로 변경되었는지 확인했다.
nslookup example.com
그리고 변경된 것을 확인할 수 있었다.
LB 생성하기
사실 AWS를 사용하면서 EC2와 RDS, Route 53만 조금 만져봤을 뿐, LB를 생성하는 건 처음이었다. 나는 위와 같이 서버로의 HTTP 요청을 분산하고 싶은 것이라 Application Load Balancer를 생성했다. 이때, Listener를 잘 생성해주어야 한다. 예를 들어, 내가 애플리케이션에서 사용하는 포트가 80이 아니라면 Target Group을 설정할 때 그 포트를 입력해주어야 한다. 그리고 리스너를 생성할 때에는 80, 443(HTTPS)을 지정해줘야 로드밸런서에서 내가 애플리케이션에서 사용하는 포트로 요청을 보낼 수 있다. 그리고 너무나 당연하게도 로드밸런서에 연결된 보안 그룹에서 80, 443에 대한 규칙을 설정해줘야 한다.
위 과정을 거쳐 도메인을 입력했을 때 잘 접속되는 것을 확인할 수 있었다. 도메인을 연결하고 LB와 연결하는 부분이 조금 어렵게 느껴질 수도 있지만 내가 생각해서 정리한 과정은 아래와 같다.(아래 과정 중 보안 그룹 설정은 빼놓았다.)
- 도메인 구입처에서 네임서버 변경 = 이 도메인으로 요청시 AWS의 DNS로 요청하도록 변경하는 것
- AWS 네임서버에서는 유형이 A(alias, 별칭)인 레코드를 찾아 트래픽 라우팅 대상으로 요청 전달(그래서 트래픽 라우팅 대상이 로드밸런서로 설정이 되어 있어야 한다.)
- 로드밸런서는 요청받은 포트에 따라(80 or 443) 대상 그룹을 찾고, 그 대상의 포트(내가 애플리케이션에서 사용하는 포트)로 요청을 전달
'업무 경험 및 성과 > 서비스 설계부터 오픈까지' 카테고리의 다른 글
suneditor + multer 이미지 업로드 구현하기 (0) | 2024.08.01 |
---|---|
AWS RDS에서 Unable to connect to the database(lock)이 발생했다! (0) | 2024.07.30 |
Redis를 사용할 것인가 말 것인가 하는 고민 (0) | 2024.07.01 |
Prometheus + Grafana로 모니터링 구축 (0) | 2024.06.02 |
계정과목의 금액 업데이트에서 발생한 동시성 문제를 어떻게 해결할 것인가? (0) | 2024.05.26 |