Stateful Web App(MyWordPress.com)
완전히 확장 가능한 웹사이트를 만들고 싶다.
WordPress는 웹 사이트를 만드는데 흔히 사용되는 방법
WordPress에 접근하고 싶고 업로드한 그림이 바르게 나타나길 원한다.
WordPress가 작동하는 방식으로 어떤 드라이브에 그림을 저장하고 기본적으로 모든 인스턴스 들이 그 데이터에 접근해야 한다.
사용자 데이터와 블로그 내용등 모든 게 MySQL DB에 저장되어야 하고
글로벌하게 확장하고 싶다.
솔루션 아키텍트 과정
RDS 계층 생성하기

- 백엔드에 RDS 계층을 생성
- 크게 확장하고 싶다면?-> Aurora MySQL로 교체

- 다중 AZ, 읽기 전용 복제본도 원한다면 글로벌 DB를 적용
이미지 저장

- 하나의 인스턴스에 하나의 EBS 볼륨이 연결되어 있는 상태
- 로드 밸런서에 연결되어 있는 상태
- 사용자가 로드 밸런서로 이미지를 보내고 싶다.
그 이미지는 EBS까지 도달한다.
-> 단일 인스턴스일때는 문제없이 잘 저장하고 불러온다.
- 확장하기 시작하면 문제가 생긴다.
이미지 저장(확장)

- 2개의 인스턴스와 2개의 AZ가 있다.
각각의 EBS 볼륨을 가지고 있다.
- 하나의 인스턴스로 이미지를 보내면 해당 EBS볼륨에 저장된다.
- 그러나 이미지를 읽어들이기 위해 다른 인스턴스에 접근할 수도 있다.
EBS 볼륨은 하나의 인스턴스만 있을때 사용하지 좋은거 같다.
- 그래서 EFS를 사용해보자
EFS를 사용해 이미지 저장

- 위와 동일하게 2개의 인스턴스, AZ가 있다.
- 이번엔 EFS(네트워크 파일 시스템 드라이브)를 사용해보자.
- EFS는 탄력적인 네트워크 인터페이스를 위해 각각의 AZ에 ENI를 생성한다.
ENI는 EFS 드라이브에 접근하는 모든 EC2에 사용 가능하다.
스토리지가 모든 인스턴스에 공유된다.
(이미지를 보내는 과정)
사용자 -> M5 인스턴스 -> ENI -> EFS에 저장
(이미지 불러오는 과정)
사용자 -> 인스턴스 -> ENI -> EFS로부터 읽기 -> ENI -> 인스턴스 -> 사용자
- 여러 인스턴스에 걸쳐 웹사이트 스토리지를 확장하는 방법(EFS)
가용 영역이나 인스턴스 개수에 관계없이 모든 인스턴스가 동일한 파일에 접근하도록 허용
생각해보기..
- Aurora Database
적은 연산량과 다중 AZ 및 읽기 전용 복제본
- EBS
단일 인스턴스 애플리케이션에서 잘 작동
- EFS
인스턴스가 많아짐에 따라 다중 AZ에 걸쳐 분산 애플리케이션에 유용
- 비용
EFS < EBS
상황에 따라 EBS,EFS 사용