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

우리 조직이 고 성과(🏆) 인지 아닌지를 빠르게 판단 해보려면...
DevOps로 조직이 높은 성과를 내도록 지원하는 DORA의 4가지 간단한 질의로 가능합니다.
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 아키텍처
: 한 번에 모든 것을 설계하지 않고, 긴밀하게 연결된 아키텍처를 우선시하며, 마이크로서비스 아키텍처를 구성하며, 안되어 있다면 이전하는 방법에 대해 고민합니다.팀의 도구 선택 지원
: 팀이 도구와 기술을 결정할 때 정보에 입각해 판단 할 수 있도록 지원 합니다. 소프트웨어 제공의 효과를 높일 수 있는 방법을 확인합니다.테스트 데이터 관리
: 테스트 데이터를 효과적으로 관리하기 위한 전략과 테스트를 위해 데이터에 빠르고 안전하게 액세스 할 수 있는 접근 방식을 제공합니다.개발 초기부터 보안 통합
: 소프트웨어 개발 라이프사이클 초반부터 보안 테스트를 수행해서 나중에 통합되어 사이클 타임이 길어지지 않도록 합니다.데이터베이스 변경관리
: 데이터베이스 변경으로 인해 문제가 발생하거나 속도가 느려지지 않도록 합니다.클라우드 인프라
: 더 높은 수준으로 민첩성, 가용성, 비용 가시성을 얻을 수 있도록 클라우드 인프라를 효과적으로 관리합니다.코드 유지관리성
: 개발자가 코드를 쉽게 찾아서, 재사용 및 변경하고, 종속 항목을 최신 상태로 유지할 수 있게 지원합니다.
프로세스
두번째는 프로세스입니다. 단일 팀이아닌 기능팀, 혹은 더 많은 역할 팀이 협업으로 소프트웨어 제품을 만듭니다. 따라서 프로세스에 대한 부분을 간과 할 수는 없습니다. 그리고 문화의 근간은 프로세스가 만들기도 하기 때문이죠.
팀의 자율적인 실험성
: 팀 외부 관계자 승인 없이도 새로운 아이디어를 테스트해 볼 수 있는 자율적인 팀을 구축하여 혁신을 위한 빠른 실패가 가능합니다.변경 승인 간소화
: 결정권자의 변경-승인 절차를 동료 검토로 대체해서 대기 시간 없이 빠르고 안정적인 출시 프로세스를 활용합니다.고객 피드백
: 고객 피드백을 수집하고 제품과 기능 설계에 반영하여 더욱 우수한 조직성과를 얻습니다.가치 흐름에서의 작업 가시성: 아이디어 구상부터 고객 결과에 이르는 업무 흐름을 이해하고 시각화하여 더욱 우수한 성과를 도출합니다.배치 사이즈 줄이기: 작은 배치 사이즈의 요건을 만들고, 리드 타임을 단축하고, 피드백 루프 속도를 높입니다.