Home [SRE] Ch18. Software Engineering in SRE
Post
Cancel

[SRE] Ch18. Software Engineering in SRE

결론 : SRE 는 단순 Operation 을 하는 포지션이 아니라 Software Engineering 에 많은 부분 기여를 하고 있으며, 이러한 역량과 작업은 매우 중요하다. 구글에서는 어떤식으로 SRE 의 Software Engineering 이 이루어지고 있는지 엿볼 수 있는 장

SRE 조직의 소프트웨어 엔지니어링 역량이 중요한 이유

  • 다른 회사들과 비교하여도 구글처럼 크고 복잡한 프로덕션 환경을 가지고 있는 회사는 없을 것이다. 이 때문에 구글에서는 다양한 형태의 소프트웨어 개발이 내부적으로 이루어질 수 밖에 없음.
  • 구글이 필요로 하는 규모를 감당하는 서드파티 도구가 거의 없기 때문
  • 그렇다면 구글의 SRE 조직이 내부 소프트웨어를 개발할 수 있는 조직이 된 이유는 무엇일까?
    • 구글만의 프로덕션 환경에 대한 SRE 조직의 폭넓고 깊은 지식을 활용하여 소프트웨어를 디자인하고 개발 가능
    • SRE 들은 중요한 사안에는 모두 참여하므로 전체적인 큰 그림과 요구사항들을 쉽게 이해
    • 개발하는 도구를 직접 사용할 사용자들과의 관계가 직접적이기 때문에 빠른 피드백 적용 가능

Auxon 사례 연구 : 프로젝트 배경 및 문제가 발생한 부분

  • Auxon 은 프로덕션 환경에서 실행되는 서비스의 Capacity 계획을 자동화하기 위해 만든 툴이다.
  • 전통적인 수용량 계획이 존재하긴 하지만, 예측이 변경되고 배포가 지연되고 예산이 줄어드는 등 아주 다양한 변수가 발생하고 정확한 정답이 없는 문제임.
  • 이는 노동집약적이고 모호하며, 본질적으로 불안정함.

구글의 해결책 : 의도 기반 수용량 계획

  • 구현이 아닌 요구사항을 명확히 하자.
  • 의도(intent)란 서비스 담당자가 자신들의 서비스를 운영하고자 하는 의도를 의미함.
  • 실제 수용량 계획 의도를 이끌어내기 위해서는 현실적인 자원 수요를 바탕으로 한 타당한 이유를 만들어내기 위해서는 여러 단계의 추상화가 필요함.
    1. Foo 서비스를 위해 X, Y 그리고 Z 클러스터에 50개의 코어가 필요합니다.
      1. → 왜?
    2. Foo 서비스를 위해 YYY 지역의 클러스터 중 세 개에서 50개의 코어가 필요합니다
      1. → 덜 구체적이긴 하지만 왜?
    3. Foo 서비스에 대한 각 지역별 수요를 충당하기를 원하며 N+2 의 다중화를 원합니다.
      1. → 자유도가 훨씬 높아짐. 인간이 이해하기 쉬워짐. 하지만 왜 ?
    4. Foo 서비스에 99.999% 가용성을 지원하고 싶습니다
      1. → 매우 추상화된 요구사항. 훨씬 유연함.
  • → 3단계의 추상화를 제공할 떄 가장 좋은 성과를 내고, 아주 정교한 서비스는 4단계가 더 어울릴 수 있다.

의도를 파악하기 위한 선행 작업

  • 의존성
  • 성능지표
  • 우선순위 결정

Auxon 소개

image

  • Auxon 은 사용자의 설정 언어 혹은 프로그래밍 API 를 통해 수집한 후, 사람의 의도를 기계가 이해할 수 있는 제약으로 변환함
  • 성능 데이터 : 서비스의 규모를 의미
  • 서비스별 수요 예측 데이터 : 예측된 수요 신호의 사용 궤적을 의미
  • 자원 공급 : 기본적인 자원에 대한 기초 수준의 가용성에 대한 데이터
  • 자원 가격 : 기본적인 자원을 기초적인 수준으로 확보하기 위한 비용에 대한 데이터
  • 의도 설정 : 의도 기반 정보를 Auxon 에 전달하기 위한 핵심
  • Auxon 설정 언어 엔진 : 의도 설정으로부터 전달받은 정보를 바탕으로 동작
  • Auxon 해법 엔진 : 이 도구의 뇌에 해당하며 설정 언어 엔진에게서 수신한 최적화된 요청을 바탕으로 거대한 혼합 정수 혹은 선형 프로그램을 공식화함
  • 할당 계획 : Auxon 해법 엔진의 출력 결과
This post is licensed under CC BY 4.0 by the author.

[SRE] Ch17. Testing for Reliability

🏢 첫번째 퇴사, 첫번째 이직