김담령 저, 위키북스 출판, 2019.1.24 초판 발행
Part 1~2. AWS를 이용한 운영 서버 환경 구축
2.1 운영 서버 아키텍쳐의 이해
| 서버 |
구조 |
장점 |
단점 |
비고 |
| 단일 서버 |
클라이언트 - 서버(애플리케이션, DB) |
- 구성 쉬움 |
|
|
- 네트워크 설정 불필요 | - 전체 서비스 장애 발생 가능
- 효율적 자원 활용 힘듦
- 약한 보안
- 스케일 아웃 힘듦 | 가장 기본적, 테스트 앱 혹은 단순한 프로젝트에서 채용 |
| 애플리케이션/DB 서버 분리 | 클라이언트 - 서버(애플리케이션) - DB | - 단일 서버 대비 높은 안정성과 보안 | - 단일 서버 대비 복잡한 구성
- 여전히 힘든 스케올 아웃 | 서버 간 지연과 네트워크 보안 고려 필요 |
| 서버 단위 로드 밸런서 | 클라이언트 - 로드 밸런서 - (서버, 서버) - DB | - 스케일 아웃 용이
- 장애 최소화 | - 로드 밸런서 장애시 전체 마비
- 복잡한 구성 | - OSI 7계층 중 L4 스위치가 이 역할 담당 |
| 앱 단위 로드 밸런서 | 클라이언트 - 로드
밸런서 - 서버{로드 밸런서 - (애플리케이션, 애플리케이션)} - DB | - 한 서버에서 여러 요청 동시 처리 가능
- 서버 자원 최고효율로 작업 가능 | | |
2.4 웹 서버와 웹 애플리케이션 서버
2.4.1 웹 서버
클라이언트로부터 http 프로토콜로 요청받고 정적 파일로 응답. 즉 스크립트를 실행한 결과를 줄 순 없음.
nginx, Apache, IIS 등
2.4.2 웹 애플리케이션 서버
클라이언트의 요청에 동적인 응답을 만들어 응답. 코드를 실행해 거기에 클라이언트의 요청을 넘겨줌. 또반 서버 자원 최적화를 하기도 함.
Phusion Lassenger, Apache Tomcat, JBoss 등
2.4.4 클라이언트 요청 이동 경로
클라이언트 > 네트워크, ISP > 서버, 서버OS {
웹 서버(80, 443) > 웹 애플리케이션 서버 > 애플리케이션 프로세스
}
Part3. 다중 서버 환경 구성
3.1.2 AWS Auto Scaling 그룹의 응용 예
구성: 클라이언트 - 로드 밸런서 - Auto Scaling 그룹(EC2, EC2)
- 자원 사용량을 기준으로 한 자동 조절) 예: 평균 CPU 점유율이 90% 이상인 채 10분간 유지 시 인스턴스 추가
- 시간을 기준으로 한 자동 조절) 예: 오후 9시부터 10시까지 인스턴스 최소 5개