CS/SRE

Ch27. 대용량 환경에서의 신뢰할 수 있는 제품 출시

12.tka 2023. 11. 5. 18:28
728x90

인터넷 기업의 출시 주기

전통적인 기업들은 새 제품을 출시하는 비율이 상당히 낮다. 반면, 인터넷 기업의 출시 주기는 이와는 현저히 다르다. 제품을 신속하게 출시하는 것이 훨씬 쉬운데, 그 이유는 새로운 기능을 담은 소프트웨어를 고객의 개별 컴퓨터에 설치하는 것이 아니라 우리가 보유한 서버에 새로운 기능을 출시하는 것이기 때문이다.

 

이처럼 빠른 변화 속도는 능률적인 출시 절차를 정의해야 하는 근본적인 이유와 기회를 제공한다. 매 3년마다 새로운 제품을 출시하는 기업이라면 세밀한 출시 절차 따위는 필요치 않다.

 

출시 조율 엔지니어링 (LCE)

구글은 제품 출시의 어려움을 타개하기 위해 SRE 조직 내에 새로운 제품이나 기술을 출시하기 위한 기술적인 부분을 수행할 전문 컨설팅팀을 구성했다. 이들은 구글이 원하는 내구성, 확장성 및 신뢰성 표준을 만족할 수 있는 제품을 안정적이고 빠르게 추구할 수 있도록 개발자들을 돕는 업무에 특화되어 있다. (경험의 전파, 교차 기능, 객관성 ...)

 

LCE는 직접 솔루션을 구현하는 것보다는 기존의 인프라스트럭처를 빌딩 블록처럼 사용할 것을 권한다. 그리고 상당히 깐깐한 승인 절차를 요구하는 제품 소유자들과의 협업을 통해 승인을 위한 요구 사항을 간소화하고 공통적인 경우에 대한 승인을 자동화하기도 한다.

 

LCE는 서비스의 장애 없이 신속하게 출시하는 역할을 담당하며 출시 도중 장애가 발생하더라도 다른 제품이 영향을 받지 않도록 조치한다. 또한 제품의 시장 출시 시간을 단축하기 위해 장애가 발생할 때마다 이해관계자들에게 적절히 통보하는 역할도 담당한다.

 

출시 절차 마련하기

구글은 10년 이상 출시 절차를 연마해왔다. 그 시간 동안 구글은 성공적인 출시 절차를 특정 짓는 몇 가지 조건을 확인했다.

  • 경량(lightweight): 개발자들이 접근하기 쉬워야 한다.
  • 견고함(robust): 오류를 명확하게 잡아내야 한다.
  • 주도면밀함(thorough): 중요한 부분은 일관적이고 재현 가능하게 다루어야 한다.
  • 확장성(scalable): 더 많은 출시를 단순화하고 복잡한 출시를 줄여야 한다.
  • 순응성(adaptable): 일반적인 종류의 출시와 새로운 종류의 출시를 모두 잘 지원할 수 있어야 한다.
  • 간결성(simplicity): 기본적인 것들을 완수한다. 모든 우발적 가능성에 대한 계획을 세우지는 않는다.
  • 직접 부딪히기(A high touch approach): 경험이 있는 엔지니어들이 각 출시별로 절차를 최적화하도록 한다.
  • 빠른 공통 경로(fast common paths): 항상 공통적인 패턴을 따르는 출시의 종류를 정의하고 이 종류의 출시를 위한 간소화된 출시 절차를 제공한다.

그리고 문제를 해소하고 다양한 학습을 통해 일관성과 완전함을 갖추기 위해 출시 확인목록을 사용한다. (참고로 구글의 출시 확인목록에 새로운 질문을 추가하기 위해서는 부사장으로부터 승인을 받아야 한다)

 

안정적인 출시를 위한 기법들

1. 점진적이고 단계적인 출시

: 시스템 관리 분야의 격언 중 하나는 "운영 중인 시스템은 절대 바꾸지 마라"다. 모든 변경은 위험을 의미하며 위험은 시스템의 안정성을 확보하기 위해서는 최소화해야 할 요소다. 이와 관련된 예시로는 카나리 배포와 초청 시스템이 있다.

 

2. 기능 플래그 프레임워크

: 새로운 기능을 0%부터 100%의 사용자들에게 점진적으로 출시하기 위해 디자인된 것이다.

 

3. 클라이언트 동작의 오용에 대처하기

: 클라이언트 동작의 오용(재시도, 특정 시간 요청 집중 ...)을 대처하기 위해 미리 준비해야 한다.

 

4. 과부하 시의 동작과 부하 테스트

: 서비스 과부하 관련 테스트는 제품의 안정성은 물론 수용량 계획에 있어서도 가치가 크다.

 

결론

빠르게 성장하며 제품과 서비스의 변화율이 높은 기업은 출시 조율 엔지니어링 역할을 도입하는 것이 큰 도움이 될 것이라고 말한다. 현재 사내 시스템을 주로 운영하고 있는 나에게는 크게 와닿지는 않는 내용이었다. 배포를 하기 위해서 그렇게 큰 노력이 필요하지 않기 때문이다. 하지만 구글을 비롯해서 전사적으로 운영하는 서비스라면 출시 조율 엔지니어링이 있는 것도 나쁘지 않겠다는 생각이 들었다.

728x90