1. Infra 핵심 설계사항
- 웹 서버 다중화
- Load Balancer 로 장애에 대비하고, 부하가 높아진 경우에 대비해 웹 서버 추가를 가능하게 한다. - DB 서버 다중화
- 서비스 기능을 사용하여 DB 서버를 복제한다. - CDN 과 객체 저장소를 사용한 정적 콘텐츠 전송
- 웹 서버로의 접속을 줄여 운영 비용을 절감한다.
2. 기업 Web Site 설계 시, 가상 시나리오
- 공개 website 로 사용자는 거래처,잠재적 고객,입사지원자 등이다.
- 정적 콘텐츠 중심이다.
- 서버를 다중화하여 장애에 대비한다.
- 부하가 높아지면 서버를 추가할 수 있게 구성한다.
- 장애 서버의 교체,추가는 수동으로 조작한다.
- 응답시간과 비용을 고려하여 구성한다.
3. 기업의 WebSite 구성도
4. ELB 를 이용하여 웹 서버 다중화하는 방법
1단계 ) EC2 인스턴스 생성
- 웹 서버 환경 구성(OS 환경 셋업, CMS install..)
2단계) AMI 로 등록
- 앞서 만든 EC2 인스턴스를 이미지 형태로 저장
3단계) 다수의 EC2 인스턴스 복제
4단계) ELB 와 연계하여 다중화 설정
- 인터넷 접속 EndPoint 를 ELB 로 지정
- ELB는 IP 주소가 아닌 CNAME( 대체 도메인 이름)을 지정하여 접속. 왜냐하면, ELB 의 IP 주소는 고정이 아니라 계속해서 변하기 때문
- DNS 서버인 Amazon Route 53 을 이용하여 ELB의 CNAME 과 사용할 도메인 이름을 연결. 이렇게 설정하면 도메인 이름을 통해 ELB 에 접속 가능
5단계) ELB 와 웹 서버의 EC2 인스턴스 연결
- ELB 작성 페이지에 웹 서버 선택 항목에서 이미 만들어진 웹 서버 선택하면 됨
5. ELB 설정 시 유의사항
첫번째) ELB 용과 웹 서버용으로 각각 다른 보안 그룹 마련하기
- ELB 는 인터넷 어디에서라도 HTTP 와 HTTPS 접속을 허용하도록 설정되어있음
- 웹 서버는 ELB 로부터 HTTP 요청만 받아들이도록 설정함. 이때, traffic sauce 를 ELB 가 속한 보안 그룹으로 한정한다. 왜냐하면, subnet 으로 설정할 경우 ELB의 IP 주소가 바뀔 가능성이 있기 때문임.
두번째) session 유지 기능의 유무
- session 정보를 웹 서버 간에 공유하는 구조를 마련하지 않을 경우, ELB 가 cookie 정보를 바탕으로 같은 client 는 동일한 웹 서버로 접속할 수 있도록 유지시키는 session 유지 기능을 마련해야한다.
- management console 에서 설정 가능함
세번째) HTTPS 처리
- ELB listener 설정에서 로드밸런서 프로토콜을 HTTPS 로 설정 / EB2 인스턴스의 프로토콜은 HTTP 로 설정한다.
- 위의 설정을 할경우 장점 3가지
- 웹 서버별로 SSL 증명서를 관리할 필요가 없어짐
- SSL 복호화 처리에 걸리는 부하가 줄어듬
- EC2 인스턴스의 비용 감소
네번째) 웹 서버가 정상적으로 동작하는지를 감시하는 Health 체크 설정
- Default 값 : 간격 30초 , 타임아웃 5초, 비정상 상한지 2회
- 웹 서버 장애 발생 시, 40~70초 만에 감지하여 해당 서버를 분리함
- 너무 짧게 간격을 설정할 경우, 웹서버의 부하 높아져 응답이 늦어지는 상태를 고장으로 오판할 수 있음
- 너무 길게 간격을 설정할 경우, 웹 서버에 요청 배분을 게쏙함
- 일반적으로 Default 값으로 충분하지만, 성능 시험/ 운영 시에 검출 오작동이 발생할 경우 수치 조정이 필요
다섯번째) 응답시간에 따른 timeout 설정
- Default 값: 60초
- 웹 서버 분산처리된 환경에서 일정시간 응답이 없을 경우 ELB 가 처리하는 방식
- 웹 서버와의 접속 단절
- client 에 HTTP 504 에러 반환
- 만약, DB 처리 등으로 시간이 오래 걸리더라도 결과를 반환하고 싶은 경우 더 길게 시간 설정함
6. AWS에서 DB 서버 다중화하는 방법
1. AWS 에서 RDB 를 구성하는 방법 2가지
방법1 ) EC2 인스턴스에 RDBMS 설치
- 장점 : OS, RDBMS 를 자유롭게 선택가능
- 단점 : OS, DB 환경을 사용자가 직접 관리함
방법2 ) Amazon RDS 사용
- 장점 : 패치, 백업이 자동화로 운영 번거로움 감소
- 단점 : DB 운영에 제약이 있음
2. AWS RDS 를 이용하여 서버 다중화하기
- RDS 엔진 선택하기 ( ex. SQL Server, MySQL, PostgreSQL, MariaDB, Aurora 등)
- Active-Standby 구성 선택하여 DB 서버 다중화하기
- RDS 의 Multi-AZ 기능 사용하기. (Multi-AZ 기능을 사용하면, active DB서버(master) 의 데이터를 standBy 서버에 동기화하는 복제 중복 구성을 쉽게 구축 가능함)
3. Multi-AZ 기능을 사용하여, RDS 설정 방법
첫번째) management console 의 RDS 설정화면에서 DB subnet 그룹 작성
두번째) DB subnet 은 2개 가용 영역(AZ)에 각각 subnet 을 만들고 그룹화하기
- 2개의 가용 영역(AZ) 를 사용하여 subnet 을 만드는 이유는, 1개의 AZ 가 예상치 못한 재해로 멈추더라도 또 다른 AZ 에 설치된 subnet 에서 서버가 계속 동작하도록 하기 위함
세번째) RDS for MySQL 의 인스턴스 작성하기
- Multi-AZ 를 이용하는 option 을 선택
- 앞서 만든 DB subnet 그룹을 지정
네번째) Master - StandBy 2대로 구성된 DB 서버(RDS 인스턴스) 가 만들어짐
- masteruser 가 자동으로 생성됨
- masteruser 를 통해 application user 를 만들거나, 객체 관리, 데이터 관리 가능함
- master-standby 구성으로 master 에 문제가 생겨도 데이터 손실이 안됨
- 요금은 이중화 작업을 하지 않는 것에 비해, 2배로 발생함
- 장애 발생 시, endpoint 는 DNS 가 새로 만들어진 master 서버로 자동으로 연결됨. 하지만, DB 접속은 자동으로 연결되도록 사전 설정 필요
7. RDS 사용 시 유의사항
첫번째) 적절한 snapshot 생성하기
두번째) AWS 에 의한 maintenance
세번째) multi-AZ 를 이용할 경우, 데이터 갱신 처리에 드는 시간 늘어남
8. 정적 콘텐츠를 낮은 비용으로 배포하는 법
1. 정적 콘텐츠 제공하는데 비용 많이 드는 경우
- 방문자가 많은 시스템에서는 image, video, javascript, HTML, CSS 등의 정적 콘텐츠 제공에 많은 비용이 듬
- 대용량 트래픽 처리하려면, 고성능 웹 서버가 여러대 필요함
- EC2 는 다운로드 통신량에 따라 과금이 부과됨
2. 개선방법
- CloudFront + S3 사용하기
3. CloudFront 은 어떻게 사용되는가?
- CDN 의 일종으로 세계 각지에 배치된 서버에서 콘텐츠를 캐시하고 전달함
- 캐시한 경우, 웹서버와 DB 서버에 접속하지 않아서 서버의 부하가 낮아짐
- 사용자가 콘텐츠를 요청했는데 해당 콘텐츠가 CloudFront에 캐시되지 않은경우, ELB(로드밸런서)로 가지러 감
- 사용자가 1번 요청한 콘텐츠는 CloudFront 에 캐시되어, 다음부터는 CloudFront 에 캐시된 값을 가져다 배포함
- CloudFront 는 정적 콘텐츠, 동적 콘텐츠 모두 배포 가능함
- CloudFront 의 참조 분리 기능을 이용하면, 정적콘텐츠는 S3에서 가져오고, 동적 콘텐츠는 ELB 에서 가져올 수 있음
- CloudFront 사용 시, 콘텐츠의 directory 구성과 파일 네이밍 규칙도 고려해야함.
- 시스템 운용이 시작된 이후에도 CloudFront 사용 가능함
4. S3 은 어떻게 사용되는가?
- S3 에 파일을 저장하면 파일 단위로 접속용 URL 이 생성됨. 이것을 이용해 정적 콘텐츠 저장소로 사용함
- S3 요금 체계는 EC2 보다 낮게 설정되있음. 따라서, 정적 콘텐츠를 S3 에 저장해두는것이 비용상 유리함
9. 기업 웹사이트에 적합한 인스턴스 설계하기
요구사항 1) 안정적인 응답이 요구됨
- 성능이 안정된 EC2 인스턴스와 EBS 볼륨을 선택해야함
- Storage I/O 대역폭에 주의하여 선택해야함
- 고려해보면 좋을 EC2 옵션 2가지
- EBS 최적화 인스턴스 : EBS 볼륨까지 네트워크 대역폭을 보장받을 수 있다
- 프로비저닝된 IOPS : 안정적으로 1만 IOPS 이상의 I/O 대역폭을 보장받을 수 있음. 단, 프로비저닝된 IOPS 만 사용할 경우 대역폭이 보장되지 않기 때문에 최적화 옵션도 함께 사용하기
요구사항 2) 몇 년 단위로 장기 이용함
- 장기 이용을 약정하여 할인받을 수 있는 EC2 인스턴스를 선택해야함
참고도서
가와카미 아키히사. ( 2020년 03월 01일 ) 배워서 바로 쓰는 14가지 AWS 구축 패턴: 서버리스에서 마이크로서비스와 AI 까지, 실무에 바로 써먹는 시스템 구축 패턴 익히기. 한빛미디어
'Data Engineering > AWS' 카테고리의 다른 글
AWS 상에서 이벤트 사이트 설계하는 방법 및 유의 사항 (0) | 2024.03.29 |
---|