mamori 소개: Go를 위한 타입화되고, 감시 가능하며, 설정 및 비밀 정보
제가 배포했던 모든 Go 서비스는 결국 같은 기관을 성장시킵니다. 작게 시작합니다: 몇 개의 os.Getenv 호출. 그런 다음 AWS Secrets Manager에서 비밀을 가져와야 하므로 SDK를 추가합니다. 그런 다음 누군가가 배포 없이 비밀을 회전시키기를 원하므로 time.Ticker를 추가합니다. 그런 다음 두 개의 고루틴이 구성이 교체되는 동안 읽기 때문에 티커에 뮤텍스가 필요합니다. 그런 다음 잘못된 값이 유입되어 프로덕션을 다운시키므로 유효성 검사를 추가합니다. 그런 다음 사고 중에 로그 줄에 비밀이 나타나므로 이제 redaction wrapper도 추가합니다.결국에는 모든 리포지토리에 맞춤형 ConfigManager가 생깁니다: 로더, 페처, 새로 고침 루프, 뮤텍스, 그리고 기도. 두 번 다시 똑같지 않고, 테스트도 잘 되지 않으며, 아무도 소유하고 싶어하지 않는 코드입니다.