가용성
•
"Availability" (가용성)은 AWS 리소스가 정상적으로 동작하고, 유저가 필요할 때 사용할 수 있는 상태를 나타낸다.
High Availability (고가용성)
•
Availability를 높이는 아키텍쳐이다. (위험 상황이 발생했을 때를 대비해서)
•
High Availability는 유저 입장에서 시스템이 항상 사용 가능한 상태 유지하기 위한 것과 같다.
•
시스템 내부적으로 어떤 문제가 발생해도 항상 서비스를 이용 가능한 상태를 유지하고 다운되지 않도록 하는 것이 High Availability의 목표이다.
탄력성
•
"Elasticity" (탄력성)은 수요와 요구에 알맞게 리소스의 수용 능력이 자동적으로 확장 및 축소하는 능력을 말한다.
•
간단하게, Elasticity는 필요에 따라 확장하거나 축소함으로써 시스템이 효율적으로 대응할 수 있는 능력을 의미한다.
•
성능에 최적화하여, 불필요한 리소스를 사용하지 않기 때문에
비용 최소화에 기여한다. (비용을 아낄 수 있다)
확장성
•
"Scalability" (확장성)은 수요에 따라 리소스가 자동적으로 확장되는 능력을 말한다.
•
Elasticity와 비슷한 뜻이지만, Scalability은 확장에 많이 집중한다. 얼마나 효과적으로 확장할지를 따진다.
신뢰성
•
"신뢰성(Reliability)"은 서비스가 의도한 기능이 정확하면서 (일관적) 안정적으로 운영되는 정도를 나타낸다.
•
신뢰성(Reliability)은 사용자가 서비스에 대해 예상한 기능이 문제 없이 작동되어야 한다.
•
그렇기 때문에 높은 가용성을 유지하면서 시스템이 오류, 장애 등의 문제에 대처하는 능력이 중요하다.
신뢰성을 보장하기 위한 5가지 설계 원칙 (Design Principles)
1.
Automatically recover from failure: (시스템에 장애 발생 시 자동으로 복구하는 능력)
시스템 장애에 대한 자동 알림 및 추적, 장애를 해결하거나 복구하는 자동화된 복구 프로세스를 수행.
2.
Test recovery procedures: (복구 절차 테스트)
클라우드에서는 쉽게 장애를 시뮬레이션 할 수 있다.
워크로드가 어떻게 실패하는지 테스트하고 복구 절차를 검증할 수 있다. (이전에 장애를 일으켰던 시나리오를 다시 만들 수 있다)
3.
Scale horizontally to increase aggregate workload availability: (수평적 확장을 통해 가용성을 높이다)
하나의 큰 리소스를 여러 개의 작은 리소스로 분산시켜 하나의 작은 장애가 전체 워크로드에 미치는 영향을 줄인다.
4.
Stop guessing capacity: (용량 추측을 멈추세요)
온프레미스와 달리 클라우드는 용량이 넉넉하다. 용량 걱정 할 필요 없다.
5.
Manage change in automation: (자동화 변경 사항 관리하기)
자동화를 통해 인프라 설정을 변경 시킬 수 있다.


