server/aws

[AWS] EC2 - Scalability

nani-jin 2024. 5. 6. 16:48

Scalability = 컴퓨터적 수요에 탄력적으로 대응하는 것

 

 

1. Scale up

  • 컴퓨터 자원이 더 필요할 때 더 좋은 컴퓨터(한대)로 업그레이드
    • 스트레스 테스트로 부하를 발생시켜 스케일 업을 실습해 볼 수 있음
    • 동시접속 사용자 수를 1~200까지 늘려보면, 200명일 때 개별처리속도가 7초에 가까워지는 것을 보게되는데 이때 사용자 입장에서는 굉장히 느린 웹사이트라고 느끼게 됨 → Scale up 고려 시점
    • 최대한 scale out 보다는 scale up을 통해 적정 수준의 인프라를 구축하기를 권장함

 

 

 

 

2. Scale out

  • 컴퓨터 자원을 한 대가 아닌 여러대로 운영해 부하를 분산하는 것
    • 하나의 뿌리로 여러 나무를 키우는 것과 같음 ≒ Pando
    • AWS에서는 Elastic Load balancer(ELB)로 부하를 자동으로 분산할 수 있음

 

 

 

3. Elastic Load Balancer(ELB)

  • 네트워크 트래픽을 자동으로 분산해 애플리케이션 확장성을 개선해주는 서비스
    • 우리가 운영하는 서비스에 ELB를 적용하면, 도메인으로 접속했을때 ELB의 주소로 접속되어 트래픽이 분산됨

 

  • 주의사항
    • 우리가 운영하는 웹 애플리케이션이 사용자가 등록한 정보로 업데이트된다면, 아래 그림 중 왼쪽 인프라는 사용자에 따라 다른 화면을 보여주게 될 수도 있음

 

 

 

 

 

4. AutoScaling

  • 애플리케이션의 수요에 따라 자동으로 자원을 조정해 성능을 최적화하는 서비스
    1. Auto scaling 그룹 생성
    2. 인스턴스 구성
    3. 스케일링 정책 설정
    4. 알람 설정
    5. 로드 밸런싱 설정(optional)
    6. IAM 역할 및 권한 설정
    7. 설정한 모든 구성 완료 후 Auto Scaling 그룹 실행
  • 정책/알람 예시 
    • notification to ... whenever ... of CPU Utilization is ... percent
    • Increase : Take the action add ... instances when ... ≤ CPU Utilization ≤ ...
    • Decrease : Take the action remove ... instances when ... ≥ CPU Utilization

 

 

 

5. ELB - Autoscaling의 관계

  • ELB와 Auto scaling은 클라우드 환경에서 확장 가능하고 안정적인 애플리케이션을 구축하는데 중요한 서비스며, 보통 함께 사용됨
    • ELB가 트래픽을 여러 인스턴스로 분산시켜 안정성을 향상시킨다면
    • Auto scaling은 수요에 따라 인스턴스를 자동으로 확장하거나 축소해 유연성을 제공함. 또한 인스턴스의 고장이나 문제 발생 시 자동으로 대체 인스턴스를 시작해 서비스의 가용성을 유지함
    • Auto scaling 그룹은 스케일링 이벤트가 발생하면 ELB에 대한 업데이트를 자동으로 수행함. 새로운 인스턴스가 시작되거나 종료될 때 ELB는 자동으로 해당 인스턴스를 대상 집합에 추가 또는 제거함