TIL
[에스넷시스템 부트캠프] TIL Day26 - AWS 개념 2
yulee_to
2025. 6. 25. 23:51
728x90
1. 느슨한 결합 전략
1) 모범 사례 : 서버가 아니라 서비스를 설계
- 웹서버는 데이터를 로컬이 아닌 외부 저장소(NFS/NAS 등)에 저장
- 정적 웹 자산은 S3 같은 외부 저장소에 저장
- 사용자 인증 및 상태 저장은 AWS 관리형 서비스 활용
- 하나의 서버에는 하나의 애플리케이션만 실행하는 것이 원칙
- 서버리스 환경에서는 필요 시 자동 프로비저닝
- 애플리케이션 간 통신은 메시지 대기열 사용
→ 서버에서 서비스 단위로 전환하면서 서버 관리 부담을 줄임
💡 서버리스의 정확한 의미
서버가 없다는 의미가 아니라 서버 인프라를 직접 관리하지 않아도 되는 컴퓨팅 모델을 의미한다.
2) 서비스 지향 아키텍처(SOA) 구현
- 구성 요소들이 통신 프로토콜로 서비스를 주고받는 구조
- 때로는 불필요한 정보가 제공되기도 함 (뒤에서 활용됨)
- 전통적인 모놀리식 구조
3) 마이크로 서비스
- SOA에서 발전된 구조로, 작고 독립적인 프로세스 단위
- 각 서비스는 하나의 작은 작업에 집중
- 통신은 REST/JSON 기반 API로 언어에 구애받지 않음
- 서비스 간 느슨한 결합
- 하나가 끊겨도 전체 시스템에 영향 없음
- 테스트 범위 축소, 변경에 따른 위험 감소
- 수평 확장 가능한 개별 파트를 사용
3-1) 마이크로서비스 설계 원칙
- 구성 요소는 오류 없이 교체 가능하게 설계
- 간단하고 표준화된 API 사용
- 기술 스택에 종속되지 않도록 구성
- 장애를 고려한 설계
- 모니터링 필수
- 서버는 상태 비저장(stateless) 방식으로 설계
- 서버는 그룹에서 상호 교환이 가능해야 함
- 워크로드를 처리할 만큼의 충분한 용량이 있는지 체크
- Auto Scaling이 쉬움
2. Amazon Simple Queue Service (SQS)
- 서비스 간 데이터를 임시 저장하고 순차적으로 전달하는 중간 저장소 역할을 하는 메시지 큐 서비스
- 서비스 가용성에 관계없이 메시지를 손실 없이 전송
- 비동기 통신, 비동기 처리를 위한 핵심 도구
1) 대기열 유형
표준 대기열
- 최소 1회 전송
- 최선의 노력으로 순서화, 순서 보장 X
FIFO 대기열
- 정확한 1회 처리
- 제한된 처리량
- 순서 보장
2) 이점
- 확장성: 수백만 개의 메시지도 처리 가능
- 안정성: 여러 데이터 센터 및 서버에 중복 저장
- 동시성: 병렬 읽기/쓰기 가능
- 보안: API 자격 증명 기반 접근 제어
3) 주요 기능
가시성 제한 시간 (Visibility Timeout)
- 메시지를 수신한 후 일정 시간 동안 '잠금' 상태
- 이 시간 내 처리 완료 후 삭제
- 실패 시, 시간이 지나면 다시 큐로 돌아감 (재시도 가능)
DLQ (Dead Letter Queue)
- 처리 실패 메시지를 따로 저장하는 대기열
- 같은 리전, 같은 계정에 존재해야 함
- 문제 파악 및 재처리에 유용
4) 사용 사례
- 작업 대기열: 백엔드 작업 처리 분산
- 배치 작업 버퍼링: 대량 처리 전 임시 저장
- 요청 오프로딩: 요청을 빠르게 큐에 넣고, 백그라운드 처리
- 팬아웃(Fan-out): 한 메시지를 여러 소비자에게 전달 (SNS와 함께 사용)
- Auto Scaling 연계: 메시지 수에 따라 인스턴스 자동 조절
3. Amazon Simple Notification Service (SNS)
알림을 설정하고 운영할 수 있는 Publish/Subscribe 기반의 메시징 서비스이다.
주제에 메시지를 게시하면, 해당 구독자들이 메시지를 수신한다.
1) 구독자 유형
유형 | 설명 |
일반 텍스트 또는 JSON 형식 이메일 발송 | |
HTTP/HTTPS | 엔드포인트로 POST 요청 전송 |
SMS | 문자 메시지 발송 |
Amazon SQS | 메시지를 큐로 전송하여 비동기 처리 가능 |
모바일 푸시 메시징 | Android, iOS 등 앱 푸시 지원 |
AWS Lambda | 메시지를 이벤트로 받아 자동 실행 |
2) 주요 특징
- 단일 메시지 발송(Publish) → 다수의 구독자에게 동시에 전달
- 순서는 보장되지 않음, 메시지 간의 관련성 없음
- 회수 불가 (한 번 발송된 메시지는 취소 불가능)
- HTTP/HTTPS 엔드포인트는 재시도 기능 제공 (장애 대응)
- 메시지 크기 제한: 최대 256KB
3) SNS vs SQS
SNS | SQS | |
메시지 지속성 | No | Yes |
전송 메커니즘 | 푸시(수동적) | 폴링(능동적) |
생산자/소비자 | 게시/구독 | 송신/수신 |
배포 모델 | 일대다 | 일대일 |
4. Amazon MQ
- Apache ActiveMQ 또는 RabbitMQ 기반의 완전관리형 메시지 브로커 서비스
- 클라우드 상에서 메시징 워크플로우를 쉽게 설정하고 운영할 수 있게 함
- 기존 온프레미스 메시징 환경을 클라우드로 이전할 때 유리함
1) 주요 특징
- 브로커 관리 : ActiveMQ(또는 RabbitMQ)를 AWS가 자동 프로비저닝 및 관리
- 고가용성 지원 : 장애 대비를 위해 자동 복구, 멀티 AZ 배포 가능
- 다양한 프로토콜 지원 : JMS, NMS, AMQP, STOMP, MQTT, WebSocket 등 표준 메시징 프로토콜을 광범위하게 지원
- 기존 코드 재사용 : 기존의 메시징 코드를 다시 작성할 필요 없음 (기존 JMS 코드 그대로 사용 가능)
- 트랜잭션 지원 : JMS 기반의 로컬 및 분산 트랜잭션 지원
5. 웹 규모 스토리지 설계
1) 웹 스토리지 패턴
- 대규모 파일 전송 시, 웹 서버 자체에서 처리하면 네트워크 지연 발생 가능
- 사용자 생성 콘텐츠는 웹 서버 간 분산 필요
- 정적 파일은 Amazon S3에 저장하여 성능과 확장성 확보
- S3에 저장된 객체는 퍼블릭으로 설정 시 사용자 직접 액세스 가능
2) S3에 정적 콘텐츠를 저장하는 이유
- 높은 내구성 : 리전 내 여러 시설에 중복 저장
- 무결성 보장 : 체크섬으로 데이터 손상 여부 확인
- 버전 관리 : 객체의 모든 버전을 저장, 복원 가능
- 일관성 모델 : 쓰기 후 읽기 일관성(새 객체 PUT), 최종 일관성(객체 덮어쓰기 및 삭제)을 제공
3) S3 성능 최적화 팁
- 가까운 리전 선택 → 지연 시간 감소
- 객체 이름(Naming Scheme) 신경 쓰기
- 성능 병목 방지를 위해 키에 16진수 해시 접두사 활용
- 고성능 요청량 기준
- 초당 100 PUT/LIST/DELETE 이상
- 초당 300 GET 이상 → 파티션 분산 필요
- 보조 인덱스 유지
- 검색 성능 향상을 위해 별도 인덱스 테이블이나 DB 활용
💡파싱이란
문자열이나 데이터를 의미 있는 구조로 해석하고 쪼개는 과정을 말한다.
4) Amazon CloudFront
AWS의 CDN 서비스로 전 세계 엣지 로케이션에서 콘텐츠를 캐싱하여 지연 시간 단축, 속도 향상, 비용 절감을 할 수 있는 서비스이다.
4-1) 주요 기능 및 특징
- 캐싱 : 자주 요청되는 콘텐츠를 엣지에서 캐싱해 빠르게 전달
- 다단계 캐싱 : 여러 계층에서의 캐싱을 통해 성능을 높이고 비용을 낮춤
- TCP/IP 최적화 : Keep-Alive 연결로 왕복 시간 최소화
- SSL 종료 최적화 : 최종 사용자와 가까운 엣지에서 SSL/TLS 처리
- POST/PUT 업로드 최적화 : 동적 콘텐츠 처리 가능
- 지연 시간 기반 라우팅 : 사용자에게 가장 가까운 위치로 라우팅
- 리전 엣지 캐시 : 리전에 독립적인 캐시로 효율적인 분산 처리
- 정적 콘텐츠의 CNAME : 개별 도메인 설정 가능
4-2) 캐시 제어 및 콘텐츠 관리
- 캐시 제어 헤더 : Cache-Control, Expires 등으로 캐시 동작 제어
- TTL (Time to Live) : 캐시 유효 기간 설정
- 객체 이름 변경 : 캐시 무효화를 위한 전략적 네이밍 적용
- 객체 무효화 : 즉시 캐시 제거 가능 (요금 부과로 권장하진 않음)
- 단일 CloudFront 배포 : 정적·동적 자산 모두 하나의 도메인으로 서비스 가능 → 관리 및 성능 최적화
4-3) 사용자 정의 SSL 지원
- 기본적으로 CloudFront는 배포 생성시 생성되는 .cloudfront.net 도메인을 통해 HTTPS로 콘텐츠를 제공
- 자체 도메인 이름 사용 가능
- 사용자 정의 SSL 인증서를 적용해 고유 도메인 + HTTPS 통신 구현 가능
- 인증서 제공 방식
- AWS Certificate Manager (ACM)
- IAM에 직접 업로드한 인증서
6. 일반 보안 공격 차단
1) DDoS (Distributed Denial of Service) 공격
- 목적: 사용자들이 웹 사이트 또는 앱에 정상적으로 접근하지 못하도록 방해
- 공격 방식: 네트워크, 애플리케이션 레벨의 트래픽 과부하 유발
주체 | 역할 |
AWS | DDoS 완화 기술 기본 제공멀티 홈(Multi-Homed) 네트워크 구성으로 다양한 인터넷 접근 경로 확보 |
고객 | 공격 노출 최소화리소스에 적절한 보안 설정요청 수 증가 및 한도 모니터링 |
-> CloudFront로 DDoS 공격 완화(엣지에서 차단, 오리진 보호)
2) Amazon Inspector를 사용한 일반 공격 방지
- 자동화된 보안 취약점 평가 서비스
- EC2 인스턴스 및 컨테이너 이미지의 취약점 탐지
- CVE 기반으로 일반 공격 경로(취약 패키지 등) 사전 방
3) AWS Shield
- DDoS 공격에 특화된 방어 서비스
- 인프라 변경 없이 적용 가능
- 지연 시간 최소화, 비용 효율 유지
- 계층별 보호 제공
- Shield Standard: 모든 AWS 고객에게 무료 기본 보호
- Shield Advanced: 고급 보호, 모니터링, 자동 대응, 24/7 대응 팀 포함
4) Amazon GuardDuty
- 지능형 위협 탐지 서비스
- 지속적인 모니터링을 통해 의심스러운 활동 자동 탐지
- 분석 데이터 소스 : AWS CloudTrail, VPC Flow Logs, DNS 로그 등
- 작동 방식 : 활성화 -> 지속적인 분석 -> 지능형 위협 탐지 -> 실행 가능한 경고 활용
7. AWS Key Management Service (KMS)
- 데이터 암호화와 키 관리를 위한 완전관리형 서비스
- 다양한 AWS 서비스(EBS, S3, RDS 등)와 연동 가능
- 봉투 암호화(Envelope Encryption)를 사용한 2계층 키 구조 사용
- CMK (Customer Master Key) : 마스터 키로 KMS가 관리
- Data Key : 실제 데이터를 암호화하는 키로 CMK로 암호화됨
8. EC2 관련 개념
- 인스턴스 : 가상 컴퓨팅 환경
- AMI : 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿
- 인스턴스 유형 : 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량의 여러 가지 구성을 제공
- 인스턴스 스토어 볼륨 : 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 모드로 전환 또는 종료 시 삭제됨
- Amazon EBS(Elastic Block Store) : 영구 스토리지 볼륨에 데이터 저장
- 보안 그룹 : 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능
💡 HVM (Hardware Virtual Machine)
하드웨어 가상화 방식으로 하드웨어에 가까운 수준에서 가상화가 이루어져 성능이 더 좋다. EC2 대부분의 최신 AMI는 HVM 기반이다.
반대 개념 : PV (Paravirtualization), 성능이 낮아서 현재는 거의 사용하지 않음
✍️ 하루 회고
오늘 수업에서는 AWS의 나머지 개념들을 정리하고, EC2 인스턴스를 생성해 직접 접속해보는 실습을 진행했다.
이미 개발 프로젝트를 하며 EC2 인스턴스를 여러 번 만들어본 경험이 있어서 설정 과정은 익숙했고 큰 어려움은 없었다. 오히려 배운 개념들을 직접 확인해보는 과정이었다. 그동안은 대부분 Linux나 Ubuntu 기반으로 인스턴스를 생성해왔는데, 이번에는 처음으로 Windows 인스턴스를 생성해보는 경험을 할 수 있었다.
하지만 인스턴스 사양이 낮다보니, Windows OS를 실행하는 데 너무 느려서 불편함을 많이 느꼈다. 왜 대부분의 서버 운영 환경에서 Linux 계열이 주로 사용되는지 체감할 수 있었던 순간이었다.
728x90