GCP 비밀 매니저, 라이브 리로딩 입 마모리와 함께 노트

GCP 비밀 매니저, 라이브 리로딩 입 마모리와 함께

Google Cloud Secret Manager는 깔끔하고 확고한 모델을 가지고 있습니다. 비밀은 컨테이너이며, 그 안에는 불변의 번호가 매겨진 버전들이 존재합니다. 버전은 절대 수정하지 않고, 새로운 버전(1, 2, 3, …)을 추가한 후 준비가 되면 트래픽을 해당 버전으로 이동시킵니다. 이는 보통 최신 별칭(alias)을 해석하거나 이전 버전을 비활성화함으로써 이루어집니다.이는 정말 좋은 설계입니다. 하지만 대부분의 Go 서비스가 비밀을 사용하는 방식과 충돌합니다. Go 서비스는 시작 시 AccessSecretVersion("latest")을 정확히 한 번 호출하고 결과를 캐싱합니다. 그 순간부터 프로세스는 부팅 시점에 "latest"가 의미했던 것에 고정됩니다. 버전 4를 추가하고 버전 3을 비활성화해도, 서비스는 재시작될 때까지 행복하게 버전 3을 계속 사용합니다. 최선의 경우 이는 예약된 재배포이며, 최악의 경우 비활성화된 버전이 더 이상 해석되지 않을 때 발생하는 장애입니다.