작은 보드에 캐시 서버를 올렸는데 컨테이너 여럿이 같이 도는 환경이었다. 기본 설정에서 열 개쯤을 바꿨고 나중에 왜 이렇게 했는지가 나올 것이 뻔했다.
Table of contents
값과 근거를 함께
바꾼 것들을 값과 근거를 나란히 둔 표로 정리했다. 접근 범위와 보호 모드와 영속화와 메모리 상한과 축출 정책과 지연 해제와 스레드 수와 경고 억제가 들어갔다.
값만 있으면 나중에 알아볼 수 없고 근거가 있어야 그것을 바꿀지 말지 판단할 수 있다. 표를 만드는 과정에서 근거가 애매한 항목이 어느 것인지도 함께 드러났다.
이유가 둘인 설정
영속화를 끈 것이 특히 설명이 필요했다. 일반적으로는 켜는 것인데 두 가지 이유로 껐다.
용도가 캐시와 세션이라 날아가도 다시 만들면 된다는 것이 하나이고 영속화가 프로세스를 복제해 스냅숏을 뜨므로 메모리가 적은 환경에서 부담이 된다는 것이 다른 하나다. 용도만 적으면 반쪽이고 성능 쪽 이유도 함께 적어야 한다.
공존에서 나온 제한
메모리 상한과 스레드 수는 이 서비스가 혼자 쓰는 것이 아니라서 정한 값이다. 보드 전체 메모리와 코어 중 일부만 할당한 것이다.
이 값이 최적이라서가 아니라 여럿이 나눠 쓰니 이만큼이라는 뜻이다. 그것을 안 적으면 나중에 왜 이렇게 작게 잡았는지 의아해하며 올리게 되고 그러면 다른 것이 죽는다.
용도별 최소 권한
인증을 쓰면서 권한을 둘로 나눴는데 앱 연결용은 전체 권한이고 헬스체크용은 하나만 허용했다. 헬스체크는 살았는지만 확인하면 되므로 데이터를 읽을 필요가 없다.
전부 막고 확인용 명령 하나만 여는 형태라 그 계정이 유출돼도 아무것도 못 한다. 용도별로 권한을 최소화한 것이다.
태그와 환경 정보
기본 설정 파일이 수백 줄이라 어느 것이 바꾼 항목인지 구분이 안 됐다. 그래서 저장소에 있는 예제 파일에 태그를 달아 검색하면 커스텀 항목만 나오게 했다.
실제 파일이 아니라 예제에 단 것은 실제 파일이 배포마다 생성될 수 있고 예제는 이력이 남으며 다음 사람이 예제를 보고 만들기 때문이다. 마지막으로 보드 사양과 공존 상황과 아키텍처와 버전을 함께 적었는데 같은 값이 다른 환경에서는 틀릴 수 있으므로 옮길 때 다시 정해야 한다는 것을 알리기 위해서였다.
정리
- 커스텀 설정은 값과 근거를 표로 정리한다
- 한 설정에 이유가 둘 이상이면 다 적는다
- 제한 값이 공존 때문이면 그것을 밝힌다
- 안 밝히면 나중에 올려서 다른 것을 죽인다
- 용도별로 권한을 최소화한다
- 긴 설정 파일에는 태그를 달아 커스텀 항목을 구분한다
- 의도는 저장소에 있는 예제에 적는다
- 환경 정보를 같이 적어야 옮길 때 다시 정하게 된다