- Serve traffic from multiple regions | Cloud Run Documentation | Google Cloud
- You can return faster responses to your users around the world by deploying services in multiple regions and routing your users to the nearest region. Deploying across multiple regions delivers low latency and higher availability in case of regional outages.
GCP 에서 지난주 Cloud Run 을 한번의 실행으로 멀티리전에서 사용 가능하게 해주는 기능을 출시했다.
멀티리전에서의 서비스를 간단히 요약하자면, 예를들면 , 서울 - 런던 - 라스베가스 리전이 있다고 치자.
그런 경우에 기존에는 스크립트를 이용해서 여러개의 리전을 개별적으로 배포를 해야 했다면, 새로나온 기능은 한번의 스크립트로 여러개의 리전을 배포를 할 수 있게 해주는 기능이다.
사실 처음에 공개되기 전, 서비스가 나온다는 문서를 읽고 엄청 기대했던 기능이었는데, 사실 좀 실망 했다.
배포하는것은 기존에도 스크립트를 이용해서 하면 한번에 여러개를 하나, 하나씩 여러번 하나 어차피 병렬로 동작하기에 시간도 큰 차이 없고 해서 달라질게 없다 생각해서 그 부분은 큰 기대가 없었는데, 우선 이게 한번에 다 배포를 하는것이다 보니, 리전마다 환경 변수를 다르게 할 수 없다.
그래서, 개별 Cloud Run이 리전별로 다른 값을 이용해서 다른 DB 혹은 GCS에 연결하도록 하는 기능을 애용했는데, 그 기능을 쓰는데 문제가 생기는것이었다.
두번째 문제점은 배포를 계속 반복하다 보면, 기존의 내역을 삭제하고 싶은 경우가 있는데, 이게 또 개별로 컨트롤이 안된다. 읽기 전용으로 홀드 되어서 개별적으로 구 버전삭제가 안되는것이다.
여러가지 단점이 있는데, 장점으로는.. 여러개의 Cloud Run 을 하나로 "접을수" 있다는 점.
우리 서비스의 경우에는 Cloud Run도 많이 사용하고 리전도 많이 사용하다 보니 현재는 거의 약 50개, 지금 작업하는것들이 다 끝나면 100여개까지 늘어날 상황이었는데, 이걸 다중 리전 서비스를 이용하면 10개~20개 정도로 줄일 수 있다. ( 그냥 숨기기만 하는거다. )
우선 스크립트는 다음과 같다.
위의 스크립트를 실행하면 다음과 같이 배포 된다.
Cloud Run
우선 동일한 이름의 Cloud Run 이 리전마다 배포 되며, 최상위에는 동일한 이름으로 폴더(?)가 생긴다.
접은 화면은 다음과 같다.
Cloud Run - 접은 화면
사실, 갯수가 적은 경우에는 큰 도움이 되지 않는데, 만약에 저게 40개 리전에 전부 배포를 한다고 가정을 하면 엄청 큰 도움이 된다. ( 꼭 그정도는 아니더라도.. )
읽기 전용이라고 표시된다.
대부분의 기능의 경우 뭔가 수정을 할려 치면 대부분 읽기 전용이라고 표시된다. 문서에 보면 기능을 제공하긴 하는데, 아직 API 가 문제가 있는지 제대로 동작하지 않는다.
우선 관련 문서가 있는곳은 여기.
gcloud 관련 문서는 이곳이다. 아직은 알파/베타 버전만 지원하고 정식 버전은 지원하지 않는다. 게다가 위의 문서에 있는 --regions 옵션은 문서에 있지도 않다. ( 곧 업데이트 되겠지? )
우선 원하는 부분은. 사실 딴거 없고 환경변수에 지금 PORT 가 기본 환경 변수로 들어가는거 처럼 기본값으로 제공해주면 어떨까? 물론 meta data 서버를 통해서 현재도 다양한 정보를 제공해주는것은 알고 있지만, 사실 그건 Fetch 로 직접 가져와야 하는 불편함이 따른다. ( 게다가 그것도 다 리소스라.. )
아직은 프리뷰이니 만큼. 점점 나아지겠지? ( 오픈하자 마자 불만을 가지기에는 .. )
댓글0