DevOps 기술: 팀에게 도구 선택 권한 부여하기

소프트웨어 제공 성과를 높이고 기술자의 직업 만족도를 높이고 싶다면 직원이 작업에 사용하는 도구와 기술을 충분히 파악하고 선택할 수 있도록 해야 합니다. DevOps Research and Assessment(DORA)팀의 연구(PDF)에 따르면, 이렇게 도구 선택 권한을 부여하면 지속적 배포 및 소프트웨어 제공 성과가 개선됩니다. 팀이 도구를 스스로 선택할 수 있으려면 작업 방식과 성과에 필요한 작업을 바탕으로 도구를 선택할 수 있어야 합니다. 효율적인 업무 수행에 필요한 것을 실무자보다 더 잘 아는 사람은 없으므로 실무자가 도구를 선택하면 당연히 더 나은 결과를 이끌어낼 수 있습니다.

팀에서 도구를 선택할 수 있다고 해서 각 팀이 원하는 도구를 무제한적으로 선택할 수 있는 것은 아닙니다. 아무런 제약 없이 기술을 도입하면 기술적 채무와 취약성이 증가할 수 있습니다. 하지만 도구 선택을 다른 역량(예: 시스템 전반에 대한 시야, 빠른 피드백, 작성한 코드에 대한 책임)과 결합한다면, 기술 담당자들이 스스로 지원하고 사용해 나가야 하는 도구에 대해 현명한 결정을 내릴 수 있습니다. 선호하는 기술 스택이 기본적으로 지원되는 Google이나 Netflix 같은 회사에서 이러한 패턴이 관찰되었습니다. 하지만 팀이 다른 도구나 기술이 자신의 상황에 가장 적합하다고 생각되면 다른 선택을 할 수도 있습니다. 팀에서는 이렇게 선택권이 주어지면 동시에 새로운 기술 스택을 지원하는 업무도 동반된다는 점을 알고 있습니다.

팀에게 도구 선택 권한을 부여하는 방법

조직이 팀에게 도구를 선택할 수 있는 권한을 부여할 때 중요한 것은 도구를 선택할 수 있는 자유와 도구 지원 및 확보에 필요한 비용, 그리고 각기 다른 도구를 사용함으로써 추가적으로 발생할 수 있는 팀 간의 복잡한 의사소통 사이에 균형을 맞추는 것입니다. 다음은 팀에서 스스로 도구를 선택할 수 있도록 권한을 부여하는 몇 가지 방법입니다.

  • 팀 간 기준을 설정합니다. 제품 관리자, 개발자, 테스터, 운영자 등 여러 팀과 다양한 업무를 대표할 수 있는 담당자가 승인된 도구의 기준을 설정합니다. 기준이 되는 도구들이 조직의 대부분의 니즈를 충족할 만큼 많고 다양해야 합니다. 예를 들면 프로그래밍 언어 및 라이브러리, 테스트 및 배포 도구, 인프라 모니터링, 데이터 백엔드 등이 기준이 되는 도구의 예시입니다.

  • 정기적으로 도구를 검토합니다. 정기적으로 검토하거나 단기적인 스프린트 회고 검토에 포함시키는 방식으로 기준 도구 세트를 비판적으로 평가하고 효율성을 검토합니다. 이러한 검토를 통해 새로운 기술을 논의하고 시연할 수도 있습니다.

  • 프로세스의 예외사항을 정합니다. 기본 도구 세트에서 벗어나는 경우에 대한 프로세스를 명확하게 정의합니다. 프로젝트의 기준을 벗어나는 새로운 기술이 사용되면 그러한 새 도구와 사용 이유를 문서화합니다. 이 문서는 프로젝트의 문제를 해결하고 유지보수할 때 중요합니다. 또한 프로젝트에 문서화를 포함하면 나중에 해당 도구를 기준 도구에 추가하는 것이 타당한지 확인할 때 사용할 수 있습니다.

아니면 팀이 도구를 선택하도록 하는 방법도 있습니다. 이 전략을 사용하면 각 팀이 자체 도구 체인을 사용하여 소프트웨어 제공 프로세스(비즈니스 요구사항, 개발, 운영)를 최대한 많이 해결합니다. 하지만 공유 리소스가 있는 경우 팀과 제품 영역 간의 의사소통에 미치는 영향을 고려해야 합니다.

일반적인 문제

팀에 도구 선택 권한을 부여할 때 가장 일반적인 문제는 엔지니어에게 어떠한 선택권도 주지 않거나 너무 많은 선택권을 주는 등 극단적인 전략을 취하는 것입니다.

