개발자가 소프트웨어를 만들면, 누군가 모니터링을 한다. 대부분 기업에서 개발자에게 코드 모니터(Code Monitor)는 다소 적대적인 입장이다. 마치 “여긴 못지나 간다”며 어설픈 간달프 흉내로 개발자가 엄청난 소프트웨어 성과를 올리는 길을 막아서는 것 같다.
이런 식일 필요는 없다. 그리고 개발팀과 운영팀은 그래서는 안된다. 개발팀은 코드 모니터의 삶을 비참하게 만들지 않을 소프트웨어를 만들 필요가 있다. 운영팀을 고객 중 하나로 간주하고 그 고객이 사용할 수 있는 소프트웨어를 만들어 보라. 자신의 후속 영역에서 일하는 사람들을 살 만하게 만들어 보라.
여기 코드 모니터를 돕는 열 가지 방법을 소개한다. 그리고 보통 운영팀은 개발자를 도와준다.
합의한 표준을 따르라
만약 소프트웨어의 구조가 친숙한 것이라면, 저항이 적을 것이다. 따라서 어떤 기술을 사용하고 해당 기술이 어떻게 사용되며 소프트웨어가 전체적으로 어떤 모습일지에 대한 일련의 표준을 세우고 그것을 따르기 바란다.
중요한 것을 빠트리지 마라
오래 사용한 오라클 데이터베이스 대신 문서 데이터베이스가 사용하고 싶었다. 그래서 JsonDB나 니트라이트(Nitrite)를 개발 중인 소프트웨어에 넣었다. 그런데 그걸 디스크의 적합한 곳에 배치했을까? 아니다. 적절하게 백업하거나 복제했을까? 아니다. 그걸 구축하는 중에도 사용할 수 있는가? 아니다. 그러니 코드 모니터가 개발자를 미워하는 것이다.
비즈니스와 기술적인 요구사항을 지원하는 올바른 인프라의 한 부분을 확보하려면 개발자의 꿈을 잠시 미뤄야 할 수도 있다. 또한 왜 그걸 사용해야 하는지 일일이 설명해야 한다. 하지만 그렇게 한 덕분에 예기치 않은 인프라 문제로 데이터 손실이 일어나도 코드 모니터로부터 모진 욕설을 듣지도, 심한 경우 해고 당하지 않을 수 있다.
정규 리뷰 프로세스를 만들어라
아무리 간달프라고 해도 자기 마음대로 소프트웨어를 거부할 수는 없다. 소프트웨어는 어떤 기능을 하고 QA와 배치에서 어떤 과정이 뒤따라야 하는지에 대한 일련의 표준을 기반으로 한 합의된 리뷰 프로세스가 있어야 한다. 만약 그런 프로세스가 없다면 당장 하나 만들어야 한다.
변경사항의 당위성을 설명하라. 릴리즈 메모와 설치 가이드 등 어디든 적절한 곳에 변경의 유효성을 설명하라. 그저 “변경된 JSON 직렬화 코드”라고 쓰는 것이 아니라 “이 변경은 아주 사소한 버그 수정으로, 의존성도 없고 인프라에도 영향을 미치지 않음”이라고 설명하라.
API를 (안전하게) 드러내라
뭔가를 켜거나 끄기 위해 압축 파일을 해제하거나 일부 환경 설정을 변경하도록 하는 대신, API를 보여줘라. 소프트웨어를 좀 더 관리하기 쉽게 만들어야 한다. 물론 이런 일을 80포트에 드러내놓고 해서는 안된다. 보안 규정도 따르기 바란다.
측정치를 드러내라
이들 API에서 측정치를 드러내라. 소프트웨어를 모니터링할 수 있도록 하는 것이다. 초당 요청이나 일간 금융 거래, 성능 측정치 같은 것을 추적하라. 운영팀과 함께 어떤 것이 모니터링할 가치가 있는지 파악하라.
모니터링 툴을 지원하라
이들 API가 운영팀의 모니터링 툴을 지원하는지 확실히 하라. 운영팀은 나기오스(Nagios)를 사용할지도 모른다. 안타깝게도 이 툴은 오래 된 버전의 HP 오픈뷰와는 호환되지 않는다. 규모가 큰 기업에서는 충분히 일어날 수 있는 일이다.
설치를 표준화하라
가능하면 모든 버전을 비슷한 설치 패턴에 따라 설치하라. 이상적인 것은 설치 패턴을 스크립트로 만들거나 표준의 조합으로 만드는 것이다. “이 .war 파일을 여기에 복사하시오” 같은 식으로 패턴화하라.
마이그레이션 가이드를 발표하라
때때로 데이터베이스 변경이나 이런저런 구조적인 변경이 일어난다. 개발과 테스트에서 뭔가를 변경했다면, 이런 변경사항을 문서화하고 무엇을 왜 변경했는지 설명하라. 단계별 마이그레이션 가이드를 만들어 운영팀이 무엇을 왜 해야 하는지 설명하라. 쉽게 재활용할 수 있는 스크립트를 만들면, 금상첨화다.
겸손하라
개발자의 자존심은 모두를 괴롭힌다. 소프트웨어가 관리 가능하고 모니터링 가능하고 설치 가능하다는 것을 확실히 하기 위해 무엇을 어떻게 해야하는지 물어보기 바란다. editor@itworld.co.kr