릴리즈 엔지니어링이라는 용어와 포지션이 있다는 것이 신기했다.
내가 아주 큰 규모의 프로젝트를 해보지 못해서 그런지는 모르겠지만, 일반적으로 SWE(Software Engineer) 가 SRE 업무는 물론 릴리즈 엔지니어링 까지 함께 해왔던 것 같다.
사실 SRE 업무는 DevOps에 가깝기 때문에 조금 거리가 있겠지만, 릴리즈 정도는 SWE가 했던 것이 아닌가 싶긴하다.
내가 MLOps 플랫폼 구축하고 운영할 때 했던 업무들을 생각해보면 아주 SRE + 릴리즈 엔지니어링에 가까운 역할이었다.
누구든지 쉽게 배포를 할 수 있게 하기위해서 배포 자동화를 진행했고, 다른 사람들도 쉽게 자동화를 구축할 수 있게 세미나를 진행하는 등 그런 업무들을 수행했었는데, 구글에서는 릴리즈 엔지니어링이라는 포지션이 따로 있다는 것이 신기해서 재미있게 읽은 장이었다.
다만, 구글의 툴들에 대한 설명이 있는 부분에서 모르는 용어들이 많이 나와서 빠르게 이해하지 못하는 부분들도 꽤 있는 장이었다.
릴리즈 엔지니어의 역할과 철학
- 보유한 도구들을 사용해서 일관되고 반복 가능한 방법을 통해 프로젝트를 릴리즈하기 위한 최선의 방법들을 정의함.
자기 주도 서비스 모델
- 자동화를 통해 개발자의 개입을 최소화
빠른 릴리즈 주기
- Push on Green 릴리즈 모델을 통해 매 빌드가 모든 테스트를 통과하면 배포를 하는 등 빠르게 진행해야함
밀폐된 빌드
- 디펜던시가 없어야 함
원리와 절차의 강제
- 확고환 원리 및 가이드를 통하여 해당 순서를 강제할 수 있도록 해야 함
지속적 빌드와 배포
- 구글은 Rapid 라는 릴리즈 시스템을 개발하여 사용하고 있음
- 즉, 프로젝트의 CI CD 를 위한 시스템을 따로 개발해서 사용함
빌드
,브랜칭
,테스트
,패키징
을 지원하고 있음
설정 관리 기법
SCM(Software Configuration Management) 이란?
- 형상관리. 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것.
- 문서 변경 및 코드 변경에 대한 형상 관리 툴
- Github 도 SCM 툴임
- 여기서는 git 과 같은 변경 내용 추적보다는 ansible 과 같은 툴로 설정 값을 여러 host에서 관리할 수 있는 부분을 이야기하는 것으로 보임
설정 관리에는 여러가지 방법들이 있는데, 프로젝트 소유자가 여러 옵션들을 고려해서 어떤것이 적합한지 판단하고 사용해야함
결론
릴리즈 엔지니어링은 제품 개발 주기의 처음부터 반드시 릴리즈 엔지니어링 자원에 대한 여유를 확보해야함
- 이후에 도입할 때 드는 비용이 너무 큼