DevOps/AWS

Pattern 2. 다중화로 가용성을 확보하기, 서비스 활용으로 비용 절감하기(배워서 바로 쓰는 14가지 AWS 구축 패턴)

prden 2022. 3. 30. 16:52

웹 서버 다중화 

- 로드 밸런서로 장애에 대비하고 부하가 높아진 경우에 웹 서버 추가를 가능하게 한다.

DB 서버 다중화

- 서비스 기능을 사용하여 DB 서버를 복제한다. 

CDN과 객체 저장소를 사용한 정적 콘텐츠 전송

- 웹 서버로의 접속을 줄여 운영 비용을 절감한다. 

 

1. ELB, RDS, S3, CDN Service

로드 밸런서를 사용하여(Elastic Load Balancing) 웹 서버는 다중으로 구성한다. 

DB 서버는 RDS의 관리형 서비스인 RDS로 구성한다. RDS는 셋업이 완료된 RDBMS 환경을 제공하는 서비스로 간단한 설정만으로도 다중화가 가능하다. 

 

2. ELB 설정 시 유의할 사항 5가지

 1) ELB 용과 웹 서버용으로 각각 다른 보안 그룹을 만들어야 한다. 

 ELB는 인터넷 어디서라도 HTTP, HTTPS 접속을 허용하도록 설정되어 있다. 한편, 웹 서버는 ELB로부터의 HTTP 요청만을 받아들이도록 트래픽 소스를 ELB가 속한 보안 그룹으로 한정한다. 인터넷에서 직접적으로 웹서버에 접속하는 것은 허용하면 안 된다. 

 

2) 세션 기능의 유무 : ELB는 ELB자신이 작성하는 쿠키 정보를 바탕으로 동일한 서버로 접속을 유지시키는 세션 유지 기능을 제공한다. 

 

3) HTTPS 처리이다. HTTPS 통신은 클라이언트와 서버 간의 통신을 암호화한다. ELB는 SSL 터미네이션이라고 하는 SSL 인증서 확인 및 암호화/복호화 처리 기능을 제공한다. ELB 리스너 설정에서 로드밸런서 프로토콜을 HTTPS로, 인스턴스의 프로토콜을 HTTP로 하면 자동적으로 적용된다. 

 

4) 웹 서버가 정상적으로 동작하는지 감시하는 헬스 체크 설정이다. 

 

5) 응답 시간에 따른 타임아웃 설정 

 

3. RDS를 이용하여 DB서버 다중화하기

AWS에서 RDS를 구성하는 방법은 두 가지이다. 하나는 EC2 인스턴스에 RDBMS를 설치하는 방법과 다른 하나는 관리형 서비스인 아마존 RDS를 이용하는 방법이다. 전자는 OS와 RDBMS를 자유롭게 선택하고 설정할 수 있는 반면, OS와 DB 환경을 사용자가 직접 관리하지 않으면 안 된다. 후자는 패치 적용과 백업이 자동화되어 있기 때문에 운영의 번거로움이 줄어든다. 

DB 서버의 다중화는 Active-Standby(활성-대기)로 구성한다. RDS의 멀티 -AZ 기능을 사용하면 활성 DB 서버(마스터)의 데이터를 대기 서버(스탠바이)에 동기화하는 복제 중복 구성을 쉽게 구축할 수 있다. 두 AZ를 이용해 서브넷을 만드는 이유는 하나의 AZ가 예상치 못한 재해로 멈추더라도 또 다른 AZ에 설치된 서브넷에서 서버가 계속 동작하도록 하기 위함이다. 

 

4. RDS 사용 시 유의사항

1) 적절한 스냅숏 생성 자동 백업과 수동 스냅숏 백업 방법이 있다. 자동 백업은 간편하지만 데이터 보존 기간에 제한이 있다. 기본 설정값이 1일이고 최대 35일이다. 시스템에 대한 백업을 영구적으로 저장하려면 수동 스냅숏이 더 적합하다. 

 

2) AWS에 의한 메인터넌스 RDS는 몇 달에 한 번꼴로 마이너 버전업이 자동 실행되어 약 30분간 정지된다. 옵션인 마이너 버전 자동 업그레이드를 NO로 설정하면 마이너 버전업이 수행되지 않는다. // 취약점 대응 등에 의한 강제 업그레이드가 이루어질 경우 멀티-AZ를 사용한다면 스탠바이가 먼저 메인터넌스 된 후 장애 복구 기능에 의해 새로운 마스터가 되고 원래 마스터는 메인터넌스 된 후에 새로운 스탠바이가 된다. 

 

3) 멀티 -AZ를 이용하면 데이터 갱신 처리에 드는 시간이 길어진다. 마스터에 업데이트한 데이터를 스탠바이에 동기화시키는 처리가 끝날 때까지 마스터는 다음의 처리를 실행할 수 없다. 

 

5. 정적 콘텐츠를 낮은 비용으로 배포하기

방문자가 많은 시스템에서는 이미지와 동영상, 자바스크립트, HTML, CSS 등의 정적 콘텐츠 제공에 많은 비용이 든다. 정적 콘텐츠 전달 비용을 줄이려면 클라우드 프런트(CDN)와 S3를 사용하면 된다.

클라우드 프런트에 캐시 되지 않은 이미지는 오리지널 ELB로 가지러 가지러 간다. 클라우드 프런트는 정적 콘텐츠뿐만 아니라 동적 콘텐츠도 배포할 수 있다. 클라우드 프런트의 참조 분리 기능을 이용하면 동적 콘텐츠 ELB에서 정적 콘텐츠는 S3에서 가져올 수 있다. 

 

6. 기업 웹사이트에 적합한 인스턴스 설계하기 

 

 

 

 

 

 

#참조 : 배워서 바로 쓰는 14가지 AWS 구축 패턴