ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 천만 사용자를 위한 AWS 클라우드 기반 웹 서비스 확장하기1
    세미나, 영상 요약정리 2023. 3. 30. 00:01

    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
    • 낮은 학습 비용을 통한 인프라 영역에 개발자가 들어올 수 있게 됨

    댓글

Designed by Tistory.