S3(Origin 서버)에서 직접 가져올 때 (검은색 화살표)
사용자가 콘텐츠를 가져오는 거리가 훨씬 짧아짐 (작은 녹색 화살표)
동적 콘텐츠여서 콘텐츠 캐싱이 불필요하더라도 전송 거리 자체가 가깝기 때문에 CloudFront를 사용하는 것이 더 이득이다.
그 밖에 AWS global private 네트워크를 이용해 worldwide 네트워크 문제를 피해서 보안적으로도 더 우수하다.
배포는 투더문 님 블로그를 참고하여 진행했다.
처음에는 배포된 URL에 들어가니 AccessDenied가 떴다.
알고보니 S3에 빌드 내용을 업로드할 때 '폴더'만 올리고 '파일'을 안 올려서였다.
CloudFront가 index.html 파일을 찾지 못함
파일을 마저 올려주고 다시 배포했는데 이후에는 네트워크 탭에서 문제를 발견했다.
바로 앞에 테스트 삼아 S3를 해보느라고 S3에 올린 폰트 파일 경로가 그대로 남아 있었던 것이었다. 여기 블로그를 읽으며 다시 재배포했다.
글에서 처음에 빌드 파일을 교체해주는 부분과 '무효화' 탭 부분만 참고했는데 읽다보니 '무효화 기능 = 캐시 삭제'라는 걸 알게 되었다.
그래서 '신규 복사' 버튼 클릭 + '/*' 경로를 다시 넣어주고 등록했더니 재배포에 성공했다.
여기까지는 수동으로 일일이 재배포했는데 앞으로도 반복할 걸 생각하니 너무 귀찮아졌다. (S3에 올렸던 파일을 모두 지우고 다시 업로드한 다음... 등등)
CI/CD의 필요성을 절실하게 느껴서 Github Actions를 적용해보기로 했다.
(다음 글 👉 Github Actions를 활용한 CI/CD 구축기)