SlideShare a Scribd company logo
1 of 12
Download to read offline
AWS S3를 이용한 효과적인 SPA 배포
윤제상 (yoonjs2@hbsmith.io)
HBSmith
2017.4.5
발표자 소개
• 윤제상 (Jesang Yoon)
• (현) HBSmith Co Founder, CTO
• (전) Kanizsa Lab CTO
• (전) 삼성전자 무선사업부 선임연구원
• 연락처
• LinkedIn: jesangyoon
• GitHub: @yoonjs2
• Email: yoonjs2@hbsmith.io
• Blog: https://medium.com/@yoonjs2
S3: Simple Storage Service
• Simple Storage Service
• 클라우드 기반의 Object File System

(MetaData, KeyValue, One level)
• 저렴한 비용, 큰 용량, 빠른 접근
• 고가용성: 최근 장애로 좀…
SPA: Single Page Application
• HTML 기반 Web Application
• Ajax + Template = Dynamic Contents
• index.html 단일 페이지에서

동적으로 DOM을 변경하여 

컨텐츠를 보여주는 형태
• AngularJS, BackboneJS 등
• 높은 코드 재 사용성, 데이터 절약, 높은 생산성
S3에서 HTML 호스팅하기
• S3를 Apache Web Server 처럼 사용
• Bucket Policy: GetObject
• Enable website hosting
• S3의 높은 가용성 + 서버관리 부담 Zero
문제: SPA Routing
• SPA의 Routing 기능은 

URL따라 페이지를 동적으로 생성
• 동적으로 생성되기 때문에 

웹서버 상에 실제 존재하지 않는 페이지임

