-
천만 사용자를 위한 AWS 클라우드 기반 웹 서비스 확장하기1세미나, 영상 요약정리 2023. 3. 30. 00:01728x90
2016년도에 AWS Summit Seoul에서 열린 AWS 테크에반젤리스트 윤석찬님의 발표를 요약해보고자 합니다.
https://www.youtube.com/watch?v=8uesJLEXxyk
테크에반젤리스트란?
특정 기술을 널리 전파하는 일을 담당하는 직업, 그 사람 · 특정 기업의 기술을 시장에 널리 전파시키기는 역할을 전담으로 하는 전문가를 칭합니다.
AWS 기본 지식 3가지
- 고가용성 글로벌 클라우드 인프라를 통해 트래픽 처리 (12개의 리전, 33개의 가용영역, 55개의 엣지 로케이션)
- User -> Route 53 -> Amazon CloudFront -> Edge Locations
- User -> Route 53 -> Seoul Region -> AZ1(가용영역), AZ2
- 언제나 원하는 대로 사용한 만큼
- g2.8xlarge는 버지니아 기준으로 시간당 2.6달러
- 50개로 구성하게 되면 vCPU 1,600개 GPU 200개
- 시간당 130달러로 슈퍼컴퓨터의 성능을 가질 수 있음
- 스팟인스턴스를 사용하면 13달러로 사용가능
- AWS 클라우드의 다양하고 폭넓은 서비스
- 70여개 이상의 서비스 조립을 통해 유연한 활용 가능
사용자 1명
Amazon Route 53과 EC2 Instance로 구성됩니다.
이를 통해 도메인 네임 서비스, 웹 서버, 데이터베이스, 파일 저장을 구축할 수 있습니다.
서버 트래픽이 증가하면 더 좋은 인스턴스로
EC2를 더 좋은 인스턴스를 활용하여 수직적 확장이 가능합니다.
사용자 10+
서버가 죽으면 모든 기능이 먹통이 됩니다.
이에 대한 대안으로 DB 서버와 웹 서버를 분리해서 관리하면 됩니다.
데이터베이스는 EC2에 직접 설치하거나 Amazon Aurora를 통해 관리할 수 있습니다.
RDS보다 성능이 높고, 빠른 응답속도를 갖는 서비스여서 추천됩니다.
NoSQL를 고려할 경우에도 Amazon DynamoDB가 추천됩니다.
사용자 100+
가급적 Application에 집중하고 Infra관리는 편리한 DB운영을 위해 Amazon RDS를 선택합니다.
만약 웹 서버에 문제가 발생하면 장애복구를 진행해야 합니다.
사용자 1000+
Elastic Load Balancing을 통해 2개의 Instance에 트래픽을 보낼 수 있습니다.
또한 Multi-AZ 서버를 구성하여 가용 영역을 통해 고가용성을 확보합니다.
만약 하나의 가용영역이 죽더라도 다른 가용영역을 통해 서비스할 수 있습니다.
데이터베이스를 이중화하여 RDS를 Master Slave로 나누어 서비스할 수 있습니다.
사용자 10,000+
이제는 트래픽이 증가함에 따라 EC2 서버를 수평적으로 늘려가면 되고 DB의 read Replica도 증설하면 됩니다.
그러면서 높은 성능와 가용성을 위한 고급 클라우드 아키텍처로 바꿔나가야 합니다.
- 성능을 위한 로드 분산
- CSS/JS 파일 및 사용자 업로드 이미지를 Amazon S3 및 CloudFront로 이전
- ElasticCache 및 DynamoDb를 활용하여 DB 부하를 줄입니다.
- 동적 컨텐츠에 대해서도 Amazon CloudFront를 활용
- Instance를 가볍게 하여 최대한 성능을 뽑아내야 합니다.
- 가용성을 위한 오토스케일링
- CPU 사용률 혹은 네트워크 트래픽에 따라 자동 스케일-인/아웃
- 수요 곡선에 따라 인스턴스 사용 가능하므로 비용 절감 가능
- 트래픽에 따라 낮에는 Instance 3대, 밤에는 Instance 1대를 유지하면서 비용을 절감시킬 수 있습니다.
사용자 1,000,000 +
Application에 집중하기 위해 인프라 및 서비스 앱 배포를 자동화할 필요가 있다
- AWS OpsWork
- AWS Elastic Beanstalk
AWS 자원 모니터링 및 로그 분석
- AWS CloudWatch
- AWS Elasticesearch Service
서비스 재활용 - 바퀴를 재개발하지 말자
- CloudSearch(텍스트 검색)
- SQS(메시지 큐 서비스 구현)
- SES(대량 이메일 전송)
- SWF(워크플로 기반 구현)
- Elastic Transcoder(동영상 인코딩)
사용자 5,000,000 +
- 컨테이너를 통한 EC2 인스턴스 효율화
- AWS Lmambda를 통한 서버 없는 아키텍처
- Weeks(On-Premises) -> Minutes(Amazon EC2) -> Second(Amazon EC2 Containers Services) -> Milliseconds(AWS Lambda)
- 마이크로 서비스(API Gateway, Lambda, EC2 Container Service)를 AWS 자원을 활용하여 서버 없이 구현할 수 있다.
천만 사용자를 위한 십계명
- Multi-AZ 아키텍처로 고가용성 확보
- 부하 분산을 통해 성능 극대화
- 아키텍처 전 영역에서 증설 감안
- 내외부의 캐시를 적극 활용
- 오토스케일링 사용, 두 번 사용!
Dispatch CTO 백승현님의 발표
Dispatch가 AWS를 사용하는 이유
특종기사가 올라왔을 때, 급격히 늘어나는 트래픽을 처리하기 어려웠습니다.
외주를 통한 기존 데이터센터 인프라 운영으로 비용이 증가하게 되었습니다.
클라우드 최적화하기
- Apache -> Nginx로 웹서버 경량화
- WebServer와 DataBase에 글로벌 캐시도입
- 이로 인해 서버의 Spec이 내려가게 되고 서버의 비용이 70% 감소
인력 비용 절감
- developer + infra manager -> developer
- 낮은 학습 비용을 통한 인프라 영역에 개발자가 들어올 수 있게 됨
728x90'세미나, 영상 요약정리' 카테고리의 다른 글
분산 시스템에서 데이터를 전달하는 효율적인 방법 (0) 2023.05.03 ㄷㄷㄷ: Domain Driven Design과 적용 사례공유 (1) 2023.04.23 k8s와 gitlab(+ArgoCO)을 이용한 CI/CD 모험기 - 손주호 (0) 2023.01.29 클라우드 환경에서의 Kafka 운영기 (0) 2023.01.23 고품격 Kotlin 개발: 테스트 코드를 우아하게 작성하는 방법 (0) 2023.01.10 - 고가용성 글로벌 클라우드 인프라를 통해 트래픽 처리 (12개의 리전, 33개의 가용영역, 55개의 엣지 로케이션)