Amazon EC2 Auto Scaling
- 어플리케이션이 변화하는 트래픽 요구를 처리할 수 있는 적정 용량을 갖추도록 지원
- 여러 개의 가용 영역을 사용하도록 오토 스케일링을 구성할 경우 하나의 가용 영역이 사용 불가 상태가 되면 다른 가용 영역에서 새 인스턴스를 시작하여 이에 대처할 수 있음
- 수요 변화에 따라 용량을 동적으로 조정하므로 사용한 EC2 인스턴스에 대해서만 비용을 지불
- 오토 스케일링 그룹은 리전 내 한 개 이상의 가용 영역에 속하는 EC2 인스턴스를 포함할 수 있음
- 오토 스케일링 그룹이 활성화된 가용 영역 간에 인스턴스를 고르게 분산하려고 시도
- 먼저 인스턴스 수가 가장 적은 가용영역에서 새 인스턴스를 시작하려고 시도하고 실패하는 경우 다른 가용 영역에서 인스턴스 시작 시도
오토 스케일링 구성 요소
- 시작 템플릿: 그룹에서 생성할 인스턴스 구성 정보를 지정하기 위해 활용, AMI, 인스턴스 유형 등 정보를 지정
- ASG 그룹: 그룹을 생성할 때 EC2 인스턴스의 최소 및 최대 인스턴스 수와 원하는 인스턴스 수 지정
- 조정 정책: 오토 스케일링 그룹을 조정하는 여러 가지 정책 설정 가능
-- Dynamic Scaling : 조건 변화에 따라 동적으로 조정이 필요할 경우 유용
-- Scheduled Scaling: 예측 가능한 워크로드인 경우 일정 시간/날짜에 따라 조정하고자 할 경우 사용
-- Predictive Scaling: AI 기반의 조정 방식으로 규칙을 수동으로 조정할 필요가 없음
Elastic Load Balancer
- 수신되는 어플리케이션 트래픽을 여러 EC2 인스턴스, 컨테이너 등으로 분산하는 관리형 로드밸런싱 서비스
- 한 리전 내 단일 가용 영역 또는 여러 가용 영역에서 어플리케이션 트래픽에 대한 부하 분산 처리
- 정상 상태의 인스턴스를 가지고 있지 않은 경우 로드밸런서는 다른 가용 영역에 있는 정상 인스턴스로 트래픽 라우팅
ELB 아키텍처
- 용도에 따라 외부 또는 내부 로드밸런서로 활용할 수 있음
- 인터넷 경계 로드밸런서는 퍼블릭IP를 갖게 되며 DNS와 연동되어 변환
- VPC 내부 트래픽의 부하부산을 위한 내부 로드밸런서의 노드는 프라이빗 IP 주소만 가지며 내부 DNS와 연동
- 인터넷 경계 및 내부 로드밸런서는 모두 프라이빗 IP 주소를 사용하여 대상으로 요청을 라우팅하므로 대상이 퍼블릭 IP 주소 없이도 로드밸런서에서 요청을 수신할 수 있음
ELB 특징
- 초당 수백만 개의 요청을 로드밸런싱할 수 있으며 고가용성 구성, 자동 확장/축소, 강력한 보안성을 갖추고 있음
- HTTP, HTTPS, TCP, UDP 및 SSL 프로토콜 사용
- AWS 외부에서 유입되는 트래픽 혹은 내부 트래픽 부하분산을 위한 다양한 로드밸런서 유형 지원
- 백엔드 인스턴스에 대한 상태 확인을 통해 실시간으로 어플리케이션 상태 및 성능을 모니터링 하고 병목 현상 파악
ELB 내부 작동 방식
- 리스너는 로드밸런싱 규칙을 정의하는 구성요소
- 리스너에서 프로토콜과 포트를 기반으로 연결 요청을 확인하고 정의한 규칙에 따라 등록된 대상 그룹으로 요청을 라우팅
- 로드밸런서는 대상 그룹에 등록된 대상에 상태 확인을 수행하여 정상 상태로 판정된 경우에만 트래픽을 라우팅
상태 확인 요소
- 프로토콜, 포트
- 정상 임계값: 정상 간주를 위한 연속적인 상태 확인 성공 횟수
- 비정상 임계값: 비정상으로 간주하기 위해 필요한 연속적인 상태 확인 실패 횟수
- 제한시간: 대상으로부터 응답 대기 기간
- 간격: 상태 확인 간의 간격
- 성공코드: 대상으로부터 성공응답을 체크하는 HTTP 코드
TLS 오프로딩
- HTTPS를 통한 사용자 요청이 EC2 인스턴스로 직접 전달되게 되면 개별 EC2 인스턴스에서 TLS 암호화를 복호화하는데 많은 컴퓨팅 리소스가 필요
- 이를 해결하기 위해 어플리케이션 로드 밸런서에서 HTTPS 연결을 종료할 수 있는데 이를 위해 SSL 인증서를 로드밸런서에 설치
- 로드밸런서는 이 인증서를 사용하여 SSL 연결을 종료한 후, 클라이언트의 요청을 복호화하여 HTTP 연결로 요청을 대상으로 전송
고정 세션
- 동일한 클라이언트에서 들어오는 요청을 동일한 대상으로 라우팅하는 매커니즘
- 쿠키를 활용하여 사용자가 한 번 접속한 적이 있는 서버를 기억하고 사용자가 다시 접속하면 기존 커넥션 서버로 연결
- 사용자 요청에 EC2가 응답을 보낼 때 ALB가 응답 헤더에 쿠키를 포함시켜 전달
- 이후 사용자가 재요청 시 해당 쿠키를 동봉하여 전달하면 ALS는 커네션이 생성되었던 EC2에 연결
등록취소 지연
- Connection Draining
- 인스턴스 등록 취소 시 인스턴스에 어느 정도의 시간을 주어 현재 진행중인 요청 처리를 완료할 수 있도록 하는 기능
- 인스턴스가 draining되면 ELB는 등록 취소중인 인스턴스로는 새로운 요청을 보내지 않음
- 등록 취소 프로세스를 완료하기 전에 300초 동안 대기
ELB 유형
- 어플리케이션 로드밸런서
HTTP, HTTPS 트래픽을 활용하는 어플리케이션을 위한 L7 계층 로드밸런서
컨텐츠 기반, 가중치 기반 로드밸런싱 등 고급 부하분산 기능 지원
클라이언트가 IPv4 또는 IPv6를 통해 ALB에 연결할 수 있음
고정 IP 설정 불가, 보안 그룹 설정 지원
컨텐츠 기반 라우팅: ALB에서 지원, 리스너에서 정의된 규칙에 따라 대상으로 요청
가중치 기반 라우팅: ALB에서 지원, 리스너 규칙의 전달 작업에 둘 이상의 대상 그룹을 추가하고 각 그룹에 가중치를 지정
- 네트워크 로드밸런서
L4 즉, TCP와 UDP를 사용하는 요청에 대한 부하분산 목적의 로드밸런서
매우 짧은 대기 시간을 유지하면서 대규모 트래픽 처리에 적합
소스 IP/Port, 대상IP/Port 정보를 활용한 로드밸런싱
IPv4만 지원, 고정 IP 혹은 탄력적 IP 설정 지
- 게이트웨이 로드밸런서
방화벽, 패킷 검사, 침입 탐지 시스템 등과 같은 가상 보안 어플라이언스에 트래픽을 전달하고 관리하기 위한 서비스
- 가상 어플라이언스는 게이트웨이 로드밸런서의 대상 그룹으로 등록되며 수요에 따라 가상 어플라이언스를 자동 확장하면서 트랙픽을 분산
Route 53
- 높은 가용성과 확장성이 뛰어난 클라우드 DNS 서비스
- 전 세계 DNS 서버의 글로벌 애니캐스트 네트워크를 사용하여 최적의 위치로 사용자 요청을 자동으로 라우팅
- 전역적으로 유연한 고가용성 아키텍처를 지원하고 다양한 라우팅 유형을 통해 트래픽을 관리
- 사용자 요청을 여러 리전에 있는 EC2 인스턴스, ELB, S3 버킷 등에 효과적으로 연결
- 전역적 부하분산 및 상태 확인을 통해 필요 시 장애 조치 수행
라우팅 정책
- 단순 라우팅: 하나의 리소스로 트래픽을 라우팅하고자 할 경우 활용
- 가중치 기반 라우팅: 할당된 다른 가중치를 기반으로 트래픽을 분할
- 지리 위치 라우팅: DNS 쿼리가 발생한 지리적 위치 기반으로 지원할 리소스 선택
- 지연 시간 기반 라우팅: 물리적 거리가 아닌 지연시간 기반으로 라우팅
- 장애 조치 라우팅: 주로 재해 복구에 사용되는 Active-Standby 장애 조치 개념
- 지리 근접 라우팅: 리소스 기준으로 트래픽을 처리할 지리적 크기를 지정
DR 체계 구현

