CS/SRE

[SRE] Ch05. 삽질은 이제 그만!

12.tka 2023. 7. 19. 07:52
728x90

SRE 조직은 단순한 운영 업무보다는 장기간의 엔지니어링 프로젝트를 수행하는 것을 더 선호합니다. 여기서 운영 업무라는 단어의 의미는 사람에 따라 다르게 해석될 수 있으므로 삽질이라고 표현하고 있습니다.

 

1. 삽질이란?

이 책에서는 프로덕션 서비스를 운영하는 것과 직접적으로 연관이 있지만 수작업을 동반하고, 반복적이며, 자동화가 가능하고, 사후 대처가 필요하며, 지속적인 가치가 결여되어 있으면서도 서비스의 성장에 따라 지속적으로 늘어나는 업무들을 말합니다. 각각의 상황에 대해서 조금 더 자세하게 살펴보겠습니다.

 

수작업을 필요로 한다.

예를 들면 자동화된 작업을 실행하기 위해 수작업으로 스크립트를 실행하는 경우를 말합니다. 물론 스크립트에 기술된 모든 단계들을 손으로 직접 처리하는 것보다는 스크립트를 실행하는 편이 훨씬 빠르겠지만 사람이 스크립트를 실행하기 위해 소비하는 시간은 분명히 삽질에 소비된 시간입니다. 하지만 의문점이 드는 부분이 있습니다. 원활한 배포를 수행하기 위해서 develop 브랜치 내용을 master에 병합한 후 태그를 붙이는 작업을 간단히 스크립트로 구현을 한 경험이 있습니다. 배포를 수행하기 위해서는 특정 시점에 사용자가 실행하는 '수작업'이 필수일 것 같은데 이런 경우도 삽질이라고 표현할 수 있을까 생각이 듭니다. 

 

서비스의 성장에 따라 O(n)으로 증가한다.

작업에 필요한 업무량이 서비스 크기나 트래픽 양, 혹은 사용자 수에 따라 선형적으로 증가한다면 이런 작업은 삽질이라고 볼 수 있습니다.

 

2. 삽질이 줄어들면 좋은 이유

구글의 SRE 조직은 각 SRE의 전체 작업 시간 중 삽질을 50% 이내로 유지한다는 목표를 가지고 있습니다. 각각의 SRE들은 최소 50%의 시간을 엔지니어링 프로젝트 업무에 투입해서 향후에 발생 가능한 삽질을 줄이거나 혹은 서비스에 새로운 기능을 추가해야 합니다. 기능의 개발은 주로 안정성이나 성능 혹은 활용도를 개선하고 결과적으로 삽질의 발생 가능성을 줄이는 것에 중점을 둡니다.

 

50%의 목표를 공유하는 이유는 삽질의 가능성이 있는 부분을 제때 점검하지 않으면 나중에 모두가 아무 일도 못하고 삽질에만 매달리게 될 수 있기 때문입니다. 삽질을 줄여나가는 것과 서비스를 스케일 업하는 것은 사이트 신뢰성 엔지니어링 관점에서는 엔지니어링입니다. SRE 조직은 엔지니어링 작업을 통해 서비스의 크기를 부선형적으로 확장하고 순수한 개발팀이나 순수한 운영팀보다 더 효율적으로 서비스를 관리합니다.

 

3. 엔지니어링에 해당하는 업무는?

엔지니어링 업무는 새로우면서도 본질적으로 사람의 판단을 필요로 하는 업무입니다. 전략에 따라 서비스의 지속적인 개선을 이루어낼 뿐 아니라, 창의적이고 혁신적이며, 디자인 주도 접근법으로 문제를 해결합니다. 엔지니어링 업무의 수행을 통해 팀이나 SRE 조직은 동일한 인력으로 더 큰 서비스 혹은 더 많은 서비스를 관리할 수 있습니다.

 

소프트웨어 엔지니어링

코드를 작성하거나 수정하고, 관련된 디자인이나 문서화 작업을 수행합니다. 예를 들어 자동화 스크립트를 작성하는 일, 도구나 프레임워크를 개발하는 일, 확장성과 신뢰성을 위해 서비스 기능을 추가하거나 서비스를 더 안정적으로 운영하기 위해 인프라스트럭처 코드를 수정하는 일 등이 해당됩니다.

 

시스템 엔지니어링

프로덕션 시스템의 설정을 조정하거나 문서화를 수행합니다. 예를 들면 설정을 모니터링하고 수정하는 일, 로드밸런서나 서버의 설정 변경, OS 매개변수 튜닝 및 로드밸런서 설치 등의 업무가 해당됩니다. 또한 아키텍처, 디자인 그리고 개발팀의 서비스 출시 등에 대해 조언을 해주는 업무도 포함됩니다.

 

