똑같은 삽질은 2번 하지 말자
AWS S3는 왜 쓰는가? 본문
개요
AWS S3는 왜 쓰는지 궁금해서
서버의 Scale up(수직적 확장, 메모리, CPU 업그레이드)에는 한계가 있다. -> 너무 비쌈
그래서 Scale out(수평적 확장, 서버의 수 늘리기)이라는 개념이 나온다. -> 비용적 측면에서 훨씬 가성비 좋음
(CPU 업그레이드 vs 하드디스크 용량 늘리기 둘중에 뭐가 싼지 생각하면 이해하기 쉽다.)
하지만 이런 수평적 확장을 함으로써 문제점이 발생할 수 있는데, 위의 이미지를 보면
1. Load Balancer로 부하가 없는 서버에 태스크를 보낸다.
2. 서버1에 img5를 가져오는 태스크를 보냈는데, 서버1에는 img5가 없다.
이렇게 img들이 서버에 의존함으로써 서버들이 각각의 고유의 데이터를 가지는 상태(StateFull)이 된다.
여기서 더 큰 문제점은 서버를 없애야하는 상황이 주어지면, 내부의 이미지도 같이 삭제할 수 밖에 없는
아주 슬픈 문제가 생겨버린다...
그래서 위의 이미지와 같이 AWS S3를 이미지 서버(하드디스크 라고 생각하면 편안)를 따로 둠으로써 서버를 Stateless하게 유지할 수 있게된다. 미래의 쉬운 확장을 위해서는 되도록 Stateless를 유지하는게 좋다.
S3 (Simple Storage Service)
인터넷 스토리지 서비스. 용량에 관계 없이 파일을 저장할 수 있고 웹(HTTP 프로토콜)에서 파일에 접근할 수 있다.
특징
- S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있다. 용량을 추가하거나 성능을 높이는 작업이 필요없다.
- 비용은 EC2와 EBS로 구축하는 것보다 훨씬 저렴
- S3 자체가 수천 대 이상의 매우 성능이 좋은 웹 서버로 구성되어 있어서 EC2와 EBS로 구축했을 때 처럼 Auto Scaling이나 Load Balancing에 신경쓰지 않아도 된다.
- 동적 웹페이지와 정적 웹페이지가 섞여있을 때 동적 웹페이지만 EC2에서 서비스하고 정적 웹페이지는 S3를 이용하면 성능도 높이고 비용도 절감.
- 웹하드 서비스와 비슷하지만, 별도의 클라이언트 설치나 ActiveX를 통하지 않고 HTTP 프로토콜로 파일 업로드/다운로드 처리
- S3 자체로 정적 웹서비스 가능
다양한 정책을 통한 외부 공개(이미지 조회용으로 만든 버킷)
Comments