1. 확장성 있는 설계
확장성 있는 어플리케이션
- 리소스 증가에 비례한 성능의 증가
- 회복력(확장성과 일맥상통)
- 얼마나 탄력적으로 서비스 트래픽에 따라 자원을 줄이고 늘일 수 있는지
- 분산된 시스템의 관리 능력
- 효율적인 운영 방법
- 비용의 효율적인 관리
Scale Up/ Scale Down(수직적인 확장)
2 X 4
<> 4 X 8
Scale Out/ Scale in(수평적인 확장)
병렬적으로 확장(1개의 서버 <> 3개의 서버)
Scale Up/Down을 하게 되면 down time이 생길수 밖에 없으므로 scale out이 권장됨.
2.탄력성에 대한 이해
- 탄력성 : 최소한의 마찰로 리소스를 스케일링 가능하게 하는 특징.
- 어플리케이션 구조에 클라우드 이점을 충분히 적용할 수 있도록 탄력성의 개념을 가지고 설계한다.
- 클라우드 환경에서 전통적인 방식(품질 저하 & 용량 낭비)과 다르게 필요한 자원들만 활용하도록 간소화한 시스템 설계 및 프로세스의 관점의 변화가 필요
- on-demand한 특성(리소스를 서비스 양에 맞게 즉각적으로 변화)
3. 제약에 대한 극복
- 시스템의 요구사항들이 클라우드에서 충분히 제공되는지 고민해야함.
- On-Premise 환경과 동일한 하드웨어 혹흔 솔루션을 활용하기 어렵다. 클라우드 환경에서 제공하는 추상화된 자원들을 활용하여 서비스를 딜리버리할 수 있도록 관점의 변화가 필요함.
- Redis : 인메모리 데이터베이스, key-value 데이터 저장소
4. 가상화 시스템 관리자
- 시스템 관리자는 가상화 시스템 관리자의 역할을 수행해야 한다.
- 데이터베이스 관리자
1. DB 설치 및 운영
- 규칙적인 DB 관리 작업(백업, 패치, 이중화 구성 등)
3. DB 인스턴스(가상화 인스턴스) 이미지(MySQL, Postgresql 등) 관리
4. 분산 DB 환경의 관리