Pilot Light
- 클라우드에 온프레미스와 동일한 환경을 구성해놓지만 평상 시 중지 상태로 유지
- 데이터베이스의 데이터는 자동 복제가 되도록 ㅜㄱ성
- 장애 발생 시 리소르르 실행시키고 요청 트래픽을 클라우드로 전환하여 서비스
- 상대적으로 저렴한 DR 체계이나 대응하는데 시간은 오래 걸림
Warm Standby
- 온프레미스의 리소스보다 작은 최소 용량의 리소스만 클라우드상에서 실행되도록 구성
- 장애 발생 시 오토 스케일링 그룹을 통해 온프레미스 리소스 개수 만큼 클라우드 리소스를 즉시 자동 확장하고 요청 트래픽을 클라우드로 전환하여 서비스
- Pilot Light보다 더 빠른 대응이 가능하나 비용은 더 발생
Multi-site active
- 온프레미스 시스템과 동일한 수준의 서버스 체계를 클라우드상에 구축하고 평상 시 요청 트래픽을 50%, 50%으로 서비스
- 장애 발생 시 가중치 기반 라우팅을 통해 클라우드로 요청 트래픽이 100% 전달되도록 구성
- 즉각적이고 안정적인 장애 조치가 가능하지만 비용이 가장 많이 발생
Loosely Coupled 아키텍처
- 동기식 처리
클라이언트에서 요청을 보냈을 때 서버가 처리 후 응답이 돌아와야 다음 동작을 수행
설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 함
- 비동기식 처리
서버에 요청만 보내놓고 응답이 오는 것과 상관없이 클라이언트는 대기 없이 다음 동작을 수행
처리 시간이 걸리더라도 그동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있음
아마존 SQS
- 어플리케이션 간 또는 어플리케이션 구성 요소 간의 메세지 전달을 위한 대기열을 제공하는 완전 관리형 메시지 대기열 서비스
- 메세지 손실 위험 없이 소프트웨어 구성 요소 간에 모든 볼륨의 메세지를 전송, 수신 및 저장
- 서비스가 비동기식으로 작동하는 기능을 제공하고 급격한 트래픽 발생 시 버퍼의 역할을 수행하며, 느슨하게 결합된 아키텍처를 구현
- 가시성 제한: 한 소비자가 특정 메세지를 폴링하여 처리하는 동안 다른 소비자가 해당 메세지를 폴링하여 중복 처리하지 못하게 하기 위한 기간을 의미
- 긴 폴링: 응답을 전송하기 전에 SQS가 대기열에서 메세지를 사용할 수 있을 때까지 대기시켜 빈 응답을 줄이므로 비용을 절감할 수 있음
대기열 유형
- Standard Queue: 표준 대기열, 처리량을 극대화하도록 설계되었기 때문에 수신된 순서대로 메세지가 전송된다고 보장할 수 없음, 대규모의 메세지 전송과 빠른 트랜잭션 처리가 필요한 상황에 적합
- FIFO Queue: 메세지가 수신되는 순서에 따라 전송, 정확히 1회처리, 표준 대기열에 비해 느리고 가격 높음
아마존 SNS
- 게시자에서 구독자로 메세지를 전송하는 완전 관리형 메세징 서비스
- 푸시 기반의 일대다 메시징을 위한 주제를 제공하여 게시자 시스템은 병렬 처리를 위해 다양한 구독자 시스템으로 메시지를 팬아웃 하는 방식
- SNS 모바일 푸시 및 이메일을 통해 대규모로 사용자에게 메세지를 전송할 수 있음
| AWS SQS | AWS SNS | |
| 생산자와 소비자 | 송신과 수신 | 게시와 구독 |
| 배포 | 1 : 1 | 1 : N |
| 전송 방식 | Pull | Push |
| 메세지 지속성 | 유지 | 실패 시 재시도 후 삭제 |
서버리스 특징: 민첩성과 유연성을 고려하여 서버리스 기반 서비스 구축 사례가 늘어나고 있음
서버리스 장점
- 리소스를 상시 구동하는 방식이 아닌 요청이 있을 때만 리소스를 할당하여 코드를 빠르게 실행하고 요청이 종료되면 중단하는 방식이므로 비용 절감 효과 상승
- 자동 확장 축소가 가능하도록 설계되어 급격한 트래픽 변화에 유연한 대응이 가능
AWS Lambda
- 서버를 프리버저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 이벤트 중심의 서버리스 컴퓨팅 서비스
- 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 로깅 등 리소스 관리 수행
- 하루 수십 개의 이벤트에서 초당 수십만 개에 이르기까지 어떤 규모에서든 코드 실행 요청 자동으로 응답
- 사용한 만큼만 비용을 지불
Lambda의 특징
- Node.js, Java, Python, C#, Go, Ruby 등을 지원
- Lambda API 호출 또는 이벤트에 대한 응답으로 코드 실행
- 상태 비저장 코드 실행
- 최대 명령 실행시간: 15분, 실행 시 메모리: 최대 10GB
AWS Step Functions
- 이련의 단계로 구성된 워크플로우를 설계하고 실행할 수 있도록 함으로써, 작업을 보다 쉽게 조정할 수 있게 하는 완전 관리형 서비스
- 상호 종속성이 있는 작업을 관리하기 위한 포괄적인 워크플로우를 생성하는 데에도 유용
- 시각적 워크플로우를 사용하여 분산 어플리케이션과 마이크로 서비스의 구성 요소와 단계를 손쉽게 조정
상태 시스템
- 이전 단계의 상태 정보를 보유하고 있는 객체
- 상태 시스템을 활용하여 워크플로우를 구성
AWS API 게이트웨이
- 클라이언트가 백엔드 서비스에 엑세스할 수 있게 해주는 관문 역할 수행
- 개발자가 API를 손쉽게 생성, 유지 관리하기 위한 다양한 기능을 제공
- API 버전 관리, 인증 및 권한 부여 등의 엑세스 제어, 캐싱, 트래픽 관리를 비롯해 최대 수십만 건의 동시 API 호출을 수락 및 처리하는 데 관련된 작업을 지원
CORS (Cross-Origin Resource Sharing)
- 웹 브라우저에서 보안상의 이유로 다른 출처의 리소스에 접근하는 것을 제어하는 메커니즘
- 기본적으로 웹 애플리케이션은 동일 출처 정책이라는 보안 정책을 따름
- 이 정책은 스크립트가 로드된 출처와 다른 출처의 리소스에 접근하는 것을 제한
'[KT AIVLE SCHOOL]' 카테고리의 다른 글
| 제안 전략 수립(1) (0) | 2024.12.09 |
|---|---|
| 클라우드 서비스(5) (0) | 2024.12.08 |
| 클라우드 서비스(3) (2) | 2024.12.04 |
| 클라우드 서비스(2) (2) | 2024.12.03 |
| 클라우드 서비스(1) (1) | 2024.12.02 |