소프트웨어 제품 개발팀. 우리 잘하고 있나요?

Dexter
Dexter | DevOps Consultant

소프트웨어 제품/서비스를 개발하고 계시나요? 우리가 잘하고 있는지 어떻게 판단하고 있나요? DevOps로 제품/서비스 개발 속도 및 안정성을 높이기 위해 어디에 포커싱 해야 할까요? 그리고 그 우선순위를 어떻게 가져 가야 할까요? 제품 개발팀의 리더분들은 DevOps에 대한 관심을 가지셔야 합니다. 요즘 대부분의 회사는 고객 경험이 핵심지표가 되고, 맞춤형 제품을 만들기 위해 Agile을 활용하고 DevOps를 구축하고 발전시키고 있기 때문입니다.

DevOps 배경 - Google Dora | 인포그랩 GitLab

우리 조직이 고 성과(🏆) 인지 아닌지를 빠르게 판단 해보려면...
DevOps로 조직이 높은 성과를 내도록 지원하는 DORA4가지 간단한 질의로 가능합니다.

DORA는 DevOps Research and Assessments로 DevOps로의 성과 연구를 6년 이상 진행해 왔고,
지금은 google의 DORA팀으로 DevOps 관련 콘텐츠를 제공하고 있습니다.

4가지 간단한 질의가 측정하는 것은 다음과 같습니다.

한가지 축은 처리량 지표 입니다.

  • 배포 빈도 - 운영에 정상적으로 릴리즈하는 빈도
    • Elite는 수십번, Low 조직 대비 208배 빠름
  • 변경 리드타임 - 커밋해서 운영까지 걸리는 시간
    • Elite는 1시간 미만, Low 조직 대비 106배 빠름

다른 한 축은 안정성 지표입니다.

  • 변경 실패율 - 운영에서 실패한 배포 빈도 (서비스 장애나 결함이 생겼을때 서비스를 복원하는데 일반적으로 걸리는 시간)
    • Elite는 1시간 이내, Low 조직 대비 7배 낮음
  • 서비스 복원 시간 - 운영에서 장애 발생에 대한 복구 시간
    • Elite는 0~15% 사이, Low 조직 대비 2,604배 빠르게 복구

위의 4가지 지표의 결과를 가지고 Elite, High, Medium, Low로 구분하며, DevOps로 어떻게 하면 지표를 높일 수 있는 파이프라인을 만들지에 대해 어떻게 개선할지에 대해 지속적인 고민을 합니다. 고민을 실제로 어떻게 해결 할 수 있을지 세분화하는 방법은 아래 DevOps 기능에서 가장 부족한 부분을 찾고 우선순위에 따라 개선하면 됩니다.

첫번째는 기술역량부분 입니다. 소프트웨어 개발팀의 기술적인 역량은 무엇보다 중요 합니다.처리량 지표를 만족 시키는데 영향을 받습니다. 우리 조직에 아래 항목들이 어느정도 성숙화 되어 있을지 확인 해보고, 발전시킬 액션 아이템을 찾는것으로 시작 할 수 있습니다.

DevOps 기능

기술 역량

  • 버전 관리
    : 재현성과 추적 가능성을 충족하는데 필요한 버전 관리 방법을 구현하도록 안내합니다.
  • 트렁크 기반 개발
    : 트렁크 기반 개발 방법으로 병합 문제를 방지하고, 스테이징 환경을 최신으로 유지합니다.
  • 지속적인 통합
    : 일반적인 실수, 측정 방법, 지속적 통합 작업의 개선합니다.
  • 배포 자동화
    : 배포 자동화와 출시 단계/절차 중에 매뉴얼 작업 줄이고, 자동화합니다.
  • 지속적 테스트
    : 안정적인 자동화 테스트 모음을 빌드하고, 소프트웨어 제공 라이프사이클 전반에서 다양한 종류 테스트로 소프트웨어의 품질향상을 합니다.
  • 지속적 배포
    : 소프트웨어 배포 작업을 언제든지 필요에 따라 수행 할 수 있는 신뢰 할 수 있고, 위험 낮은 프로세스 제공
  • MSA 아키텍처
    : 한 번에 모든 것을 설계하지 않고, 긴밀하게 연결된 아키텍처를 우선시하며, 마이크로서비스 아키텍처를 구성하며, 안되어 있다면 이전하는 방법에 대해 고민합니다.
  • 팀의 도구 선택 지원
    : 팀이 도구와 기술을 결정할 때 정보에 입각해 판단 할 수 있도록 지원 합니다. 소프트웨어 제공의 효과를 높일 수 있는 방법 확인합니다.
  • 테스트 데이터 관리
    : 테스트 데이터를 효과적으로 관리하기 위한 전략과 테스트를 위해 데이터에 빠르고 안전하게 액세스 할 수 있는 접근 방식을 제공합니다.
  • 개발 초기부터 보안 통합
    : 소프트웨어 개발 라이프사이클 초반부터 보안 테스트를 수행해서 나중에 통합되어 사이클 타임이 길어지지 않도록 합니다.
  • 데이터베이스 변경관리
    : 데이터베이스 변경으로 인해 문제가 발생하거나 속도가 느려지지 않도록 합니다.
  • 클라우드 인프라
    : 더 높은 수준으로 민첩성, 가용성, 비용 가시성을 얻을 수 있도록 클라우드 인프라를 효과적으로 관리합니다.
  • 코드 유지관리성
    : 개발자가 코드를 쉽게 찾아서, 재사용 및 변경하고, 종속 항목을 최신 상태로 유지할 수 있게 지원합니다.

