요구사항
✔️ E-Commerce
✔️ 동영상, 이미지 3TB 이상 사용할 예정
✔️ 별도의 NAS 이미지, 동영상 백업
✔️ 보안컨설팅
✔️ 글로벌 확장 계획
✔️ 이벤트 기간 시 미들웨어 부하로 사이트 지연 방지(WAS-DB)
✔️ 이중화 구성 및 재해복구 계획
Architecture Diagram
상세 설명
Feed Back
- CloudWatch를 넣은 이유는? 임계치를 CloudWatch로 볼 수 있는가?
-> CloudWatch와 CloudTrail을 같이 사용하여 오토스케일링 그룹을 보도록 사용하는 것이 중요함
→ CloudWatch를 사용하면, 클라우드워치로 EC2 인스턴스 상태를 감시하고, 감시 항목이 지정한 임계치를 넘으면 경보를 발생하게 되고, 알람을 받으면 EC2 인스턴스를 기동시키게 됩니다.
→ CloudTrail을 사용하면, Amazon EC2 Auto Scaling 용 이벤트를 비롯하여 AWS 계정에 지속적인 이벤트 기록을 보유할 수 있다. 즉, 이벤트 기록 확인, 검색 및 다운로드 가능
- Master/Slave 구조 중 Slave로 둔 것은 read데이터만 해당되는가?
→ 그렇다. 위의 구조에서 Master는 CUD작업을 처리하고, Slave는 R작업만 처리가 가능하다. Slave는 Read Replica이기 때문이다.
- Master와 Slave간의 통신은 어떻게 하는가?
Master Slave 실시간 데이터는 어떻게 저장되나? (바로저장되는건 아닌데..)
→ Master와 Slave는 서로 dedicated storage를 사용하고 async 방식으로 데이터를 복제한다.
- Redis와 Mater의 연관성이 없음 (write에 대한 내용이 없음)
→ 애플리케이션은 데이터베이스의 데이터를 읽어야 하는 경우에 먼저 캐시에 쿼리한다. 데이터를 찾을 수 없는 경우에 애플리케이션은 데이터베이스에 쿼리하여 그 결과를 캐시에 채운다.
- WEB 옆에 Auto Scaling 왜 따로 배치했나?
✅ 오토스케일링 그룹과 웹을 따로놓으면 오토스케일링이 되지 않는다.(각자 따로 처리하게 된다)
→ Auto Scaling이 되면 생기는 것을 나타내기 위해서 WEB 옆에 Auto Scaling Group을 그렸습니다. 하지만 잘 못되었다는 것을 알게 되었고, 앞으로는 하나로 표시하도록 하겠습니다.
- 글로벌 확장계획? Arch Flow가 없음
→ 현재는 단일 리전이지만, 리전을 더 만들어서 CloudFront를 이용해 글로벌 확장할 계획을 생각했습니다. 다이어그램에 빠졌지만, 앞으로는 다이어그램에 포함시키도록 하겠습니다.
- Bastion으로 접속 가능한 범위 명시해주기(web용인건지, was용인건지, web/was 겸용인건지..)
Bation을 통해 어디까지 접속할수 있나? (web용..was용 등등..)
→ 위의 아키텍처 다이어그램에서는 WAS용으로 사용.
- webric을 사용한 이유? (shield는 무료로 방어해줌(폭넓게 생각)
→ AWS Shield, AWS WAF와 비교했을 때, 더 다양한 기능을 저렴하게 제공하기 때문. 또한, 타사 서비스인 Incapsula, Cloudflare에 비해 저렴하다.
📌 기능 : 웹 취약점 점검, 웹 공격 차단, 웹 공격 현황 확인, DDoS 방어, SSL(Secure Socket Layer는 웹사이트 방문자와 웹 서버간의 통신을 암호화하기 위하여 웹서버에 저장해야하는 인증서) 인증서 제공, URL제어, 전문 웹 보안 컨설팅, 네트워크 현황 분석(네트워크 트래픽을 일별/월별로..), 월간 리포트, IP제어 및 국가 접근 제어
📌 요금 : Basic Plan 27,000원/월(Mail support), Advanced Plan 89,100원/월(Phone support) 부가세 제외
- DB엔진은 어떤걸 사용했는가? 왜 mysql을 사용했는가?
✅ 현재 구조에서는 오로라가 더 나았을 것이다
→ Aurora 성능은 벤치마크 도구인 시스벤치(SysBench)에서는 RDS for MySQL에 비해 최대 5배, 온라인 트랜잭션 벤치 마크 도구인 TPC-C에서는 성능이 약 2.5배로 측정되었다. 오로라는 로그 구성 저장소라는 추가 확장이 자유로운 저장소 시스템을 채택하고 있다. 이 것은 마치 로그 파일처럼 끝부분에 연속해서 업데이트 데이터를 저장해나갈 수 있다.
→ 일반적인 MySQL은 업데이트 시에 갱신되는 행에 대하여 잠금이 발생하며 참조 시에도 읽기에 대한 일관성을 보장하기 위해 잠금이 발생한다. 이로 인해 동시에 많은 트랜잭션이 병행하여 실행되면 처리량이 저하된다. 오로라의 로그 구조화된 저장소는 이러한 잠금으로 인한 대기가 잘 발생되지 않아 MySQL보다 빠른 속도로 데이터를 읽고 쓸 수 있다.
- ELB(ALB/NLB)를 쓴이유?
→ ELB는 실행 중인 모든 EC2 인스턴스에 들어오는 애플리케이션 트래픽을 자동으로 분산하는 데 사용된다. Elastic Load Balancing을 사용하면 단 하나의 인스턴스에도 부하가 걸리지 않도록 트래픽 라우팅을 최적화하여 들어오는 요청을 관리할 수 있다.
→ 기본적으로 Port를 이용하여 로드 밸런싱을 하며, 상태 검사에 성공한 EC2만이 요청 전달 대상이 된다. 상태 검사 방법에는 HTTP, HTTPS, TCP등이 있다. ALB와 NLB는 대상그룹(Target Group)을 지정하며, CLB는 로드밸런서에 직접 등록하게 된다.
10-1. ALB란?
- L7 로드밸런서로, HTTP/HTTPS Header정보를 기반으로 요청을 전달하는 로드밸런서
- client ip를 x-forwarded-for 헤더로 전달, URL Path 단위 등 ALB Rule을 통해 로드밸런싱 가능, AWS WAF 사용 가능
10-2. NLB란?
- L4 로드밸런서로, TCP/UDP를 기반으로 요청을 전달하는 로드밸런서
- client ip를 변경하지 않고 서버에 그대로 전달
- NLB의 IP가 ALB와 다르게 변경되지 않고 고정됨. 고정IP 할당 가능
- Public Subnet에 Web Server를 만든이유?
→ Web Server에는 애플리케이션 계층으로 클라이언트 부분이라고 생각해서 Public Subnet에 만들었습니다.
- Private Subnet/Public Subnet의 차이는?
✅ Public Subnet
- 퍼블릭 인터넷에 대한 직접 액세스를 지원
- 인터넷 게이트웨이에 대한 라우팅 테이블 항목에 의해 지정됨
✅ Private Subnet
- 인터넷 게이트웨이에 대한 라우팅 테이블 항목이 없음
- 퍼블릭 서브넷에 있는 NAT(Network Address Translation) 게이트웨이를 사용해서 퍼블릭 인터넷에 간접 액세스 가능
** 소프트웨어 업데이트시 NAT 게이트웨이를 사용하여 데이터베이스 서버를 인터넷에 연결할 수 있지만, 인터넷에서 데이터베이스 서버 연결을 설정할 수 없음.
- Bastion Host의 역할(털리면 다털리는거 아닌가?)
→ 방화벽 소프트웨어의 일종으로서 내부, 외부 네트워크 사이에 게이트웨이 역할을 하는 host
- 외부에서 접근 가능하도록 public ip부여
** 베스천 호스트의 보안상 취약점은 로그인관련 정보 유출시 내부 네트워크의 방어가 불가능하며 데이터링크 계층을 통한 우회공격에 취약하다는 단점이다.
- VPC에 대한 보안 컨설팅과 AWS에 대한 보안 컨설팅?
위의 아키텍처 다이어그램에서
→ VPC에 대한 보안 컨설팅으로는 Bastion Host, Private Subnet, Security Group이 있습니다. 이 외에는 NACL이 있습니다.
→ AWS에 대한 보안 컨설팅에는 WEBBRICK, CloudFront(HTTPS 연결 구성, 특정 지리적 위치의 사용자가 콘텐츠에 액세스하지 목하도록 차단 가능), VPC가 있습니다. 이 외에는 AWS Shield, AWS WAF, Amazon GuardDuty가 있습니다.
- S3에는 뭐가 들어갔나?
→ 웹에서 사용되는 img, video가 저장될 것입니다.
- CloudFront랑 직접적으로 뭐랑 연결됨?
→ ALB가 직접적으로 연결됩니다. 위의 다이어그램은 트래픽 흐름을 그린것으로 CloudFront와 IG가 연결되어 있지만, ALB와 직접적으로 연결되어 있습니다.
참고
1. Auto Scaling 그룹 및 인스턴스에 대한 CloudWatch 지표 모니터링
1. AWS CloudTrail 을 사용하여 Amazon EC2 Auto Scaling API 호출 로깅
4. Amazon ElastiCache for Redis에서 MySQL 데이터베이스 성능 향상
10. Elastic Load Balancing 및 Amazon EC2
12. Public vs Private Subnet
14. CloudFront보안 액세스 구성 및 콘텐츠에 대한 액세스 제한