(Angular에서 #으로 시작하는 주소)
• html5의 history 기능(html5mode)을 이용할 경우

‘#’문자 제거 가능 (#은 deprecated 됨)
• #이 없으면 웹서버에서 존재하지 않는 페이지를 가져오
려고 시도한 것으로 간주하여 404 Not Found를 반환
• 존재하지 않는 페이지를 존재하는 것처럼 만드는 방법은?
http://foobar.com/#/mypage
http://foobar.com/mypage
/mypage/index.html
200 OK 404
Not Found
/index.html
200 OK
문제: Eventual Consistency
• S3는 고가용성을 위해 데이터를 분산 복제
• 빠른 응답성능을 위해 

데이터가 모든 곳에서 동기화 되기전엔

과거 데이터를 읽어올수도 있음

(덮어쓰기 PUT, DELETE)
• Read after Write Consistency:

새로운 Key로 업로드한 데이터는 

분산복제가 끝나기 전엔 읽어올수 없음

(신규 PUT)
• 업데이트를 해도 과거 데이터가 

다운로드 되는 문제를 해결할 방법은 없을까?

(모든 유저가 가급적 최신 컨텐츠를 볼수 있도록)
key: x key: x
User A User B
덮어쓰기
SPA Routing in S3
• S3의 Redirection Rule 기능을 사용하여 구현가능
• 404 Not Found가 발생할 경우 

Error Page 대신 특정 패턴의 URL로 

이동하도록 하는 기능을 응용
• 단점: #!이 잠시 노출됨
• 주의: https를 명시적으로 붙여주지 않으면 

앞단에서 https를 강제해도 http로 접속가능하게 됨 Request
S3 Routing

HTTP 301 Redirect
HTML5 mode
(#! 제거)
Eventual Consistency 회피
• S3의 신규 Key를 가진 Object에 대한 

Read after Write Consistency를 이용

(처음 업로드 하는 파일들에 대한)
• S3에서 제공되는 웹 컨텐츠 파일들의 이름에 

Timestamp 또는 Hash 값(MD5, SHA1, …)을 붙여서 

계속 Key가 바뀌게 함
• Index.html 같이 Key가 변경되면 안되는 파일들은

CloudFront/CDN 등에서 Purge 또는 Invalidate 시켜

강제로 최신 컨텐츠가 빨리 배포될수 있게 해줌
• 주의: SPA 처럼 index.html 하나에서 

모든 컨텐츠를 불러올수 있는 경우에 유리한 방법 

(index.html 하나만 Eventually Consistency를 신경쓰면 됨)
파일 내용에 대한 MD5 해시값을 계산하여 이용
: 변경사항이 없을 경우 Eventually Consistent Read의 장점을 이용가능
(빠른 컨텐츠 제공)
Bucket간 sync를 응용한 SPA 배포
• AWS CLI S3 sync 명령어로 bucket 간 

내용 동기화가 가능
• sync를 이용, source bucket의 내용으
로 target bucket의 내용을 채움
• —delete 옵션으로 source bucket에 없
는 target bucket의 내용을 청소가능
• Jenkins/TravisCI 내에서 Git, Grunt/
Gulp와 AWS CLI sync를 엮어 완전한
SPA 배포 자동화를 실현 가능
Source bucket Target bucket
(Web Hosting Enabled)
퍼블리싱 작업
컨텐츠 최적화
보안처리
Cache Breaker 적용
S3 Sync
Purge
Cache
주의: 계정간 Bucket sync의 맹점
• AWS CLI S3 명령어는 계정간에 적접 Object를 이동시킬때

Object Metadata의 Canonical ID를 알아서 변경해주지 않음

(이 내용은 문서화가 잘 되어있지 않아 실수할 가능성이 있음)
• 계정 A의 Object X를 계정 B의 버켓으로 

CLI를 통해 버켓간에 직접 이동시키면 (cp, mv, sync) 

X의 소유주 Canonical ID는 여전히 계정 A가 됨
• 따라서 X는 계정 B에 존재하지만, 

계정 B의 Root ID로도 접근할수 없는 Object가 되어버림

(삭제밖에 안됨)
• 이런 현상을 막으려면 Access Delegation 을 이용하여 

계정 B에서 계정 A의 X를 접근할때 Canonical ID를 

계정 B의 것으로 변경할수 있도록 허용해 줘야 함
• 자세한 내용: https://goo.gl/ukQNbs
계정 A 계정 B
S3 Sync
X X
CID: A CID: A
더 많은 자료는
페이스북 AWS KRUG 그룹
또는
https://medium.com/@yoonjs2
에서
얻어가세요~

More Related Content

What's hot

CloudFront와 S3를 이용한 컨텐츠 배포 전략 - 박현우 CTO, SMARTSTUDY
CloudFront와 S3를 이용한 컨텐츠 배포 전략 - 박현우 CTO, SMARTSTUDYCloudFront와 S3를 이용한 컨텐츠 배포 전략 - 박현우 CTO, SMARTSTUDY
CloudFront와 S3를 이용한 컨텐츠 배포 전략 - 박현우 CTO, SMARTSTUDYAmazon Web Services Korea
 
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집AWSKRUG - AWS한국사용자모임
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴Terry Cho
 
[Network] Data Transfer History
[Network] Data Transfer History[Network] Data Transfer History
[Network] Data Transfer Historyssuserb2b4e71
 
20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년Jongwon Han
 
SBS 콘텐츠허브의 AWS 도입 사례 :: SBS 콘텐츠허브 :: AWS Media Day 2016
SBS 콘텐츠허브의 AWS 도입 사례 :: SBS 콘텐츠허브 :: AWS Media Day 2016SBS 콘텐츠허브의 AWS 도입 사례 :: SBS 콘텐츠허브 :: AWS Media Day 2016
SBS 콘텐츠허브의 AWS 도입 사례 :: SBS 콘텐츠허브 :: AWS Media Day 2016Amazon Web Services Korea
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017Amazon Web Services Korea
 
Ch1.대규모웹서비스
Ch1.대규모웹서비스Ch1.대규모웹서비스
Ch1.대규모웹서비스thx2uys
 
AWS 활용하여 핀테크 신사업 시작하기 - 피플펀드 고객 사례 :: 지성국 :: AWS Finance Seminar
AWS 활용하여 핀테크 신사업 시작하기 - 피플펀드 고객 사례 :: 지성국 :: AWS Finance Seminar AWS 활용하여 핀테크 신사업 시작하기 - 피플펀드 고객 사례 :: 지성국 :: AWS Finance Seminar
AWS 활용하여 핀테크 신사업 시작하기 - 피플펀드 고객 사례 :: 지성국 :: AWS Finance Seminar Amazon Web Services Korea
 
20180124 naver labs aws network and security
20180124 naver labs aws network and security20180124 naver labs aws network and security
20180124 naver labs aws network and securityJongwon Han
 
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013)
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013) 클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013)
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013) Channy Yun
 
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
IGAWorks, 혼자서 2주일만에 서비스 론칭하기 -백정상 팀장 :: AWS 파트너 테크시프트 세미나
IGAWorks, 혼자서 2주일만에 서비스 론칭하기 -백정상 팀장 :: AWS 파트너 테크시프트 세미나 IGAWorks, 혼자서 2주일만에 서비스 론칭하기 -백정상 팀장 :: AWS 파트너 테크시프트 세미나
IGAWorks, 혼자서 2주일만에 서비스 론칭하기 -백정상 팀장 :: AWS 파트너 테크시프트 세미나 Amazon Web Services Korea
 
