[AWS-SAA] Classic Architecture : 고가용성과 확장성을 위한 인프라 설계
컴퓨팅, 스토리지, 데이터베이스, 네트워크 각 계층별 핵심 서비스의 특징과 실무 적용 포인트를 알아봅시다.
1. 서버
1) Elastic Compute Cloud(EC2)
무엇이든 뭔가 하려면 일단 컴퓨터가 필요하다.
우리가 컴퓨터를 사용하는 목적은 다양하지만, 개발자에게 있어 컴퓨터는 곧 서비스를 제공하기 위한 도구입니다. 단순히 게임을 하거나 동영상을 시청하는 것이 아니라(소비), 무언가를 사용자에게 전달하는 역할을 수행하는 것이죠.
EC2 = 우리가 빌린 '웨이터(Server)'
손님
주문
사용자
클릭(요청)
AWS EC2
= 서버 (가상 PC)음식
서빙 완료
영상 파일
화면 재생
우리가 AWS에서 빌리는 EC2 인스턴스가 바로
주문(요청)을 처리하고 음식(결과)을 가져다주는 웨이터(Server) 역할을 합니다.
‘서버(Server)’라는 의미를 식당으로 비유를 들어보겠습니다.
- 주문 (요청): 식당에 방문한 손님(사용자)이 웨이터(Server)에게 음식을 주문합니다.
- 예시: 넷플릭스 앱에서 ‘오징어 게임 시즌2 1화’를 클릭(요청)합니다.
- 서빙 (제공): 웨이터는 주문받은 음식을 주방에서 가져와 손님에게 서빙(제공)합니다.
- 예시: 요청을 받은 서버는 저장된 영상 파일을 사용자에게 스트리밍(제공)합니다.
AWS의 Elastic Compute Cloud (EC2)는 바로 이 ‘서버’ 역할을 하는 가상 컴퓨터를 클라우드 환경에서 빌려 쓰는 서비스입니다. 즉, 넷플릭스 사용자의 요청에 따라 영상을 찾아 서빙해 주는 ‘웨이터’를 AWS에서 고용하는 것과 같습니다.
EC2는 본질적으로 컴퓨터이기 때문에 다음과 같은 특징을 가집니다.
- 🖥️ 컴퓨터로서의 기본 기능 : 일반 PC처럼 CPU, RAM, 스토리지, 네트워크, IP 등을 가짐
- 🛡️ ‘서버’로서의 특화 기능 : 서비스 제공을 위해 보안(Security), 비용 관리, 개발 편의 사항 등이 각별하게 신경 써져 있음
주요 연관 기능
EC2는 혼자서 독립적으로 존재하기보다, AWS의 생태계 안에서 다른 핵심 서비스들과 유기적으로 연결될 때 비로소 안정적인 서비스 운영이 가능해집니다.
EC2
가상 머신EBS
데이터 저장ELB
부하 분산ASG
자동 확장가장 대표적으로 함께 사용되는 기능들은 다음과 같습니다.
- EBS (Elastic Block Store)
- EC2가 연산(CPU, RAM)을 담당하는 두뇌라면, EBS는 데이터를 영구적으로 보관하는 저장소(SSD/HDD)입니다.
- EC2 인스턴스를 중지하거나 종료해도 중요한 데이터가 사라지지 않도록 별도로 저장하는 ‘외장 하드’와 같은 역할을 합니다.
- ELB (Elastic Load Balancing)
- 맛집에 손님이 몰리면 웨이터 한 명으로는 감당이 안 되듯, 접속자가 폭주하면 서버 한 대로는 부족할 수 있습니다.
- ELB는 들어오는 트래픽(손님)을 여러 대의 EC2 인스턴스에 골고루 나눠주는 부하 분산 장치(매니저) 역할을 수행합니다.
- ASG (Auto Scaling Group)
- 서비스 사용량은 항상 일정하지 않습니다. 낮에는 많고 새벽에는 적을 수 있습니다.
- ASG는 트래픽 양에 맞춰 EC2 인스턴스의 개수를 자동으로 늘리거나(Scale-out) 줄여주는(Scale-in) 자동 확장 기능입니다. 이를 통해 비용 효율성을 극대화할 수 있습니다.
인스턴스 유형
EC2 인스턴스를 생성하려고 보면 t3.small, m5.large 같은 암호 같은 이름들을 마주하게 됩니다. 하지만 이 이름에는 규칙이 있습니다. 바로 [패밀리] + [세대] + [크기] 순서입니다.
- 패밀리(Family): 인스턴스의 특성 (앞글자 알파벳)
- 세대(Generation): 숫자가 높을수록 최신 모델
- 크기(Size): CPU와 메모리의 용량 (nano < micro < small < medium < large …)
가장 중요한 것은 ‘맨 앞글자(패밀리)’가 무엇이냐에 따라 사용 목적이 완전히 달라진다는 점입니다.
일반적으로 입문자가 프리티어로 접하는 t 시리즈는 평소에는 적절한 성능을 유지하다가, 트래픽이 몰릴 때 일시적으로 성능을 높일 수 있어 비용 효율적입니다. 실제 서비스 성격에 맞춰 적절한 패밀리를 선택하는 것이 클라우드 비용 절감의 시작입니다.
EC2 인스턴스 구매 옵션
EC2는 사용 목적과 기간에 따라 다양한 요금제를 제공합니다. 마치 호텔을 예약할 때 “하루만 묵을지”, “1년 회원권을 끊을지”, “땡처리 방을 잡을지” 고민하는 것과 비슷합니다.
가장 기본이 되는 두 가지 방식부터 살펴보겠습니다.
1. 기본 구매 방식 (단기/유동적)
대부분의 입문자가 처음 접하는 방식입니다.
2. 장기 약정 할인 (1년 / 3년 계약)
서비스를 장기적으로 운영할 계획이라면, 미리 약정을 걸어 비용을 크게 아낄 수 있습니다. AWS는 최근 Savings Plans를 강력하게 권장하는 추세입니다.
"1년/3년 동안 꾸준히 쓸 테니 깎아주세요" (전체 선불 시 할인율 최대)
💡 어떤 Savings Plan을 선택해야 할까요?
- EC2만 사용하고, 리전/패밀리 변경 계획이 없다 EC2 Instance SP (할인율 ⬆️)
- Lambda, Fargate 등을 섞어 쓰거나, 인스턴스 유형을 자주 바꾼다 Compute SP (유연성 ⬆️)
3. 특수 목적 (규제 및 라이선스)
보안 규정이나 라이선스 문제로 하드웨어를 단독으로 써야 할 때 사용하는 옵션입니다.
(Dedicated Host)
가장 비쌈
(Dedicated Instance)
배치 제어 불가
(Capacity Res.)
미사용 시에도 과금
✔️ 놓치기 쉬운 핵심 디테일 3가지 (Deep Dive)
"나만 쓰는 하드웨어"는 맞지만, 중지(Stop) 후 시작(Start)하면 다른 기계로 이사 갈 수 있습니다. 👉 따라서 배치 제어(Placement Control)가 불가능합니다. (원하는 랙에 고정 불가)
용량 예약 자체는 할인 0% (정가)입니다. 하지만 다른 할인과 합체가 가능합니다. 🎯 (용량 예약으로 자리 확보) + (RI/SP로 요금 할인) = 완벽 조합
물리 서버 전체를 점유하므로 기존 온프레미스에서 쓰던 기업용 라이선스를 그대로 가져올 수 있습니다. 👉 기준: 소켓(Socket)당, 코어(Core)당, VM당 라이선스
배치 그룹 전략(Placement Groups)
인스턴스 물리적 배치 전략
✔️ 배치 그룹 선택 가이드 (Deep Dive)
클러스터는 최고의 네트워크 속도를 위해 물리적으로 가까이 뭉쳐야 하므로 여러 AZ에 걸쳐 생성할 수 없습니다. 👉 반면, 분산(Spread)과 파티션(Partition) 그룹은 여러 AZ에 걸쳐서 배치 가능합니다.
둘 다 하드웨어를 분리하지만, '규모'가 다릅니다.
• 분산: 인스턴스 단위 격리 (AZ당 7개 제한) → 중요 DB
• 파티션: 그룹 단위 격리 (수백 개 가능) → Hadoop, Kafka
이미 잘 돌아가고 있는 인스턴스를 나중에 배치 그룹으로 옮길 수는 없습니다. 👉 AMI(이미지)를 생성한 뒤, 배치 그룹을 지정하여 새 인스턴스로 다시 시작(Launch)해야 합니다.
보안그룹(Security Group)
EC2의 가상 방화벽, 보안 그룹(Security Group)
보안 그룹은 EC2 인스턴스를 보호하기 위한 가상 방화벽입니다. 인스턴스로 들어오는 트래픽(Inbound)과 나가는 트래픽(Outbound)을 철저하게 검사하여 허용된 요청만 통과시킵니다.
🏰 이중 보안 시스템으로 이해하기
트래픽은 NACL(서브넷)을 먼저 통과한 뒤, 보안 그룹(인스턴스)을 통과해야 EC2에 도달합니다.
처음 보안 그룹을 생성하면 다음과 같은 초기 상태(Default)를 가집니다.
- 인바운드(Inbound): 모두 차단 (Deny All)
→ 규칙을 추가하지 않으면 아무도 들어올 수 없습니다. (암묵적 차단) - 아웃바운드(Outbound): 모두 허용 (Allow All)
→ 인스턴스에서 외부로 나가는 통신은 기본적으로 다 열려 있습니다.
✔️ 보안 그룹 vs NACL 실전 포인트 (Deep Dive)
보안 그룹은 들어오는 요청(Inbound)을 허용하면, 그 응답으로 나가는 트래픽(Outbound)은 규칙과 상관없이 자동으로 허용됩니다. (왕복 티켓) 👉 반면 NACL은 Stateless이므로, 들어올 때 허용했어도 나가는 규칙(Outbound)이 없으면 응답이 차단됩니다.
보안 그룹은 '허용(Allow)' 규칙만 존재하며, 규칙에 없는 트래픽은 암묵적으로 모두 차단됩니다. "특정 IP만 막겠다(Deny)"는 설정은 불가능합니다.
• 특정 공격자 IP 차단(Deny) → NACL 사용
• 서비스 포트 개방(Allow) → 보안 그룹 사용
보안 그룹은 다른 보안 그룹 ID를 참조할 수 있습니다. "웹 서버 그룹(A)에서 오는 트래픽만 DB 그룹(B)이 허용한다"는 식의 유연한 설정이 가능합니다. 👉 반면 NACL은 오직 IP 대역(CIDR)으로만 규칙을 설정할 수 있습니다.
User Data
사용하는 기능이 바로 User Data(도구)이다."
📦 User Data (사용자 데이터) : EC2 서버가 켜지자마자 실행되는 할 일 목록 (Shell Script)
🚀 OS의 부트스트랩 : 서버 시작 시 특정 명령을 자동으로 실행하는 행위
탄력적 IP(Elastic IP / EIP)
EC2를 생성할 때 할당받는 일반 공인 IP는 인스턴스를 중지(Stop)하고 다시 시작(Start)하면 IP 주소가 변경됩니다. 서버의 주소가 계속 바뀐다면 사용자가 접속할 수 없겠죠? 이를 해결하기 위해 고정된 IP 주소인 탄력적 IP(Elastic IP)를 사용합니다.
→ Public IP가 변경
EIP는 단순히 ‘고정 IP’를 제공하는 것 이상의 의미가 있습니다. 인스턴스에 장애가 발생했을 때, EIP 주소의 연결을 건강한 인스턴스로 즉시 재연결(Remapping)하여 서비스 중단을 마스킹할 수 있습니다.
하지만 IPv4 주소는 전 세계적으로 부족한 자원입니다. AWS는 사용자가 IP를 낭비하지 않도록 독특한 과금 정책을 가지고 있습니다.
→ 연결 안 된(미연결) EIP도 비용 발생
✔️ EIP 아키텍처 패턴 (Deep Dive)
소프트웨어적인 문제로 인스턴스가 먹통이 되었을 때, 엔지니어가 EIP의 연결 대상을 대기 중인(Standby) 인스턴스로 즉시 변경하여 서비스 다운타임을 최소화할 수 있습니다.
EIP는 리전당 기본 5개로 제한(Soft Limit)되어 있습니다. 확장성 있는 서비스를 위해서는 고정 IP(EIP)에 의존하기보다, 로드 밸런서(ELB)의 DNS 주소를 사용하는 것이 훨씬 좋은 아키텍처입니다.
AMI(Amazon Machine Image)
컴퓨터를 새로 살 때마다 윈도우를 설치하고, 한글/오피스를 깔고, 환경 설정을 다시 하는 것은 매우 번거롭습니다. 만약 내 컴퓨터의 현재 상태를 그대로 복제해서 ‘틀(Mold)’로 만들어둔다면 어떨까요?
AMI(Amazon Machine Image)가 바로 그 역할을 합니다. EC2 인스턴스를 실행하기 위해 필요한 운영체제, 애플리케이션, 설정값 등을 모두 담고 있는 ‘마스터 이미지’입니다.
(Linux, Windows 등)
저장한 나만의 이미지
(구매하여 사용)
가장 많이 사용하는 방식은 [사용자 정의 AMI]입니다. EC2를 하나 띄워서 필요한 세팅을 완벽하게 끝낸 후, 그것을 본떠서 이미지를 만듭니다. 이때 데이터 무결성(Data Integrity)을 위해 인스턴스를 잠시 멈추는 것이 권장됩니다.
Q. User Data도 초기 설정을 하잖아요? 뭐가 달라요?
맞습니다. 둘 다 인스턴스를 처음 시작할 때 환경을 구성하는 방법입니다. 가장 큰 차이는 “설정을 언제 하느냐(Timing)”입니다. 쉽게 비유하자면 냉동 피자(AMI)와 밀키트(User Data)의 차이와 같습니다.
✔️ 실전 운영 및 시험 포인트 (Deep Dive)
서울 리전(ap-northeast-2)에서 만든 AMI는 버지니아 리전(us-east-1)에서 바로 보이지 않습니다. 다른 리전에서 사용하려면 AMI 복사(Copy AMI) 기능을 통해 해당 리전으로 이미지를 복제해야 합니다.
어느 하나만 쓰기보다는 둘을 섞어 쓰는 것이 좋습니다.
• User Data: 자주 바뀌는 설정 파일이나 최신 코드만 부팅 시 다운로드
AMI 등록을 해제(Deregister)해도, 원본이 되는 EBS 스냅샷은 S3에 그대로 남아 과금됩니다. 완전히 삭제하려면 AMI 해제 후 스냅샷도 별도로 삭제해야 합니다.
댓글남기기