- Google Cloud Storage 와 Cloud Run을 이용한 CDN 활용하기 - 2
- Google Cloud Storage와 Cloud Run을 활용하여 CDN을 구축하는 방법에 대한 두 번째 글입니다. 이미지와 텍스트 파일을 최적화하여 전송하고, 전 세계 8개 지역에 리소스를 배포하여 레이턴시를 줄이는 방법을 설명합니다.
AI가 번역한 다른 언어 보기
durumis AI가 요약한 글
- Google Cloud Storage에 업로드된 이미지 파일을 Cloud Run을 이용하여 최적화하고 다양한 포맷으로 변환하는 방법을 설명합니다.
- Cloud Storage의 파일 업로드, 삭제 이벤트를 활용하여 이미지 파일은 AVIF, WebP로 변환하고 텍스트 파일은 압축하여 다른 리전에 복제 및 삭제를 동기화합니다.
- 이를 통해 CDN 환경에서 이미지 최적화 및 파일 동기화를 효율적으로 관리하고 Google Cloud Load Balancer를 활용한 후속 내용을 예고합니다.
지난 글에서 GCS 에 동기화 되어 있는 이미지 파일들을 Cloud Run 을 이용하여 전송하는 부분에 관한 이야기를 하였습니다.
그럼 CDN 시리즈의 마지막 이야기로 GCS의 동기화와 이미지 최적화에 관한 이야기를 하도록 하겠습니다.
Cloud Run은 기본적으로 HTTP Hook 을 통해서 동작하지만, 그것만이 유일한 이벤트 트리거는 아닙니다.
Cloud Run
Cloud Run 을 설정할때 잘 보면 Trigger 라는 부분이 있고, 거기서 목록을 보면 Pub/Sub , Cloud Storage , Filestore , 그리고 기타가 있습니다. 기본적으로 제공되는 HTTP를 제외하고 나머지는 가장 많이 사용되는 제품들이고, 그 외에도 웬만한 생각할 수 있는 대부분의 이벤트들은 기타로 들어가면 있습니다. 우선 당장 사용할 Cloud Storage 이벤트를 선택해서 들어가보면 다음과 같이 파일 변경시, 파일이 삭제되었을 경우, 파일이 생성되었을 경우, 파일의 메타데이터가 변경되었을 경우등의 이벤트 타입이 있습니다.
Cloud Run Eventarc
여기서, deleted 와 finalized 의 두개의 이벤트를 이용해서 Cloud Run 을 생성하면 GCS에 파일이 업로드 되었을 경우 혹은 업로드된 파일이 삭제되었을 경우의 이벤트를 작성합니다.
Cloud Run 에서 처리해야 하는 일은 크게 다음과 같습니다.
- 파일이 업로드 되면, 해당 파일의 종류를 확인한뒤 다음의 프로세스를 처리합니다.
- text 파일 ( css, js ) 일 경우에는 br,gzip 으로 압축하여 파일을 생성합니다.
- 이미지 파일일 경우에는 sharp npm 을 활용하여 avif, webp 로 변환된 포맷을 생성합니다.
- 새롭게 생성된 파일은 주어진 다른 여러 "리전"에도 파일을 복제합니다.
- 파일 삭제 요청시에는 다른 리전에 있는 해당 파일도 같이 삭제합니다.
기본적으로 크게 위의 3가지 ( 변환,복제,삭제) 만 잘 처리하면 리전이 여러개라 하더라도, 파일의 동기화는 크게 어렵지 않습니다. 코드에서도 GCS에 연결하는 부분과 sharp 를 사용하는 단 두개의 npm 만 이용해도 쉽게 처리됩니다.
이렇게 CDN 관련된 기본적인 포스팅 시리즈를 마쳤습니다.
다음번 포스팅 부터는 GCLB ( Google Cloud Loadbalancer )에 관해서 다뤄볼 예정입니다.
기본적으로 CDN 이야기는 당연히 로드밸런서 (LB)를 다뤄야 하지만, 내용상 생략이 된 부분들이 많은데, 다음 포스팅 부터 시리즈로 다뤄볼 예정입니다.
감사합니다.