16 Sep 2020
Spring boot aws s3 upload와 clund front를 이용한 캐싱
Spring boot aws s3 upload와 clund front를 이용한 캐싱
AWS S3란?
Simple Storage Service의 약자로 파일서버 역할을 하는 서비스다. 일반적인 파일서버는 트래픽이 증가함에 따라 장비를 증설하는 작업을 해야 하는데 s3는 이와 같은 것을 대행한다. 또 파일에 대한 접근 권한을 지정 할 수 있어서 서비스를 호스팅하는 용도로 사용하는 것을 방지할 수 있다.
주요특징
-
많은 사용자가 접속을 해도 이를 감당하기 위해서 시스템적 작업을 하지 않아도 된다.
-
저장할 수 있는 파일 수 의 제한이 없다.
-
파일에 인증을 붙여서 무단으로 엑세스 하지 못하도록 할 수 있다.
-
데이터를 여러 시설에서 중복으로 저장해 데이터의 손실이 발생할 경우 자동 복원한다.
주요개념
객체
AWS는 s3에 저장된 데이터 하나 하나를 객체라고 명명한다.
버킷
객체가 파일이라면 버킷은 연관된 객체들을 그룹핑한 최상위 디렉토리라고 할 수 있다. 버킷 단위로 지역을 지정할 수 있고, 버킷에 포함된 모든 객체에 대해서 일괄적으로 인증과 접속 제한을 걸 수 있다.
AWS CloudFront(CDN) 이란?
CloudFront는 AWS에서 제공하는 CDN서비스이다. 캐싱을 통해 사용자에게 좀 더 빠른 전송 속도를 제공함을 목적으로 한다. CloudFront는 전 세계 곳곳에 Edge Server(Location)을 두고 Client에 가장 가까운 Edge Server를 찾아 Latency를 최소화 시켜 빠른 데이터를 제공한다.

-
Origin Server: 원본 데이터를 가지고 있는 서버이다. AWS에서 Origin Server는 s3,EC2등이다.
-
Edge Server(Location): AWS에서 실질적으로 제공하는 전 세계에 퍼져 있는 서버이다. Edge Server에는 요청받은 데이터에 대해서 같은 요청에 대해서 빠르게 응답해주기 위해 Cache기능을 제공한다.
데이터 전송 과정
1. 클라이언트가 Edge Server로 요청
2. Edge Server는 요청이 발생한 데이터에 대해 캐싱 여부확인
3. 사용자의 가까운곳에 위치한 Edge Server중 캐싱 데이터가 존재한다면 사용자의 요청에 맞는 데이터를 응답한다.
4. 사용자의 요청에 적합한 데이터가 캐싱되있지 않으면 Origin Server로 요청이 포워딩 된다.
5. 요청받은 데이터에 대해 Origin Server에서 획득한 후 Edge Server에 캐싱 데이터를 생성하고, 클라이언트로 응답한다.