프로세스

두번재는 프로세스입니다. 단일 팀이아닌 기능팀, 혹은 더 많은 역할 팀이 협업으로 소프트웨어 제품을 만듭니다. 따라서 프로세스에 대한 부분을 간과 할 수는 없습니다. 그리고 문화의 근간은 프로세스가 만들기도 하기 때문이죠.

  • 팀의 자율적인 실험성
    : 팀 외부 관계자 승인 없이도 새로운 아이디어를 테스트해 볼 수 있는 자율적인 팀을 구축하여 혁신을 위한 빠른 실패가 가능합니다.
  • 변경 승인 간소화
    : 결정권자의 변경-승인 절차를 동료 검토로 대체해서 대기 시간 없이 빠르고 안정적인 출시 프로세스 활용합니다.
  • 고객 피드백
    : 고객 피드백을 수집하고 제품과 기능 설계에 반영하여 더욱 우수한 조직성과를 얻습니다.
  • 가치 흐름에서의 작업 가시성 : 아이디어 구상부터 고객 결과에 이르는 업무 흐름을 이해하고 시각화하여 더욱 우수한 성과 도출합니다.
  • 배치 사이즈 줄이기 : 작은 배치 사이즈의 요건을 만들고, 리드 타임을 단축하고, 피드백 루프 속도를 높입니다.

측정

세번째는 기술역량과 프소세스에 따라 만들어지는 결과물들을 어떻게 측정하고 운영하는지에 대한 부분입니다.

  • 비즈니스 의사 결정용 모니터링 시스템
    : 인프라 플랫폼, 미들웨어, 애플리케이션 계층의 모니터링을 개선하여 개발자에게 빠른 피드백 제공합니다.
  • 모니터링 및 예측 기능
    : 프로덕션 시스템을 이해하고 디버그하는데 도움이 되는 도구를 유지 관리합니다.
  • 장애, 오류 알림
    : 장애나 오류에 대한 사전 알림을 통해 중요한 문제를 식별하고 문제 발생 전에 조취합니다.
  • 진행 중인 업무 제한 (WIP Limit)
    : 업무 우선순위를 정하고 작업량을 제한하여, 우선순위가 높은 소량의 업무를 완료하는데 집중합니다.
  • 시각적 관리기능
    : 시각적 관리 원칙으로 정보 공유를 촉진하고, 팀 업무 현황에 대해 공통의 이해를 얻으며 개선 방법을 파악합니다.

문화

네번재는 문화입니다. 고 성과를 내는 조직이 되어 간다는 것은 곧 몸에 베고, 마음에 베어 있는 문화 입니다. 도전적인 마음과, 만족하는 직무를 근간으로 지속적인 학습을 할수 있는 문화를 말합니다.

  • Westrum 조직문화 (교차기능팀)
    : 신뢰 기반의 성장문화로 소프트웨어 제공 능력을 높입니다.
  • 학습 문화
    : 학습 문화가 조직 성과에 미치는 영향 확인합니다.
  • 직무 만족도
    : 인력이 업무에 필요한 도구와 리소스를 확보하고 기술과 역량을 충분히 활용하는 것이 얼마나 중요한지 확인합니다.
  • 혁신적인 리더십
    : 효과적인 혁신 리더가 기술 및 제품관리 기능 도입을 촉진하여 소프트웨어 제공 속도를 촉진합니다.

기능이 많습니다. 엘리트가 되기가 쉽지가 않습니다. 프로젝트 관리, 개발, QA, IT운영과 정보보안에서 업무를 수행하거나 영향을 미치는 모든 사람들이 위의 기능들에 대한 이해를 하고, 비즈니스 목표를 이루기 위한 가설 수립에서 실제 배포가 되기까지의 과정에 대한 흐름을 대충은 인지하고 측정 할 수 있어야 개선 더욱 활발해 집니다.

치열한 경쟁에서 우위를 차지 하기 위해서는 DevOps 로 기술가치 흐름을 만들고, 피드백 로프를 만들며, 지속적인 학습을 토대로 실험을 계속 할 수 있도록 해야합니다.

인포그랩은 DevOps 서비스 회사입니다. 현재 GitLab이라는 단일툴로 DevOps를 구현하도록 지원하고 있습니다.

References