포털 검색어 순위 수집 및 분석 후기
포털 검색어 순위 수집 및 분석 후기포털 검색어 순위 수집 및 분석 후기
포털 검색어 순위 수집 및 분석 후기Kyuhyun Byun
 

What's hot (20)

Elastic stack
Elastic stackElastic stack
Elastic stack
 
CloudFront와 S3를 이용한 컨텐츠 배포 전략 - 박현우 CTO, SMARTSTUDY
CloudFront와 S3를 이용한 컨텐츠 배포 전략 - 박현우 CTO, SMARTSTUDYCloudFront와 S3를 이용한 컨텐츠 배포 전략 - 박현우 CTO, SMARTSTUDY
CloudFront와 S3를 이용한 컨텐츠 배포 전략 - 박현우 CTO, SMARTSTUDY
 
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
 
Aws로 ci하기 안기욱
Aws로 ci하기 안기욱Aws로 ci하기 안기욱
Aws로 ci하기 안기욱
 
[Network] Data Transfer History
[Network] Data Transfer History[Network] Data Transfer History
[Network] Data Transfer History
 
모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향 모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향
 
20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년
 
SBS 콘텐츠허브의 AWS 도입 사례 :: SBS 콘텐츠허브 :: AWS Media Day 2016
SBS 콘텐츠허브의 AWS 도입 사례 :: SBS 콘텐츠허브 :: AWS Media Day 2016SBS 콘텐츠허브의 AWS 도입 사례 :: SBS 콘텐츠허브 :: AWS Media Day 2016
SBS 콘텐츠허브의 AWS 도입 사례 :: SBS 콘텐츠허브 :: AWS Media Day 2016
 
AWS 약쟁이
AWS 약쟁이AWS 약쟁이
AWS 약쟁이
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
 
Ch1.대규모웹서비스
Ch1.대규모웹서비스Ch1.대규모웹서비스
Ch1.대규모웹서비스
 
AWS 활용하여 핀테크 신사업 시작하기 - 피플펀드 고객 사례 :: 지성국 :: AWS Finance Seminar
AWS 활용하여 핀테크 신사업 시작하기 - 피플펀드 고객 사례 :: 지성국 :: AWS Finance Seminar AWS 활용하여 핀테크 신사업 시작하기 - 피플펀드 고객 사례 :: 지성국 :: AWS Finance Seminar
AWS 활용하여 핀테크 신사업 시작하기 - 피플펀드 고객 사례 :: 지성국 :: AWS Finance Seminar
 
20180124 naver labs aws network and security
20180124 naver labs aws network and security20180124 naver labs aws network and security
20180124 naver labs aws network and security
 
Presto
PrestoPresto
Presto
 
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013)
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013) 클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013)
클라우드 컴퓨팅과 Daum의 사례- 윤석찬 (KREN 연구 협력 포럼, 2013)
 
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
아마존 닷컴의 클라우드 활용 사례 - AWS Summit Seoul 2017
 
IGAWorks, 혼자서 2주일만에 서비스 론칭하기 -백정상 팀장 :: AWS 파트너 테크시프트 세미나
IGAWorks, 혼자서 2주일만에 서비스 론칭하기 -백정상 팀장 :: AWS 파트너 테크시프트 세미나 IGAWorks, 혼자서 2주일만에 서비스 론칭하기 -백정상 팀장 :: AWS 파트너 테크시프트 세미나
IGAWorks, 혼자서 2주일만에 서비스 론칭하기 -백정상 팀장 :: AWS 파트너 테크시프트 세미나
 
포털 검색어 순위 수집 및 분석 후기
포털 검색어 순위 수집 및 분석 후기포털 검색어 순위 수집 및 분석 후기
포털 검색어 순위 수집 및 분석 후기
 
AWS S3
AWS S3AWS S3
AWS S3
 

Similar to AWS S3를 이용한 효과적인 SPA 배포

T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...양재동 코드랩
 
Amazon S3 고급 활용 기법 - AWS Summit Seoul 2017
Amazon S3 고급 활용 기법  - AWS Summit Seoul 2017Amazon S3 고급 활용 기법  - AWS Summit Seoul 2017
Amazon S3 고급 활용 기법 - AWS Summit Seoul 2017Amazon Web Services Korea
 
AWS를 활용한 미디어 서비스 혁신 방법 - AWS Summit Seoul 2017
AWS를 활용한 미디어 서비스 혁신 방법 - AWS Summit Seoul 2017AWS를 활용한 미디어 서비스 혁신 방법 - AWS Summit Seoul 2017
AWS를 활용한 미디어 서비스 혁신 방법 - AWS Summit Seoul 2017Amazon Web Services Korea
 
성능 최대화를 위한 CloudFront 설정 Best Practice
성능 최대화를 위한 CloudFront 설정 Best Practice성능 최대화를 위한 CloudFront 설정 Best Practice
성능 최대화를 위한 CloudFront 설정 Best PracticeGS Neotek
 
Amazon S3 및 Elastic Beanstalk을 활용한 Wordpress 웹 사이트 구축하기 (윤석찬) - AWS 월간 웨비나
Amazon S3 및 Elastic Beanstalk을 활용한 Wordpress 웹 사이트 구축하기 (윤석찬) - AWS 월간 웨비나Amazon S3 및 Elastic Beanstalk을 활용한 Wordpress 웹 사이트 구축하기 (윤석찬) - AWS 월간 웨비나
Amazon S3 및 Elastic Beanstalk을 활용한 Wordpress 웹 사이트 구축하기 (윤석찬) - AWS 월간 웨비나Amazon Web Services Korea
 
데이터 마이그레이션 및 전송을 위한 AWS 스토리지 서비스 활용방안 - 박용선, 메가존 클라우드 매니저
데이터 마이그레이션 및 전송을 위한 AWS 스토리지 서비스 활용방안 - 박용선, 메가존 클라우드 매니저데이터 마이그레이션 및 전송을 위한 AWS 스토리지 서비스 활용방안 - 박용선, 메가존 클라우드 매니저
데이터 마이그레이션 및 전송을 위한 AWS 스토리지 서비스 활용방안 - 박용선, 메가존 클라우드 매니저Amazon Web Services Korea
 
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...Amazon Web Services Korea
 
AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례- 김용기, AWS솔루션즈 아키텍트:: AWS Summit Online K...
AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례- 김용기, AWS솔루션즈 아키텍트::  AWS Summit Online K...AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례- 김용기, AWS솔루션즈 아키텍트::  AWS Summit Online K...
AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례- 김용기, AWS솔루션즈 아키텍트:: AWS Summit Online K...Amazon Web Services Korea
 
portfolio-subtitle-convert-김남운
portfolio-subtitle-convert-김남운portfolio-subtitle-convert-김남운
portfolio-subtitle-convert-김남운Namwun Kim
 
AWS 빅데이터 아키텍처 패턴 및 모범 사례- AWS Summit Seoul 2017
AWS 빅데이터 아키텍처 패턴 및 모범 사례- AWS Summit Seoul 2017AWS 빅데이터 아키텍처 패턴 및 모범 사례- AWS Summit Seoul 2017
AWS 빅데이터 아키텍처 패턴 및 모범 사례- AWS Summit Seoul 2017Amazon Web Services Korea
 
확장가능한 웹 아키텍쳐 구축 방안
확장가능한 웹 아키텍쳐 구축 방안 확장가능한 웹 아키텍쳐 구축 방안
확장가능한 웹 아키텍쳐 구축 방안 IMQA
 
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 StorageFirebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage승빈이네 공작소
 
선도적인 미디어 서비스를 위한 AWS의 추가 제언 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day 2016
선도적인 미디어 서비스를 위한 AWS의 추가 제언 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day 2016선도적인 미디어 서비스를 위한 AWS의 추가 제언 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day 2016
선도적인 미디어 서비스를 위한 AWS의 추가 제언 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day 2016Amazon Web Services Korea
 
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
미디어 저장의 새로운 패러다임 - 김기완 :: 미디어 커스토머 데이
미디어 저장의 새로운 패러다임 - 김기완 :: 미디어 커스토머 데이미디어 저장의 새로운 패러다임 - 김기완 :: 미디어 커스토머 데이
미디어 저장의 새로운 패러다임 - 김기완 :: 미디어 커스토머 데이Amazon Web Services Korea
 
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)Amazon Web Services Korea
 
AWS 스토리지 서비스 소개 및 실습 - 김용기, AWS 솔루션즈 아키텍트
AWS 스토리지 서비스 소개 및 실습 - 김용기, AWS 솔루션즈 아키텍트AWS 스토리지 서비스 소개 및 실습 - 김용기, AWS 솔루션즈 아키텍트
AWS 스토리지 서비스 소개 및 실습 - 김용기, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 

Similar to AWS S3를 이용한 효과적인 SPA 배포 (20)

T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
T11_1_한종원_20181126 AWS S3, SPA, 그리고 Vue.JS - HBSmith는 어떻게 Fron...
 
Amazon S3 고급 활용 기법 - AWS Summit Seoul 2017
Amazon S3 고급 활용 기법  - AWS Summit Seoul 2017Amazon S3 고급 활용 기법  - AWS Summit Seoul 2017
Amazon S3 고급 활용 기법 - AWS Summit Seoul 2017
 
AWS를 활용한 미디어 서비스 혁신 방법 - AWS Summit Seoul 2017
AWS를 활용한 미디어 서비스 혁신 방법 - AWS Summit Seoul 2017AWS를 활용한 미디어 서비스 혁신 방법 - AWS Summit Seoul 2017
AWS를 활용한 미디어 서비스 혁신 방법 - AWS Summit Seoul 2017
 
Web server
Web serverWeb server
Web server
 
성능 최대화를 위한 CloudFront 설정 Best Practice
성능 최대화를 위한 CloudFront 설정 Best Practice성능 최대화를 위한 CloudFront 설정 Best Practice
성능 최대화를 위한 CloudFront 설정 Best Practice
 
Prepo
PrepoPrepo
Prepo
 
Amazon S3 및 Elastic Beanstalk을 활용한 Wordpress 웹 사이트 구축하기 (윤석찬) - AWS 월간 웨비나
Amazon S3 및 Elastic Beanstalk을 활용한 Wordpress 웹 사이트 구축하기 (윤석찬) - AWS 월간 웨비나Amazon S3 및 Elastic Beanstalk을 활용한 Wordpress 웹 사이트 구축하기 (윤석찬) - AWS 월간 웨비나
Amazon S3 및 Elastic Beanstalk을 활용한 Wordpress 웹 사이트 구축하기 (윤석찬) - AWS 월간 웨비나
 
데이터 마이그레이션 및 전송을 위한 AWS 스토리지 서비스 활용방안 - 박용선, 메가존 클라우드 매니저
데이터 마이그레이션 및 전송을 위한 AWS 스토리지 서비스 활용방안 - 박용선, 메가존 클라우드 매니저데이터 마이그레이션 및 전송을 위한 AWS 스토리지 서비스 활용방안 - 박용선, 메가존 클라우드 매니저
데이터 마이그레이션 및 전송을 위한 AWS 스토리지 서비스 활용방안 - 박용선, 메가존 클라우드 매니저
 
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
AWS 신규 데이터 분석 서비스 - QuickSight, Kinesis Firehose 등 (양승도) :: re:Invent re:Cap ...
 
AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례- 김용기, AWS솔루션즈 아키텍트:: AWS Summit Online K...
AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례- 김용기, AWS솔루션즈 아키텍트::  AWS Summit Online K...AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례- 김용기, AWS솔루션즈 아키텍트::  AWS Summit Online K...
AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례- 김용기, AWS솔루션즈 아키텍트:: AWS Summit Online K...
 
portfolio-subtitle-convert-김남운
portfolio-subtitle-convert-김남운portfolio-subtitle-convert-김남운
portfolio-subtitle-convert-김남운
 
AWS 빅데이터 아키텍처 패턴 및 모범 사례- AWS Summit Seoul 2017
AWS 빅데이터 아키텍처 패턴 및 모범 사례- AWS Summit Seoul 2017AWS 빅데이터 아키텍처 패턴 및 모범 사례- AWS Summit Seoul 2017
AWS 빅데이터 아키텍처 패턴 및 모범 사례- AWS Summit Seoul 2017
 
확장가능한 웹 아키텍쳐 구축 방안
확장가능한 웹 아키텍쳐 구축 방안 확장가능한 웹 아키텍쳐 구축 방안
확장가능한 웹 아키텍쳐 구축 방안
 
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 StorageFirebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
 
선도적인 미디어 서비스를 위한 AWS의 추가 제언 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day 2016
선도적인 미디어 서비스를 위한 AWS의 추가 제언 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day 2016선도적인 미디어 서비스를 위한 AWS의 추가 제언 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day 2016
선도적인 미디어 서비스를 위한 AWS의 추가 제언 :: 양승도 솔루션즈 아키텍트 :: AWS Media Day 2016
 
Learning HTML5
Learning HTML5Learning HTML5
Learning HTML5
 
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
GS Shop의 AWS 클라우드 기반 스토리지 활용 사례 - AWS Summit Seoul 2017
 
미디어 저장의 새로운 패러다임 - 김기완 :: 미디어 커스토머 데이
미디어 저장의 새로운 패러다임 - 김기완 :: 미디어 커스토머 데이미디어 저장의 새로운 패러다임 - 김기완 :: 미디어 커스토머 데이
미디어 저장의 새로운 패러다임 - 김기완 :: 미디어 커스토머 데이
 
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
AWS와 Open Source - 윤석찬 (OSS개발자 그룹)
 
AWS 스토리지 서비스 소개 및 실습 - 김용기, AWS 솔루션즈 아키텍트
AWS 스토리지 서비스 소개 및 실습 - 김용기, AWS 솔루션즈 아키텍트AWS 스토리지 서비스 소개 및 실습 - 김용기, AWS 솔루션즈 아키텍트
AWS 스토리지 서비스 소개 및 실습 - 김용기, AWS 솔루션즈 아키텍트
 

More from Jesang Yoon

AWS Cloud Job Fair 2022 발표자료
AWS Cloud Job Fair 2022 발표자료AWS Cloud Job Fair 2022 발표자료
AWS Cloud Job Fair 2022 발표자료Jesang Yoon
 
DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?Jesang Yoon
 
Amazon Aurora로 안전하게 migration 하기
Amazon Aurora로 안전하게 migration 하기Amazon Aurora로 안전하게 migration 하기
Amazon Aurora로 안전하게 migration 하기Jesang Yoon
 
