Data Engineering/AWS

AWS 상에서, 웹사이트 설계하는 방법 및 주의할 점

유노비 2024. 4. 2. 21:55
반응형
1. Infra 핵심 설계사항
  1. 웹 서버 다중화
    - Load Balancer 로 장애에 대비하고, 부하가 높아진 경우에 대비해 웹 서버 추가를 가능하게 한다.
  2. DB 서버 다중화
    - 서비스 기능을 사용하여 DB 서버를 복제한다.
  3. CDN 과 객체 저장소를 사용한 정적 콘텐츠 전송
    - 웹 서버로의 접속을 줄여 운영 비용을 절감한다.
2. 기업 Web Site 설계 시, 가상 시나리오
  1. 공개 website 로 사용자는 거래처,잠재적 고객,입사지원자 등이다.
  2. 정적 콘텐츠 중심이다.
  3. 서버를 다중화하여 장애에 대비한다.
  4. 부하가 높아지면 서버를 추가할 있게 구성한다.
  5. 장애 서버의 교체,추가는 수동으로 조작한다.
  6. 응답시간과 비용을 고려하여 구성한다.
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 까지, 실무에 바로 써먹는 시스템 구축 패턴 익히기. 한빛미디어

반응형