AWS 인프라 정리I
프리온보딩에서 진행한 AWS 인프라 설계 강의 내용을 정리 한 것 입니다.
목표 : AWS 인프라를 하나하나 깊게 파기보다는 전체적인 이해
AWS란 무엇일까?
On-premise vs Cloud Computing
On-Premise : 온프레미스란 기업의 서버를 클라우드 같은 원격 환경에서 운영하는 방식이 아닌, 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식
Cloud Computing : 클라우드 컴퓨팅은 인터넷을 통해서 데이터를 저장하거나 데이터베이스, 서버, 네트워킹, 소프트웨어와 같은 도구, 애플리케이션 등 다양한 서비스를 제공하는 방식
Cloud Computing을 쓰는 이점
AWS 인프라의 전체적인 모습
1. 인프라 관련 요소들
- AWS API Gateway, AWS S3, AWS ELB, AWS CloudFront, AWS Secret Manager, 스냅샷
2. 컴퓨팅 파워 (서버)
- AWS EC2, AWS Elastic Beanstalk, AWS ECS, AWS Fargate, AWS Lanbda (Serverless)
3. Message Queue
- AWS SQS, AWS MSK, AWS Kinesis
4. Database
- AWS RDS, AWS DynamoDB, AWS ElastiCache
1. 인프라 관련 요소들
AWS VPC
Virtual Private Cloud
- 가상 네트워크 서비스로 퍼블릭 네트워크와 프라이빗 네트워크를 분리하고 모니터링 할 수 있도록 해주는 서비스
- 네트워크 구성과 관련된 사실상 모든 기능을 담당하며, 자체 데이터 센터에서 운영하는 기존 네트워크와 유사한 형태
AWS API Gateway
API Gateway
- 어떤 규모에서든 개발자가 API를 손쉽게 생성,게시,유지 관리,모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스
- 서버의 "대문"과 같은 역할
- API Gateway가 할 수 있는 것들 :
- 트래픽 관리(제한), CORS 지원, 권한 부여 및 엑세스 제어, 제한, 모니터링, API 버전 관리, 인증관련 등
AWS ELB
Elastic Load Balancing (ELB)
- 다수의 컴퓨팅 리소스 (EC2, Lamdba 등)를 부하 분산시켜주는 아주 중요한 서비스
- 총 3가지 종류의 Balancer (Applicationg Load Balancer, Gateway Load Balancer, Nerwork Load Balancer)가 있으며, Application Load Balancer가 일반적인 상황에서 가장 많이 쓰임
AWS S3
Simple Storage Service (S3)
- 가장 오래된 AWS 서비스중 하나로 엄청난 내구성과 가용성을 자랑하며 이미지, 동영상, 오디어 파일과 같은 정적파일들을 용이하게 관리하도록 돕는 스토리지 서비스
- 단순 파일의 저장 공간을 넘어서서 데이터를 저장하는 스토리지 플랫폼
ex :
- 데이터 처리 : S3에 저장되는 Trigger를 이용해 람다를 실행 시킬 수도 있음
- 로그 : AWS 안에서 이뤄지는 대부분의 로그는 S3에 저장 됨
- 쿼리 지원 : AWS Athena를 통하여 S3에 저장된 파일을 쿼리 할 수도 있음
- 호스팅 : Single Page Application (React)를 호스트 할 수도 있음
AWS CloudFront
Amazon CloudFront
- 전 세계에 있는 AWS 엣지 로케이션을 통하여 CDN 서비스를 제공 함
- 현재 48개국 90개가 넘는 도시에서 410개가 넘는 접속 지점 (엣지 로케이션 400개 이상, 리전별 중간 티어 캐시 13개)로 구성된 글로벌 네트워크를 지원
- 속도는 높이고, 가격은 내리며, 서버 부하는 줄일 수 있음
AWS Secret Manager / Parameter Store
Amazon Secret Manager / Parameter Store
- 데이터베이스 보안 인증 정보 및 API 키와 같은 보안 정보를 안전하게 암호화 하고 중앙 집중식으로 감시할 수 있도록 도와주는 서비스
- .env 파일을 서버 별로 따로 관리하기 보다는 한 곳에서 집중적으로 관리
- DB 정보와 같은 민감한 정보는 암호화가 지원이 되는 Secret Manager에 저장
- 간단한 정보 (ex. Endpoint)는 Parameter Store에 저장하여 사용
2. 컴퓨팅 파워 (서버)
AWS EC2
Amazon Elastic Cloud Compute
- 가장 기본적인 형태의 클라우드 컴퓨팅 ( = 클라우드 컴퓨터 한 대)
- 온디맨스 : 선결제 금액이나 장기 약정 없이 저렴하고 유연하기 Amazon EC2를 사용하기 원하는 사용자
EC2를 사용하기 원하는 사용자
스팟 인스턴스 : 시작 및 종료 시간이 자유로운 애플리케이션
Saving Plans : 1년 또는 3년 기간의 일정 사용량 약정을 조건으로 EC2 및 Fargate 사용량에 대해 저렴한 요금을 제공하는 유연한 요금
AWS Elastic Beanstalk
Amazon Elastic Beanstalk
- AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있는 서브스
(애플리케이션 코드를 업로드하기만 하면 작동)
- Elastic Beanstalk = EC2 + 배포 버전 관리 (롤백) + Elastic Load Balancer + 모니터링 + 로그 트래킹 + 오토 스케일링
- 다양한 언어 지원 : .NET / PHP / Java / Ruby ? Node.js / Python / Docker / Go
AWS Fargate
Amazon Fargate
- Fargate를 사용하면 더 이상 컨테이너를 실행하기 위해 가상 머신의 클러스터를 프로비저닝, 구성 또는 조정 할 필요가 없습니다. 따라서 서버 유형을 선택하거나, 클러스터를 조정할 필요가 없습니다. 따라서 서버 유형을 선택하거나, 클러스터를 조정 할 시점을 결정하거나, 클러스터 패킹을 최적화할 필요가 없습니다.
- 이전에는 컨테이너를 실행하기 위해서는 컨테이너를 실행할 Instance(EC2)를 싱행시켜야하였지만, AWS Fargare는 이러한 수고를 덜어 줌