실무자에게 도구와 기술을 강요하면 표준화가 개선될 수는 있습니다. 하지만 상황마다 최적의 전략은 다를 수 있습니다. 이 접근 방식은 새로운 기술을 시도해 보고 테스트해 볼 수 있는 실험과 성장의 기회를 제한하기도 합니다. 새로운 기술을 실험하고 채택하여 성과가 크게 향상될 때도 많습니다. 예를 들어 컨테이너화나 Platform as a Service 등의 새로운 기술이 등장했을 때 조직에서 어떤 팀에게도 이러한 기술을 활용해 보는 것을 허용하지 않았다면 성과 향상이라는 결과를 실현하지 못했을 것입니다.

반대로 모든 프로젝트나 서비스에 각기 다른 도구나 기술을 선택한다면 기술 채무와 취약성 증가로 이어질 수 있습니다. 도구 체인에 새로운 도구가 더해질 때마다 유지보수 비용과 운영 비용은 늘어납니다. 시간이 지나면서 이러한 비용으로 인해 새로운 기술로 얻는 성과가 무의미해 질 수 있습니다.

팀의 도구 선택을 개선하는 방법

도구 선택의 핵심은 팀이 작업에 가장 적합한 도구를 선택하도록 하는 것입니다. 이를 위한 몇 가지 제안은 다음과 같습니다.

  • 주기적으로 기술 스택을 평가합니다. 평가 중에는 팀 구성원들이 현재의 도구로 필요한 일을 얼마나 잘 처리할 수 있는지 비판적으로 평가하도록 독려합니다. 또한 이러한 검토 중에 기존 도구의 문제를 논의하고 새로운 도구를 사용하는 실험을 논의하고 계획할 수 있습니다.
  • 새 프로젝트를 위한 새 도구를 적극적으로 조사합니다. 팀원들이 새 도구를 고려해 보고 그러한 도구로 실험해 봄으로써 어떠한 도구가 가치 있을지 결정하게 합니다. 기존 기술과 제안된 기술을 모두 사용하여 새 시스템의 핵심적인 부분을 구현해 봄으로써 예상되는 이점이 실현되는지 살펴봅니다. 기술을 선택할 때에는 기술 관련 비용을 잘 파악해야 합니다. 라이선스, 지원, 도구를 실행하는 데 필요한 인프라가 여기에 해당됩니다. 기술 채택 및 유지보수를 위해 더 많은 인력을 고용해야 할 수도 있습니다.
  • 새 도구를 실험할 일정을 짭니다. 해커톤과 같은 세션을 주기적으로 진행하여 팀이 새 프로젝트와 새 기술을 실험해 볼 수 있도록 합니다. 이러한 실험 후에 모든 도구를 유지하게 되는 것은 아닙니다. 하지만 중요한 것은 새로운 기술을 스택에 자연스럽게 더하거나 해당 기술이 적절하지 않다고 결정하는 것입니다.
  • 새로운 도구를 토론하는 정기적인 발표를 진행합니다. 스폰서가 준비하는 회의(점심 회의 등)에서 새로운 기술을 발표하고 논의할 수 있습니다. 한 사람이 새로운 기술로 작업 중인 프로젝트나 연구 중인 기술을 발표하는 비공식적인 회의여도 됩니다. 이와 같은 비공식적인 회의는 그룹이 새 기술을 논의하고 최신 정보를 공유하는 좋은 방법입니다. 팀원들이 돌아가면서 발표를 하거나 다른 팀 또는 회사 밖의 외부인을 초청하여 발표를 듣는 것도 좋은 방법이 될 수 있습니다. 해당 도구에 대해 경험이 있는 외부인이 참여하면 겉으로 드러나지 않는 비용이나 장기간 사용했을 때에만 명확해지는 복잡성을 논의할 수 있기 때문에 특히 유용합니다.

목표는 일상적인 대화에서 기술을 논의함으로써 팀이 자신들에게 적절한 도구와 기술을 선택할 수 있도록 권한을 부여하는 것입니다. 이러한 대화 후에 현재 사용하고 있는 도구를 그대로 사용할 수도 있습니다.

팀의 도구 선택 역량이 강화되었는지 측정하는 방법

팀이 도구를 선택할 역량이 있는지 판단하는 가장 좋은 방법은 질문하는 것입니다. 팀에서는 지시에 따라서 현재의 도구를 그대로 사용하거나 도구를 바꿀 수도 있기 때문에, 팀이 사용하는 도구의 개수를 세거나 도구를 바꾸는 빈도를 측정하여 그러한 역량을 판단할 수는 없습니다.

다음 단계