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
- 애플리케이션의 수요에 따라 자동으로 자원을 조정해 성능을 최적화하는 서비스
- Auto scaling 그룹 생성
- 인스턴스 구성
- 스케일링 정책 설정
- 알람 설정
- 로드 밸런싱 설정(optional)
- IAM 역할 및 권한 설정
- 설정한 모든 구성 완료 후 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는 자동으로 해당 인스턴스를 대상 집합에 추가 또는 제거함