티스토리 뷰
이전 글들에서 백엔드 소스를 하나의 EC2에서 실행하여 서비스하였습니다. 하지만 요청이 많아질 경우 부하가 심해질 수 있고 EC2의 IP를 프론트로 노출하는 것은 보안상 좋지 않은 방법으로 EC2 앞에 로드밸런서를 넣어 로드밸런서가 여러 EC2들에게 요청을 나눌 수 있도록 하고 외부로도 로드밸러서의 DNS 이름을 노출하는 방식으로 수정해보겠습니다.
먼저, 현재 구조는 다음과 같습니다.
1. 다른 가용 영역에 별도의 서브넷 생성
기존 EC2는 2a 가용영역에 생성했기 때문에 별도의 다른 가용 영역(2c)을 선택하여 퍼블릭 서브넷을 구성합니다.
2. 기존 EC2 인스턴스를 이미지로 만들기
기존 EC2와 같은 새로운 EC2를 생성하기 위해 먼저 기존 EC2를 이미지로 만듭니다.
3. AMI로 새로운 EC2 인스턴스 생성
위에서 생성한 이미지를 통해 새로운 EC2 인스턴스를 생성합니다.
4. 대상 그룹 생성
Elastic Load Balancer를 생성하기 전 먼저 ELB에서 사용할 대상 그룹을 생성합니다.
기존 운영중인 EC2와 새로 생성한 EC2로 요청을 전달할 것이기 때문에 대상 유형은 인스턴스로 선택합니다.
이후 대상 그룹 이름을 작성하고 프로토콜과 포트를 지정합니다. 현재 백엔드 서버는 9090 포트에서 운영되고 있기 때문에 HTTP 요청 포트를 9090으로 지정합니다. 그리고 두 EC2들이 있는 VPC를 선택합니다.
마지막으로 두 EC2들을 선택하여 대상을 등록합니다.
5. ALB 생성
ALB를 생성하기 전 ALB를 위한 보안 그룹을 생성합니다. CloudFront에서 HTTP 80 포트로 요청을 보내기 때문에 80 포트를 인바운드 규칙에 추가합니다.
현재 구성 상 CloudFront에서 EC2 쪽으로 HTTP 방식의 80 포트로 접속을 하고 있습니다. 따라서 ELB 중에서 Application Load Balancer를 생성합니다.
6. Front-end 소스 수정
프론트엔드 소스에서 백엔드로 요청을 보낼 때 기존에는 하나의 EC2의 IP를 적어 직접 요청을 보냈습니다. 이 부분을 EC2의 IP가 아닌 로드 밸런서의 DNS 이름으로 변경해줍니다.
import axios from "axios";
export default axios.create({
baseURL: "http://ALB_DNS_이름/api",
headers: {
"Content-Type": "application/json"
}
})
소스를 수정하고 새로 배포를 진행합니다. 하지만 CloudFront의 경우 캐시가 남아있어 바로 수정된 내용이 적용되지 않을 수 있습니다. 이때는 아래와 같이 CloudFront의 배포를 선택하고 무효화를 생성한 뒤, 다시 접속하면 변경된 내용을 확인할 수 있습니다.
브라우저에 http://CloudFront_배포_도메인명/index.html 로 접속하면 기존에 서비스되던 화면을 확인할 수 있습니다.
지금까지 내용을 구조화하여 살펴보면 다음과 같습니다.
기존 구조에서는 백엔드 소스 또한 CI/CD가 연결되어 있었는데 지금은 연결되어 있지 않습니다. CodeDeploy를 수정하여 로드 밸런서로 변경된 소스를 자동 배포할 수 있도록 하는 방법을 알아보겠습니다. 또한, 수동으로 CloudFront의 무효화를 해주던 것을 람다 함수를 통해 자동으로 실행되도록 만들어 보겠습니다.
'AWS' 카테고리의 다른 글
[AWS Lambda] CloudFront Invalid Cache 자동화 (0) | 2021.11.12 |
---|---|
[AWS Code###] 여러 EC2에 CodeDeploy로 자동 배포하기 (0) | 2021.11.12 |
[AWS RDS] RDS를 private subnet으로 옮기기 (0) | 2021.11.11 |
[AWS Code###] CodePipeline으로 Node + express 프로젝트 배포 (0) | 2021.11.10 |
[AWS CloudFront] CDN 서비스로 Front-end 서비스 하기 (0) | 2021.11.10 |
- Total
- Today
- Yesterday
- ionic
- Dynamic Programming
- CodeCommit
- sort
- CodePipeline
- programmers
- Baekjoon
- java
- Combination
- ECR
- EC2
- CodeDeploy
- 에라토스테네스의 체
- cloudfront
- string
- 순열
- 수학
- SWIFT
- array
- 조합
- permutation
- 소수
- search
- 프로그래머스
- BFS
- spring
- AWS
- map
- DFS
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |