현재 오즈코딩스쿨 강의를 통해 프론트엔드를 학습하고 있습니다.
본 포스트는 해당 강의에 대한 내용 정리를 목적으로 합니다.
터미널
npx create-react-app 프로젝트명-cra

실행
npm start

npm run build




터미널
npm create vite@latest {프로젝트명} -- --template react
cd {프로젝트명}
npm i
npm run dev


npm run build




터미널
npx create-next-app@latest


/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'export'
};
export default nextConfig;

npm run build





컨텐츠(파일, 동영상 등)를 빠르게 전송하게 해주는 서비스이다.
AWS(아마존 웹 서비스)에서 제공하는 콘텐츠 전송 네트워크(Content Delivery Network, CDN) 서비스. 정적 및 동적 콘텐츠를 전 세계 사용자에게 빠르고 안전하게 전달하기 위해 사용된다.
CDN (Content Delivery Network): 사용자와 가까운 서버(엣지 로케이션)를 통해 콘텐츠를 전송함으로써 지연(latency)을 줄이고 성능을 향상시키는 네트워크.
CloudFront는 AWS의 CDN 서비스로, 이미지, HTML, CSS, JavaScript, 비디오, API 응답 등 다양한 콘텐츠를 캐싱하고 배포할 수 있다.
S3만 사용해도 웹 서비스를 배포할 수 있다.
그렇다면 CloudFront는 왜 필요한걸까?
위의 설명에 따르면 CloudFront는 컨텐츠를 전송 받는 성능을 향상시키기 위해 사용한다. 그리고 HTTPS를 적용하려면 CloudFront를 사용해야만 한다. S3에는 HTTPS를 적용시키는 기능을 제공하고 있지 않다. 이 외에도 보안을 한층 강화할 수 있다는 장점이 있다.
이러한 장점들 덕분에 S3와 CloudFront를 같이 써서 웹 서비스를 배포한다.

컨텐츠(파일, 동영상)는 S3라는 곳에 저장될 것이다. 하지만 그 S3 저장소가 한국에 있다고 가정하자. 그러면 한국 사용자는 S3와 거리가 가까우므로 데이터를 빠르게 전송받을 수 있다. 하지만 미국에 있는 사용자가 S3로부터 데이터를 전송받으려면 거리가 멀어 시간이 오래 걸리게 된다.
이런 문제를 해결하기 위해 전세계 곳곳에 컨텐츠(파일, 동영상)의 복사본을 저장해놓을 수 있는 임시 저장소를 구축한다. 그러면 미국에 있는 사용자가 컨텐츠를 전송받고 싶을 때, 가장 가까운 임시 저장소에서 컨텐츠를 가져오면 훨씬 속도가 빨라진다.
이런 형태의 서비스를 보고 CDN(Content Delivery Network)이라고 부른다. 그래서 CloudFront를 CDN 서비스라고도 표현한다.
사용자가 웹사이트의 이미지나 HTML 파일 등 특정 콘텐츠를 요청합니다 (예: 브라우저에서 https://example.com/image.jpg).
사용자의 DNS 요청은 CloudFront의 엣지 로케이션(전 세계에 분산된 캐시 서버) 중 가장 가까운 곳으로 라우팅됩니다.
엣지 로케이션에 해당 콘텐츠가 캐시되어 있으면:
→ 바로 응답합니다 (속도 빠름).
→ CloudFront는 원본 서버(S3, EC2, 또는 다른 서버)에서 콘텐츠를 가져와 엣지에 저장한 후 사용자에게 전달합니다.
엣지 로케이션은 해당 콘텐츠를 일정 시간 동안 캐싱합니다.
다음 사용자가 같은 요청을 하면 원본 서버에 가지 않고 빠르게 응답할 수 있습니다.
캐시의 유지 기간은 TTL(Time to Live) 설정에 따라 달라집니다. 이 값을 짧게 하면 콘텐츠가 자주 갱신되고, 길게 하면 빠른 응답이 유지됩니다.

출처 : https://velog.io/@blue03183/S3-Cloudfront-를-사용한-프론트-서버-띄우기

CloudFront 배포 생성

Origin domain

웹 사이트 엔드포인트 사용 클릭


뷰어 프로토콜 정책 > Redirect HTTP to HTTPS 체크

웹 애플리케이션 방화벽(WAF) > 보안 보호 비활성화 체크

설정 > 가격 분류 > 북미, 유럽, 아시아, 중동 및 아프리카에서 사용

기본값 루트 객체 - 선택 사항 > index.html

배포 생성


HTTPS는 사용자와 서버 간의 데이터를 암호화하여 도청을 방지하는 보안 프로토콜이다.
중간자 공격(MITM)을 차단하여 통신의 신뢰성을 보장한다.
데이터를 안전하게 전달하여 무결성을 유지할 수 있다.
브라우저의 자물쇠 아이콘을 통해 사용자에게 신뢰를 줄 수 있다.
HTTPS를 사용하면 검색엔진 최적화(SEO)에 유리하여 더 높은 노출 효과를 기대할 수 있다.
현대의 웹사이트 운영에 있어 HTTPS는 필수가 되었다.