📌 순천향대학교 멋쟁이 사자처럼 동아리 백엔드 트랙에서 배운 내용을 정리하여 올립니다.
- 아마존 닷컴에서 개발한 클라우드 컴퓨팅 플랫폼
- 네트워킹 기반 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비스 제공
- 비즈니스와 개발자가 웹 서비스를 사용하여 확장 가능하고 정교한 어플리케이션 구축 지원
과거에도 서버를 빌려주는 서비스는 존재.
AWS는 여러 사업자에게 각각 빌려야 했던 인프라를 일괄로 빌릴 수 있고, OS, 웹 서버, DB 서버 등에 필요한 소프트웨어까지 사용 가능함
클라우드 (Cloud)
- 인터넷을 통해 컴퓨팅 리소스와 서비스를 제공하는 개념
- 기존에는 개별 컴퓨터나 로컬 서버에 의존하여 데이터 저장 & 애플리케이션 실행 방식이 일반적.
- 클라우드 컴퓨팅은 인터넷을 통해 원격으로 컴퓨팅 리소스에 접근해 필요한 만큼 사용할 수 있는 방식
클라우드 컴퓨팅 이점
- 컴퓨팅 리소스를 필요한 만큼 신속히 확장 & 축소 = 유연성↑
- 클라우드 사용자는 서버관리, 업그레이드, 보안 등의 부담↓
- 사용한 만큼만 비용을 지불하므로 초기 투자 비용↓
ex) AWS, Microsoft Azure, Google Cloud Platform(GCP)
ex) PC방에서 돈 내고 컴퓨터를 이용하는 것과 유사한 개념 (사용한 만큼 지불)
📖 용어 설명
⑴ 용량 프로비저닝 (Capacity Provisioning)
- 예상 트래픽, 사용량 또는 작업 부하에 기반하여 컴퓨팅 리소스를 사전에 설정하는 것
- Lambda는 필요에 따라 자동으로 확장하여 트래픽 증가 & 감소 시에도 최적의 리소스 사용 보장ㅤ
⑵ 자동 확장 (Auto Scailing)
- 트래픽 증가에 따라 자동 확장
- 실행할 함수 인스턴스의 수를 동적으로 조정하여 요청 처리, 부하 분산 수행 → 애플리케이션의 성능 및 확장성 향상ㅤ
⑶ 코드 모니터링, 로깅 (Code Monitoring, Logging)
- 실행 중인 함수에 대한 로그를 기록, CloudWatch Logs와 통합하여 사용자에게 액세스 할 수 있게 함.
함수 실행 상태, 오류 디버깅, 성능 모니터링 가능
언제 사용하면 되는가?
- 코드를 계속 실행시키기 보단 특정한 시기에만 실행시키는 경우
- 서버를 띄우지 않고 간단한 코드를 실행시키고 싶은 경우
- 특정 기간 & 주기로 코드를 실행시켜야 하는 경우
- 트리거가 실행될때만 코드를 실행시키고 싶은 경우
단점?
- 실행시간 & 코드 용량 제한 : 코드 용량이 최대 250MB, 실행 시간은 최대 15분으로 제한
- 초기 지연 : 최초 호출시 Cold Start & 초기 지연시간 발생
cold start: EC2는 항상 실행 준비 상태, Lamda는 코드 실행 + 사전 준비 시간 필요
AWS의 DNS(Domain Naame System) 도메인 관리, 설정 서비스
도메인 등록: 수많은 최상위 도메인, 하위 도메인 등록 가능
도메인 이름 구입 & 기존 도메인 전송 O
DNS 관리: DNS 레코드를 관리하는 기능 제공.
DNS 레코드는 도메인 이름과 IP 주소 간의 매핑 정보 정의함
Route 53을 사용하여 DNS 레코드 생성, 수정, 삭제하고, 도메인 이름을 관리할 수 있음.
트래픽 라우팅: 도메인 이름을 여러 대상 리소스 ex) EC2 인스턴스, ELB, S3 저장소
로 라우팅 하는 기능 제공
→ 트래픽을 다른 리전, 다른 엔드포인트로 분산하거나, 가중치 기반 라우팅, 지역 기반 라우팅 등 다양한 라우팅 정책 구성 O
상태 검사: 애플리케이션 및 인프라의 상태 주기적으로 모니터링, 자동으로 장애 발생 시 대체 리소스로 전환하는 기능을 제공 = 애플리케이션의 가용성과 신뢰성↑
애플리케이션 트래픽을 여러 대상 서버 ex) EC2 인스턴스, 컨테이너, IP주소, Lambda 함수
로 분산시켜 가용성과 확장성 향상시키는 역할
📖 가용영역 (Availability Zone)
- AWS 클라우드 내의 물리적인 데이터 센터 의미, 각 AZ은 독립된 전력 공급, 네트워킹 및 냉각 시설을 갖춘 격리된 공간으로 구성됨- 동일한 지리적 영역 내에서도 서로 독립적으로 운영
- 논리적인 단위로, AWS 리전 내에서 서로 다른 위치에 존재함
ex) us-east-1a, us-east-1c 형태로 표현
- 고가용성을 구성하기 위한 핵심 개념.
예를 들어, ELB를 사용하여 가용영역 간에 트래픽을 분산시키면, 한 가용영역에서 장애가 발생하더라도 다른 가용영역에서 애플리케이션을 계속해서 제공 가능
📖 가용성 (Availability)
- 시스템이 지속적으로 작동하고 사용자에게 신뢰할 수 있는 서비스를 제공할 수 있는 능력- 장애 복구, 자동 확장, 로드 밸런싱 및 데이터 백업과 같은 기술과 프로세스를 통해 달성
ELB의 성능 향상을 위해 사용되는 방법으로, 애플리케이션의 요구 사항과 트래픽 패턴을 고려하여 선택함.
1. Scale-up
- ELB의 성능을 개선하기 위해 단일 리소스의 성능을 향상 시키는 것
- 기존 리소스에 더 많은 컴퓨팅 리소스 ex) CPU, Memory
를 할당하거나 리소스 성능을 강화하여 처리할 수 있는 트래픽을 늘리는 방식
- ELB의 처리 능력을 개선하고 병목 현상 완화
- 한정된 성능 한도에 도달할 수 있으며, 추가 리소스 확보에는 물리적 제한이 있을 수 있음
- 단일 리소스의 성능을 향상시키는 것으로, 비교적 적은 트래픽이나 리소스의 한계에 도달하지 않은 경우 유용
2. Scale-out
- ELB의 성능을 개선하기 위해 여러 리소스를 추가하여 트래픽을 분산시키는 것을 의미
- 새로운 리소스를 추가하여 처리할 수 있는 트래픽 분산→ ELB의 처리 능력 증가
- 추가 리소스를 동적으로 프로비저닝, 리소스의 수를 조절해 요구에 맞게 조정할 수 있는 유연성 제공
- 여러 리소스를 추가하여 처리 능력을 증가시키는 것으로, 높은 트래픽 처리 및 가용성을 요구하는 경우 유용
- 라운드 로빈 (Round Robin)
요청을 순서대로 돌아가며 배분
ㅤ- 가중 라운드 로빈 (Weighted Round Robin)
각 서버에 가중치를 매기고 우선적으로 배분
ㅤ- IP 해시 방식 (IP Hash)
클라이언트의 IP 주소를 특정 서버로 매핑하여 요청 처리
ㅤ- 최소 연결 방식 (Least Connection)
요청이 들어온 시점에 가장 적은 연결 상태 를 보이는 서버에 우선적으로 트래픽 배분
ㅤ- 최소 리스폰타임 (Least Response Time)
서버의 현재 연결 상태 + 응답시간 모두 고려하여 트래픽 배분
데이터, 동영상, 애플리케이션 및 API를 전 세계 고객에만 전송하는 고속 글로벌 콘텐츠 전송 네트워크 (CDN: Content Delivery Network) 서비스
S3, EC2, ELB, Route 53 등
과 같은 AWS 서비스와 통합되어 운영엣지 로케이션: CDN의 캐시 서버가 위치한 전 세계적으로 분산된 위치
정적 파일 스토리지 서비스 (사진, 비디오, 문서 또는 FE코드, Lambda 함수 코드)
AWS에서 제공하는 관계형 데이터 베이스 서비스
RDBMS 클라우드 서비스: Amazon Aurora, MySQL, MariaDB, Oracle, PostgreSQL 등 지원
AWS에서 제공하는 완전 관리형 NoSQL 데이터 베이스 서비스
완전 관리형 서비스: DB 클러스터의 프로비저닝, 설정, 확장, 복제, 패치 및 업그레이드와 같은 모든 관리 작업 자동 처리
높은 확장성: 수백 개의 서버에 데이터를 분산하여 처리할 수 있는 분산형 아키텍처 → 데이터의 용량과 처리량을 필요에 따라 증가 & 대규모 트래픽과 대용량 데이터 처리할 수 있는 DB 테이블 생성 가능
빠른 성능: 어떠한 규모에서도 10ms 미만의 성능을 제공하는 key-value 형식의 데이터 모델