1. 릴리즈 엔지니어링?
릴리즈 엔지니어링은 소프트웨어 엔지니어링보다 상대적으로 새로운 개념이며 빠르게 성장하고 있는 원리로, 소프트웨어를 빌드하고 전달하는 과정을 간략하게 기술하는 분야라고 한다.
사실, 이번 책을 통해서 릴리즈 엔지니어링 용어를 처음 알게 되었다. 따라서, 소프트웨어를 빌드하고 전달하는 작업은 당연히 소프트웨어 엔지니어(SWE)가 수행하는 것으로 알고 있었다.
하지만, 구글에서는 릴리즈 엔지니어링이라는 특정 직업군이 있다. 릴리즈 엔지니어는 제품 개발부 소속으로 소프트웨어 엔지니어 및 SRE와 함께 일하며 소프트웨어 릴리즈에 필요한 모든 단계들을 정의한다고 한다. 개인적인 생각으로는 릴리즈 엔지니어는 규모가 큰 프로젝트에 필요할 것 같은데 한국에서는 카카오페이가 해당 직군을 채용 중인 것으로 보인다.
2. 역할
보유한 도구들을 사용해서 일관되고 반복 가능한 방법을 통해 프로젝트를 릴리즈화하기 위한 최선의 방법들을 정의한다. 이렇게 정의한 방법들은 릴리즈 프로세스의 전 과정을 아우른다.
그리고 보유한 도구들이 올바르게 동작하도록 유지하고 적절하게 문서화함으로써 팀이 소프트웨어를 릴리즈하는 과정에서 매번 같은 작업을 반복하느라 시간을 허비하는 대신, 기능과 사용자에 집중할 수 있는 기반을 마련할 수 있다.
3. 철학
릴리즈 엔지니어링은 다음의 네 가지 원리를 통해 표현되는 엔지니어링과 서비스 철학을 따른다.
3.1 자기 주도 서비스 모델
릴리즈 엔지니어링은 제품 개발팀이 직접 릴리즈 프로세스를 담당할 수 있도록 돕기 위한 사례와 도구들을 제공하고 있다. 이를 통해 개별 팀이 얼마나 자주, 그리고 언제 새로운 버전의 제품을 릴리즈할 것인지를 직접 결정할 수 있다.
3.2 빠른 릴리즈 주기
사용자에게 직접 제공되는 소프트웨어는 보통 새로운 기능을 최대한 빠르게 내보내고 싶어하므로 빈번하게 빌드된다. 변경 사항을 자주, 그리고 빠르게 릴리즈하는 철학을 따르면 테스트와 문제 해결이 쉬워진다.
3.3 밀폐된 빌드
빌드 도구는 일관성과 반복성을 제공해야 한다. 구글은 모놀리식의 통합된 소스 코드 저장소를 사용하고 있으며 완전히 밀폐된 구조로 빌드한다. 이는 빌드 머신에 설치된 라이브러리나 다른 소프트웨어에 영향을 받지 않는다는 뜻이다.
3.4. 원리와 절차의 강제
프로젝트를 릴리즈할 때는 누가 어떤 작업을 수행할 수 있는지를 결정하기 위해 여러 단계의 보안 및 접근 제어 계층이 존재한다. 예를 들면 다음과 같다.
- 소스 코드 변경 수락
- 릴리즈 과정에서 수행해야 할 행위들을 정의
- ...
위와 같은 절차의 강제를 통해 특정 릴리즈에 문제가 발생했을 때 쉽게 조치를 취할 수 있다.
4. 결론
이 장에서는 구글이 취하는 릴리즈 엔지니어링 방식과 릴리즈 엔지니어가 일하는 방법, 그리고 SRE와 협업하는 방법 등을 주로 언급했지만 어느 조직에든 적용이 가능하다고 말한다. (래피드, 블레이즈와 같은 구글에서 릴리즈와 관련된 도구는 자세한 설명을 작성하지 않았다.)
개인적으로 어느 조직에든 적용이 가능하다는 말이 와닿지는 않는다. 아직 한국에서는 대부분의 회사에서 개발자, SRE, 릴리즈 엔지니어링 직군이 구분되어 있지 않기 때문이다.
그래도 릴리즈 엔지니어링 관점에서 어떠한 점이 중요한지 파악할 수 있는 좋은 장이라고 생각한다 :)
'CS > SRE' 카테고리의 다른 글
Ch10. 시계열 데이터에 대한 실용적인 알림 (0) | 2023.08.02 |
---|---|
Ch09. 간결함 (0) | 2023.08.02 |
[SRE] 07. 구글의 발전된 자동화 (0) | 2023.07.26 |
[SRE] Ch06. 분산 시스템 모니터링 (0) | 2023.07.26 |
[SRE] Ch05. 삽질은 이제 그만! (0) | 2023.07.19 |