AWS Architecture
Table of Contents

- AWS에는 유명한 서비스들을 대부분 제공함. 베껴서 AWS만의 독자적인 서비스(보통 더 비쌈)나 기존의 서비스를 AWS에서 올려서 사용 가능.
- 한 서비스만 써도, 뒤에서 타서비스가 같이 켜지는 경우 多. EC2 on → VPC, EBS, IAM, CloudWatch
- 여러 서비스들을 하나씩 하는 게 불편하고 어려우니 통합된 서비스들(more managed)도 존재
- ex. LightSail : EC2 + VPC + EBS + 네트워크 + 방화벽 + 고정 IP + 스냅샷 + 간단한 콘솔 UI
요구사항에 맞게 서비스나 서버의 Architecture 구성하는 것이 중요하다.
=> 초기 스타트업을 위한 서버선택 가이드
Monolithic Architecture#
확장을 고려하더라도, 처음부터 복잡하게 서버를 설정할 필요는 없다. Monolithic Server 구성으로도 충분하다.
- 정적 페이지만 필요 : S3(정적 파일 저장소) + CloudFront(CDN)
- 동적 기능이 필요하지만, 주요하진 않을 때(ex. 방문자 카운트, 댓글, etc.) : S3 + CloudFront + Lambda
3-tier Architecture#
서버를 사용할 경우 보통은 3-tier architecture로, Front / Back / DB를 구분해서 설계한다.
- EC2 = AWS의 기본 컴퓨팅 자원
- EC2보다 More managed or 특정 서비스에 특화된 서버를 쓰고 싶으면 : Elastic Beanstalk, Fargate, Amplify, Sagemaker
- EC2를 Container로 관리 : ECS, ECR
- 데이터의 종류에 따른 DB 선택 : RDS, Aurora, …
Network 및 기본 설정.#
처음에 생성한 EC2에는 default VPC가 설정되어 있다. 방화벽과 같은 기능도 AWS에서 기본적으로 제공된다.
따라서 초기에는 크게 건들이지 않아도 무관하다.
하지만, 서비스가 커지면서 사용자가 늘어나고 사원수가 늘어나면, VPC 및 IAM 설정 등 추가해줄 필요가 생긴다.
VPC는 하나의 큰 네으퉈크에서, 기능과 보안 목적에 따라 서브넷으로 나뉜다. 예를 들어, 외부 접근이 필요한 웹 서버는 퍼블릭 서브넷에, DB는 프라이빗 서브넷에 배치한다.
트래픽이 늘어나면, Loadbalancing으로 트래픽을 분배하고, Autoscaling으로 서버 수를 조절 가능하다.
물리적 네트워크 관점에서도 동일하다.
단일 네트워크나 단일 장비에 의존하지 않기 위해 네트워크를 여러 구간으로 분리하고 각각을 독립적으로 운영한다.
서버에 트래픽이 늘 때, 장애가 나도 서비스가 돌아가게 이중화를 위해 라우터나 스위치를 늘리기도 한다.
Compute / Server#
EC2 : 가상 서버 컴퓨팅 서비스 (가상서버 + OS + 네트워크 + 스토리지)
AWS Compute Optimizer : Compute 리소스 전반(EC2, RDS 등)의 리사이징 추천 도구. 최소 30시간(끊김 없이)의 CloudWatch 메트릭 데이터가 쌓여야 한다. 비용 최적화에 도움.
- 무료. EC2에 CloudWatch Agent를 깔아서, Memory, Disk IOPS 등의 지표를 함께 수집하기.
Auto Scaling : 인스턴스 수 자동 조절 서비스 (EC2 관리 + 헬스 체크 + 트래픽 기반 증감 + 비용 최적화)
Elastic Beanstalk : app. 배포·운영 자동화 서비스 (EC2 + Auto Scaling + Load Balancer + 배포 관리 + 모니터링)
Lightsail : 소규모 프로젝트용 간편 서버 서비스 (EC2 + 스토리지 + 네트워크 + 고정 요금 + 관리형 콘솔)
Fargate : 서버 관리 없는 컨테이너 실행 엔진 (컨테이너 실행 + 서버리스 + 자동 확장)
App Runner : 컨테이너 기반 웹 서비스 자동 실행 서비스 (컨테이너 실행 + HTTPS + 오토스케일링 + 배포 자동화)
Amplify : 프론트엔드 앱 배포와 서버리스 백엔드(AWS 서비스) 연결을 쉽게 해주는 풀스택 개발 플랫폼. Compute / Server + CI/CD / 배포. 빠른 MVP 개발에 주로 사용.
Lambda : 이벤트 기반 서버리스 함수 실행 서비스. 함수만 작성하면 끝. (함수 실행 + 이벤트 트리거 + 자동 확장 + 서버 관리 제거)
EC2 vs. Fargate
[AWS] EC2가 아닌 ECS Fargate 사용 시 좋은 점 (Lv 1)
특징 Fargate EC2 기반 ECS 서버 관리 AWS가 관리 (서버리스) 사용자가 직접 서버를 관리 리소스 사용 방식 컨테이너 단위로 CPU/메모리 설정 EC2 인스턴스의 자원을 공유 확장성 자동으로 확장/축소 사용자가 EC2 인스턴스 추가/삭제 비용 구조 사용한 만큼만 비용 청구 EC2 인스턴스 크기에 따라 비용 발생 운영 복잡도 낮음 상대적으로 높음 EC2 < Elastic Beanstalk < Lightsail < App Runner
Lightsail : Autoscaling 지원 X
App Runner : EC2조차 안 보이는, 컨테이너 완전관리형 PaaS
실제 서비스에서는 그냥 EC2를 쓰는 게 나아 보임.
Security / Identity#
- IAM : 사용자·역할·권한을 관리하는 접근 제어.
- 보통 한 계정에서 IAM을 나눠 사용.
- 여러 계정 : Prod/Dev/Test 계정 분리할 때, 회사 조직/보안 요구 있을 때
- 암호화/키 서비스
- SSM(Parameter Store) : 서버·설정·자동화·접속(Session)까지 관리하는 운영 관리. 원걱접속(SSH) 및 파라미터 및 비밀값 관리에 사용.
- Secrets Manager : DB 비밀번호·API 키 같은 비밀정보 저장·회전 관리 서비스
- KMS : 암호화 키를 생성·보관·제어하는 키 관리. 위 둘 서비스 사용시 자동으로 켜짐. 엔진 느낌.
- KMS를 이용해 Lambda에서도 암호화 상태로 저장·사용 가능.
- 암호키 자체를 관리시 사용.
- 보안 서비스(방화벽) = WAF & Shield
- Shield : L3/L4에서 WAF보다 먼저 방어. DDoS(SYN/UDP Flood - 정상적인 TCP 수행 X. Kali의 악성 프로그램 등 이용) 공격을 자동으로 방어하는 보안 서비스. default로 Shield Standard 켜짐.
- WAF : 웹 공격(SQLi, XSS 등)을 차단하는 웹 방화벽 서비스. L7 DDoS(ex. 한 ip에서 내 웹사이트에 1초에 100번 접속 - Rate-based rule 등)도 방어. default X. 사용자가 직접 Web ACL 생성하고 리소스에 연결해야 동작
- Firewall Manager : AWS Organizations 환경에서 주로 사용. WAF & Shield 중앙 통제용.
- 인증서
- ACM : HTTPS용. Route53은 Domain 구매만. SSL/TLS 인증서를 발급·갱신·배포 관리하는 인증서 서비스
- PCA : 내부용 사설 인증서를 발급하는 프라이빗 CA 서비스. 내부 개발 환경 웹페이지 등에 사용.
- Cognito : 사용자 인증·가입·로그인 기능 제공하는 인증 서비스. S.S.와 같이 or 대체.
CI/CD / 배포#
- AWS CI/CD = CodeCommit → CodeBuild → CodeDeploy 조합이 기본 세트
- CodeCommit : Git 저장소 서비스
- CodeBuild : 테스트·빌드·Docker 이미지 생성 담당
- CodeDeploy : EC2·ECS·Lambda에 무중단 배포 담당
- CodePipeline : 소스→빌드→배포 흐름을 연결하는 파이프라인 오케스트레이터
- CloudFormation / CDK : IaC 기반 인프라 배포. EC2 등 복잡한 설정을 코드로
Storage#
- S3 : 인터넷/앱에서 접근 가능한 객체 스토리지. 무제한 용량, 이미지/로그/백업 등 다양한 데이터 저장 가능.
- EBS : EC2 전용 블록 디스크. OS, DB 등 사용. 인스턴스별 독립.
- EFS : EC2 인스턴스와 독립적으로 운영되는 여러 서버가 동시에 접근 가능한 공유 디스크. 여러 EC2에서 동시에 읽기/쓰기 공유 가능.
- Backup : AWS 서비스 전반 데이터 백업 관리 - EC2, RDS, DynamoDB, EBS, S3 등 백업을 한 곳에서
- EC2 인스턴스 자체는 스냅샷 개념이 없음. EC2 백업 = EBS 백업. 한 EC2가 여러 개의 EBS를 참조할 수도 있으므로, EC2, EBS 둘다 존재 하는 것.
- S3의 버전 관리, RDS의 DB 스냅샷 등 개별적으로 해도 되지만, Backup을 사용하는 게 권장됨.
- 위의 개별 서비스를 활성화한다고 해서 AWS Backup이 자동 활성화되지는 않음. 따로 돌아감.
- S3 Glacier : 장기 아카이브용 저비용 객체 스토리지. 데이터 복원 시 지연 발생 가능.
DB#
- RDBMS
- AWS RDS : 관계형 DB를 관리형으로 제공하는 서비스. MySQL, PostgreSQL 등 지원.
- Amazon Aurora : AWS에서 만든 전용 DB. RDS 호환 고성능 분산형 관계형 DB. AWS 최적화.
- Key-Value / NoSQL
- Amazon DynamoDB : 서버리스 키-값 NoSQL DB. 초고속, 자동 확장.
- Amazon Keyspaces : Cassandra 호환 분산형 NoSQL DB.
- In-Memory / Cache (Redis)
- Amazon ElastiCache : Redis/Memcached 기반 인메모리 캐시 DB.
- Amazon MemoryDB for Redis : 영속성 있는 Redis 호환 인메모리 DB. 더 비쌈.
- Document
- Amazon DocumentDB : MongoDB 호환 문서형 NoSQL DB.
- Graph
- Amazon Neptune : 그래프 DB. 관계 탐색 최적화.
- Time Series
- Amazon Timestream : 시계열 데이터 전용 DB. IoT, 모니터링용.
- Data Warehouse / Analytics
- Amazon Redshift : 대용량 분석용 컬럼 기반 데이터 웨어하우스.
Messaging / Queue#
- SQS : 메시지 큐 서비스. 비동기 작업 처리용.
- SNS : Pub/Sub 메시징 서비스. 다수 구독자에게 알림 전송. 브로드캐스팅용.
- SES : 대량 이메일 발송 서비스. 트랜잭션/마케팅 메일 전송용.
- Amazon MQ : Apache ActiveMQ 또는 RabbitMQ 엔진을 AWS가 관리형으로 운영해주는 메시지 브로커 서비스
- AWS End User Messaging Pricing : SMS, Email, Push, Voice 같은 “엔드유저 대상 메시징”을 묶은 상위 개념 서비스
- EventBridge : Lambda로도 다 가능하지만, 보다 조금 더 친절·편리. 이벤트 기반 메시징/라우팅 서비스. 서비스 간 이벤트 연결.
- 람다는 코드 실행 위주로, EB는 다른 서비스로 언제, 어떤 이벤트로, 누구에게 보낼지 위주로
- Eventbridge 개념 및 사용 방법
- Kafka
- Kinesis : 실시간 스트리밍 메시지 처리용 서비스. AWS 자체 스트리밍 서비스
- MSK : Apache Kafka 관리형 스트리밍 플랫폼. Kafka 오픈소스를 그대로 사용 가능.
Container#
- ECS : AWS 네이티브 컨테이너 오케스트레이션 서비스. EC2/Fargate에서 컨테이너 실행.
- ECR : Docker 컨테이너 이미지 저장소. 프라이빗 레지스트리.
- EKS : k8s관리형 서비스. 쿠버네티스 표준 환경 제공.
Networking / CDN#
- CloudFront : 글로벌 CDN 서비스. 정적/동적 콘텐츠를 사용자와 가까운 엣지에서 캐싱·전송. 지연시간 감소, 트래픽 비용 절감, WAF·Shield 연동 가능.
- VPC (Virtual Private Cloud) : AWS 내 전용 가상 네트워크 공간. IP 대역, 서브넷, 라우팅 직접 설계.
- Security Group : 인스턴스 단위 방화벽. 허용 규칙만 존재하는 상태 기반 필터.
- NACL (Network ACL) : 서브넷 단위 방화벽. 허용·거부 모두 설정 가능한 무상태 필터.
- ELB (ALB / NLB) : 트래픽을 여러 대상에 분산하는 로드밸런서.
- ALB (Application Load Balancer) : L7. HTTP/HTTPS 레벨. 경로·호스트 기반 라우팅.
- NLB (Network Load Balancer) : L4. TCP/UDP 레벨. 초고성능, 낮은 지연.
- Route 53 : 기본적으로 DNS 서비스. 추가로 도메인 관리 + 트래픽 라우팅 + 헬스체크. 지리·지연·가중치 기반 라우팅, 헬스체크 지원.
Log / Monitoring#
CloudWatch + CloudTrail 까지는 기본 세팅으로.
EC2 콘솔에서 보는 것은 CloudWatch 기반 메트릭.
- CloudWatch = Prometheus + Grafana를 합쳐놓은 AWS 서비스
- Prometheus = CloudWatch의 메트릭 수집 + 시계열 저장 역할
- Grafana = CloudWatch의 대시보드 화면 역할
- AWS CloudWatch : AWS 기본 모니터링 서비스. P., G. 따로 쓰는 거에 비해 비쌈. AWS에 종속됨.
- EC2, RDS, Lambda 등 메트릭 자동 수집
- 로그 수집 및 검색
- 알람 설정 → SNS 연동
- AWS CloudTrail : AWS API 호출 감사 로그 서비스
- 누가 어떤 리소스를 변경했는지 기록
- IAM, 보안 사고 추적 핵심
- AWS X-Ray : 분산 트레이싱(APM) 서비스
- CloudTrail이 기록용이면, X-Ray는 디버깅용.
- 사용자 요청 1건이 어디 서비스에서 느려졌는지 추적. 특히 MSA용.
- Amazon Managed Grafana
- Amazon Managed Service for Prometheus
There are no articles to list here yet.