삽질

서비스 운영과 직접 관련된, 반복적으로 발생하는 수작업들을 말합니다.

 

부하

서비스 운영과 직접 관련되지 않은 관리 업무를 말합니다. 예를 들면 채용, HR 서류 작업, 팀/회사 회의, 버그 큐 치우기, 업무 보고, 동료 및 자기 자신에 대한 평가 및 훈련 등의 업무가 해당됩니다.

 

4. 삽질은 무조건 나쁜 것일까?

삽질이 항상 사람들을 피곤하게 하는 것은 아닙니다. 특히 삽질의 양이 얼마 되지 않는다면 그렇게 문제가 되지는 않을 것입니다. 예측이 가능하고 반복되는 작업들은 큰 무리 없이 처리할 수 있습니다. 이런 업무들을 처리하면 성취감이 있으며, 빠른 시간 내에 처리할 수 있습니다. 그다지 위험하지도 않고 스트레스도 적은 편입니다. 몇몇 사람들은 이런 업무 특성에 이끌려 삽질에 해당하는 업무들을 즐기는 경우도 있습니다. 저 또한 운영하는 서비스도 있고 개발하는 서비스도 있는데 운영하는 서비스에서도 성취감을 느끼는 경우가 많습니다.

 

삽질은 항상 나쁜 것은 아닙니다. SRE 업무는 물론 거의 모든 엔지니어링 업무에 있어 어느 정도의 삽질은 피할 수 없다는 것을 분명하게 인식해야 합니다. 삽질에 해당하는 업무의 양이 많지 않다면 나쁘지 않지만 업무량이 엄청나다면 삽질은 독이 되기 시작합니다. 너무 많은 삽질 업무 때문에 고통스럽다면 반드시 이를 공론화해야 합니다. 삽질에 해당하는 업무가 너무 많이 늘어나면 문제가 되는 이유는 여러 가지가 있지만 대략 다음과 같이 정리해 볼 수 있습니다.

 

경력 개발이 침체된다.

프로젝트에 너무 적은 시간을 투입하다 보면 개인의 경력 개발이 늦어지거나 서서히 멈추게 됩니다.

 

의욕이 저하된다.

삽질을 참고 용인하는 수준은 사람마다 다르지만 누구든 한계를 느끼게 마련입니다. 삽질에 할애하는 시간이 너무 많다면 지치고 지루하고 불만을 갖게 될 것입니다.

 

혼란이 가중된다.

삽질에 너무 많은 시간을 할애하면 의사소통의 명확성이 저하되며 사람들은 우리의 역할에 대한 의구심을 품게 됩니다.

 

성장이 저하된다.

삽질이 늘어날수록 팀의 생산성은 저하됩니다. 늘 삽질에 치여 있으면 새로운 기능을 출시하자마자 뒷감당을 하느라 너무 바쁘기 때문에 제품의 기능을 개발하는 속도가 떨어질 것입니다.

 

좋지 않은 선례를 남기게 된다.

삽질을 너무 많이 하려고 하면, 함께 일하는 개발팀은 더 많은 삽질을 떠넘기려 하고, 심지어는 개발팀이 수행해야 할 운영 업무까지도 떠안게 됩니다. 그럴수록 다른 팀들도 SRE에게 같은 업무를 기대하기 시작할 것이고, 상황은 점점 더 좋지 않은 방향으로 흘러갈 것입니다.

 

인력 유출이 발생한다.

본인의 팀에 너무 많은 삽질을 떠안아 온다면, 팀 최고의 엔지니어가 더 보람 있는 일을 찾아 다른 곳으로 떠날 수 있습니다.

 

5. 결론

삽질은 무엇인지, 삽질이 줄어들면 좋은 이유, 엔지니어링에 해당하는 업무, 삽질은 무조건 나쁜 것인지에 대해서 정리하는 시간을 가졌습니다. 삽질의 가능성이 있는 부분을 제때 점검하지 않으면 나중에 모두가 아무 일도 못하고 삽질에만 매달리게 될 수 있기 때문에 매주 조금씩 삽질을 걷어낼 수 있다면 이를 통해 서비스를 지속적으로 깔끔하게 유지하는 게 좋을 것 같습니다.

 

 

 

728x90

'CS > SRE' 카테고리의 다른 글

[SRE] 07. 구글의 발전된 자동화  (0) 2023.07.26
[SRE] Ch06. 분산 시스템 모니터링  (0) 2023.07.26
[SRE] Ch04. 서비스 수준 목표  (0) 2023.07.18
[SRE] Ch03. 위험 요소 수용하기  (0) 2023.07.18
[SRE] Ch01 ~ 02. 소개  (0) 2023.07.11