AWS 탄력성 부여 3단계 – 아키텍처

AWS 탄력성을 아키텍처 설계에 적용하는 것은 매우 중요합니다. 서비스에서 발생할 수 있는 여러 상황을 유연하게 탄력적인 대응이 가능해야 합니다.

이전에 클라우드 컴퓨팅에 대해 궁금하신 분은 여기를 참고바랍니다.

참고로 아마존 아키텍처 성공 사례는 여기를 참고바랍니다.

목표

  • AWS 아키텍처 설계 시 Compute 탄력적인 구성 방법을 이해할 수 있습니다.
  • 코드 레벨에서 탄력적인 배포 방법을 이해할 수 있습니다.
  • AWS의 관리 영역에서 탄력적인 운영 방법을 파악할 수 있습니다.

1. Compute 영역 AWS 탄력성

Elastic Load Balancing

  • 네트워크 트래픽을 효율적으로 분산시켜 주는 서비스입니다. 높은 탄력성과 가용성으로 EC2 인스턴스 앞에 구축됩니다.
  • Auto-Scaling과 함께 서비스를 탄력적으로 확장시킵니다. 여러 인스턴스 및 여러 가용 영역에서 트래픽을 자동으로 라우팅해 줍니다.
  • 구축 사례
    • AWS EC2 인스턴스의 상태를 모니터링하면서 비정상적인 EC2는 제외하고 트래픽을 EC2에 전달하여 시스템의 내결함성을 강화합니다.
    • ELB가 통합 인증 관리 및 SLL 복호화를 제공하므로써 인증서 관리를 수행하고 EC2는 서비스 트래픽만 수용하여 리소스의 활용성을 높입니다.

Auto Scaling

  • 사용자가 정의한 조건에 따라 자동으로 EC2 용량을 확장, 축소하여 서비스의 품질을 유지하는 서비스입니다.
  • 시스템에 부하가 급증할 경우, Amazon EC2 인스턴스의 수를 자동으로 증가시키기 때문에 성능을 그대로 유지할 수 있습니다.
  • 부하가 없을 때는 자동으로 EC2 용량을 감소시켜 비용를 최적화 시킵니다.
  • 구성 요소
그룹시작 구성확장 계획
논리적인 인스턴스의 관리용 집합EC2를 구성할 때 활용하는 템플릿확장을 트리거링하는 임계값이나 방식 지정
최소, 최대 개수와 요구하는 인스턴스 수를 지정인스턴스 이미지 정보, 사이즈, 보안그룹 등 시작에 관련한 정보 지정
compute aws 탄력성

2. 코드 레벨의 AWS 탄력성

Elastic Beanstalk

  • Amazon Web Services에서 제공하는 서비스는 100개 이상입니다. 이 서비스들을 전부 관리하는 방법을 파악하는 꽤 어려운 작업입니다. 따러서 이 Elastic Beanstalk를 사용하면 애플리케이션이 실행되는 인프라에 대해 자세히 알지 못해도 AWS 클라우드에서 웹 애플리케이션 및 서비스를 간편하게 배포하고 확장할 수 있는 있습니다.
  • Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker를 사용하여 Apache, Nginx, Passenger, IIS와 같은 서버를 지원합니다.
  • 소스 코드를 업로드하면 EC2 용량 프로비저닝, 로드밸런싱, Auto Scaling부터 시작하여 애플리케이션 상태 모니터링까지 자동으로 배포 처리합니다.
  • 애플리케이션 생성, 애플리케이션 소스 번들의 형태(예: Java.war 파일)로 애플리케이션 버젼을 Elastic Beanstalk에 업로드하고 관련 정보를 제공합니다.
  • AWS 공식 문서는 여기를 참고바랍니다.
  • Elastic Beanstalk를 이용한 샘플 웹 애플리케이션을 배포하는 방법은 여기 링크를 참고하십시요.

OpsWorks

  • OpsWork는 AWS OpsWorksPuppet 또는 Chef를 사용하여 어플리케이션의 구성을 자동화하고 대규모 자원의 구성 정보를 관리 및 운영 해주는 구성 관리 서비스입니다. EC2 인스턴스 또는 온프레미스 컴퓨팅 환경 전체에서 서버가 구성, 배포 및 관리되는 방법을 자동화할 수 있습니다.
  • 스택, 계층, 앱 같은 개념을 사용하여 어플리케이션을 모델링 및 시각화하고 대시보드를 통해 어플리케이션 레이어 상태를 관리합니다.
  • AWS OptsWorks에서는  AWS Opsworks for Chef AutomateAWS OpsWorks for Puppet Enterprise 및 AWS OpsWorks Stacks라는 세 가지 제품을 제공합니다.
  • 공식 문서는 여기를 참고바랍니다.

CodeDeploy

  • CodeDeploy 실행 중인 Amazon EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수 또는 Amazon ECS 서비스 등 모든 인스턴스에 대한 코드 배포를 자동화하여 안전하고 신속하게 어플리케이션을 배포할 수 있는 서비스입니다.
  • Console 또는 CLI를 통해 손쉽게 배포 상태를 중앙에서 추적할 수 있으며, 각 어플리케이션 수정 버젼이 언제 어떤 인스턴스에 배포되었는지 관리합니다.
  • CodeDeploy를 사용하면 새로운 기능을 신속하게 출시, AWS Lambda 함수의 버전 업데이트, 애플리케이션 배포 시 가동이 중지되는 현상을 방지, 오류가 발생하는 수동 배포와 관련된 다양한 위험 요소 없이 애플리케이션 업드에트에 따른 복잡성을 처리할 수 있습니다.
  • 공식 문서는 여기를 참고바랍니다.

3. 관리 영역의 AWS 탄력성

CloudWatch

  • 장애에 대한 디자인을 구성합니다.
  • 실시간 모니터링 및 장애 감지를 수행합니다.
  • 대시보드, API를 통해 관리의 편의성을 제공합니다.
  • Auto-Scaling 그룹 설정 시 확장에 대한 임계값 요소에도 모니터링 값이 필수로 작용합니다.
cloudwatch

CloudFormation

  • 인프라 리소스의 묶음을 순서에 따라 쉽게 생성, 구성, 관리하는 서비스입니다.
  • 리소스 환경을 명시적으로 코드화하여 프로비저닝 및 업데이트를 탄력적으로 관리합니다.
cloudformation

정리

AWS 컴퓨트 영역의 탄력성

  • Elastic LoadBalancing, Auto Scaling 등을 통해 컴퓨트 영역을 탄력적으로 운영하여 내결함성과 성능을 향상시켜 높은 품질로 어플리케니션을 서비스할 뿐만 아니라 효율적인 비용 운영도 가능하게 합니다.

AWS 코드 레벨의 탄력성

  • Elastic Beanstalk, OpsWorks, CodeDeploy 등을 통해 코드 레벨을 탄력적으로 운영하여 손쉽고 빠르게 다양한 서비스 레이어를 효과적으로 관리합니다.

AWS 관리 영역의 탄력성

  • CloudWatch, CloudFormation 등을 통해 관리 영역에서 모니터링과 리소스들을 Code화하여 보다 명시적,탄력적으로 운영합니다.

Back to top