Project TIMAT - infrastructure as code
Project TIMAT - infrastructure as codeProject TIMAT - infrastructure as code
Project TIMAT - infrastructure as codeJesang Yoon
 
AWS Lambda를 이용한 CI/CD 기법
AWS Lambda를 이용한 CI/CD 기법AWS Lambda를 이용한 CI/CD 기법
AWS Lambda를 이용한 CI/CD 기법Jesang Yoon
 
대기업에서 스타트업 까지 - 윤제상
대기업에서 스타트업 까지 - 윤제상대기업에서 스타트업 까지 - 윤제상
대기업에서 스타트업 까지 - 윤제상Jesang Yoon
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 

More from Jesang Yoon (7)

AWS Cloud Job Fair 2022 발표자료
AWS Cloud Job Fair 2022 발표자료AWS Cloud Job Fair 2022 발표자료
AWS Cloud Job Fair 2022 발표자료
 
DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?
 
Amazon Aurora로 안전하게 migration 하기
Amazon Aurora로 안전하게 migration 하기Amazon Aurora로 안전하게 migration 하기
Amazon Aurora로 안전하게 migration 하기
 
Project TIMAT - infrastructure as code
Project TIMAT - infrastructure as codeProject TIMAT - infrastructure as code
Project TIMAT - infrastructure as code
 
AWS Lambda를 이용한 CI/CD 기법
AWS Lambda를 이용한 CI/CD 기법AWS Lambda를 이용한 CI/CD 기법
AWS Lambda를 이용한 CI/CD 기법
 
대기업에서 스타트업 까지 - 윤제상
대기업에서 스타트업 까지 - 윤제상대기업에서 스타트업 까지 - 윤제상
대기업에서 스타트업 까지 - 윤제상
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 

AWS S3를 이용한 효과적인 SPA 배포

  • 1. AWS S3를 이용한 효과적인 SPA 배포 윤제상 (yoonjs2@hbsmith.io) HBSmith 2017.4.5
  • 2. 발표자 소개 • 윤제상 (Jesang Yoon) • (현) HBSmith Co Founder, CTO • (전) Kanizsa Lab CTO • (전) 삼성전자 무선사업부 선임연구원 • 연락처 • LinkedIn: jesangyoon • GitHub: @yoonjs2 • Email: yoonjs2@hbsmith.io • Blog: https://medium.com/@yoonjs2
  • 3. S3: Simple Storage Service • Simple Storage Service • 클라우드 기반의 Object File System
 (MetaData, KeyValue, One level) • 저렴한 비용, 큰 용량, 빠른 접근 • 고가용성: 최근 장애로 좀…
  • 4. SPA: Single Page Application • HTML 기반 Web Application • Ajax + Template = Dynamic Contents • index.html 단일 페이지에서
 동적으로 DOM을 변경하여 
 컨텐츠를 보여주는 형태 • AngularJS, BackboneJS 등 • 높은 코드 재 사용성, 데이터 절약, 높은 생산성
  • 5. S3에서 HTML 호스팅하기 • S3를 Apache Web Server 처럼 사용 • Bucket Policy: GetObject • Enable website hosting • S3의 높은 가용성 + 서버관리 부담 Zero
  • 6. 문제: SPA Routing • SPA의 Routing 기능은 
 URL따라 페이지를 동적으로 생성 • 동적으로 생성되기 때문에 
 웹서버 상에 실제 존재하지 않는 페이지임
 (Angular에서 #으로 시작하는 주소) • html5의 history 기능(html5mode)을 이용할 경우
 ‘#’문자 제거 가능 (#은 deprecated 됨) • #이 없으면 웹서버에서 존재하지 않는 페이지를 가져오 려고 시도한 것으로 간주하여 404 Not Found를 반환 • 존재하지 않는 페이지를 존재하는 것처럼 만드는 방법은? http://foobar.com/#/mypage http://foobar.com/mypage /mypage/index.html 200 OK 404 Not Found /index.html 200 OK
  • 7. 문제: Eventual Consistency • S3는 고가용성을 위해 데이터를 분산 복제 • 빠른 응답성능을 위해 
 데이터가 모든 곳에서 동기화 되기전엔
 과거 데이터를 읽어올수도 있음
 (덮어쓰기 PUT, DELETE) • Read after Write Consistency:
 새로운 Key로 업로드한 데이터는 
 분산복제가 끝나기 전엔 읽어올수 없음
 (신규 PUT) • 업데이트를 해도 과거 데이터가 
 다운로드 되는 문제를 해결할 방법은 없을까?
 (모든 유저가 가급적 최신 컨텐츠를 볼수 있도록) key: x key: x User A User B 덮어쓰기
  • 8. SPA Routing in S3 • S3의 Redirection Rule 기능을 사용하여 구현가능 • 404 Not Found가 발생할 경우 
 Error Page 대신 특정 패턴의 URL로 
 이동하도록 하는 기능을 응용 • 단점: #!이 잠시 노출됨 • 주의: https를 명시적으로 붙여주지 않으면 
 앞단에서 https를 강제해도 http로 접속가능하게 됨 Request S3 Routing
 HTTP 301 Redirect HTML5 mode (#! 제거)
  • 9. Eventual Consistency 회피 • S3의 신규 Key를 가진 Object에 대한 
 Read after Write Consistency를 이용
 (처음 업로드 하는 파일들에 대한) • S3에서 제공되는 웹 컨텐츠 파일들의 이름에 
 Timestamp 또는 Hash 값(MD5, SHA1, …)을 붙여서 
 계속 Key가 바뀌게 함 • Index.html 같이 Key가 변경되면 안되는 파일들은
 CloudFront/CDN 등에서 Purge 또는 Invalidate 시켜
 강제로 최신 컨텐츠가 빨리 배포될수 있게 해줌 • 주의: SPA 처럼 index.html 하나에서 
 모든 컨텐츠를 불러올수 있는 경우에 유리한 방법 
 (index.html 하나만 Eventually Consistency를 신경쓰면 됨) 파일 내용에 대한 MD5 해시값을 계산하여 이용 : 변경사항이 없을 경우 Eventually Consistent Read의 장점을 이용가능 (빠른 컨텐츠 제공)
  • 10. Bucket간 sync를 응용한 SPA 배포 • AWS CLI S3 sync 명령어로 bucket 간 
 내용 동기화가 가능 • sync를 이용, source bucket의 내용으 로 target bucket의 내용을 채움 • —delete 옵션으로 source bucket에 없 는 target bucket의 내용을 청소가능 • Jenkins/TravisCI 내에서 Git, Grunt/ Gulp와 AWS CLI sync를 엮어 완전한 SPA 배포 자동화를 실현 가능 Source bucket Target bucket (Web Hosting Enabled) 퍼블리싱 작업 컨텐츠 최적화 보안처리 Cache Breaker 적용 S3 Sync Purge Cache
  • 11. 주의: 계정간 Bucket sync의 맹점 • AWS CLI S3 명령어는 계정간에 적접 Object를 이동시킬때
 Object Metadata의 Canonical ID를 알아서 변경해주지 않음
 (이 내용은 문서화가 잘 되어있지 않아 실수할 가능성이 있음) • 계정 A의 Object X를 계정 B의 버켓으로 
 CLI를 통해 버켓간에 직접 이동시키면 (cp, mv, sync) 
 X의 소유주 Canonical ID는 여전히 계정 A가 됨 • 따라서 X는 계정 B에 존재하지만, 
 계정 B의 Root ID로도 접근할수 없는 Object가 되어버림
 (삭제밖에 안됨) • 이런 현상을 막으려면 Access Delegation 을 이용하여 
 계정 B에서 계정 A의 X를 접근할때 Canonical ID를 
 계정 B의 것으로 변경할수 있도록 허용해 줘야 함 • 자세한 내용: https://goo.gl/ukQNbs 계정 A 계정 B S3 Sync X X CID: A CID: A
  • 12. 더 많은 자료는 페이스북 AWS KRUG 그룹 또는 https://medium.com/@yoonjs2 에서 얻어가세요~