DevOps 문화 수용
공동 작업, 공동 책임 및 소유권의 사고 방식을 가지고 협력하여 개발 및 운영 팀이 시스템 설계 및 프로세스를 지속적으로 개선할 수 있도록 지원합니다. |
---|
DevOps는 다양한 관점과 기술을 바탕으로 하나의 임무를 향해 나아가는 실무 커뮤니티입니다. 팀은 사일로화된 학습 대신 공유 지식의 공유 지식의 공동 작업 환경을 조성해야 합니다. 공유 기능을 사용하여 리소스 제약을 극복하기 위해 노력합니다.
좋은 DevOps 문화는 공동의 책임을 바탕으로 번성합니다. 개발 및 운영 팀은 고객의 기대에 맞게 목표와 우선 순위를 조정하고 비즈니스 초점을 염두에 두어야 합니다. 개발 팀은 개선 사항이 업스트림으로 구동되고 다른 팀이 동등하게 혜택을 받을 수 있도록 운영 팀을 피드백 루프에 포함시켜야 합니다. 반대로 운영 팀은 워크로드와 관련된 리소스 및 피드백을 공유하여 개발 팀이 비즈니스 결과에 성공하도록 할 책임이 있습니다.
동시에 DevOps 방식은 각 팀에 명확한 소유권과 책임 라인을 적용합니다. 애플리케이션이 실행되는 위치에 관계없이 워크로드 팀은 해당 애플리케이션에 대한 책임이 있습니다.
DevOps는 효과적이지만 부담스럽지 않도록 운영 작업을 최적화합니다. DevOps의 모든 이점을 활용하려면 문화권은 기술을 통해 프로세스를 최적화하고 조직의 사람들이 투명한 통신을 촉진하는 프로세스를 갖춰야 합니다.
예제 시나리오
Contoso의 HR(인사) 부서는 부서의 내부 사용을 위해 새로운 LOB(기간 업무) 앱을 개발하는 프로젝트를 시작합니다. 앱은 현재 계획 단계에 있으며 아직 디자인 또는 구현 작업이 시작되지 않았습니다.
효율적으로 공동 작업
통신 및 진행 상황 추적을 위한 공동 작업 환경을 촉진하는 공통 시스템 및 도구를 사용합니다.
공통 도구 및 프로세스는 투명한 통신을 가능하게 합니다. 개발 팀과 운영 팀 모두 다양한 환경, 일반적인 지원 문제, 전반적인 과제와 승리에 대한 상황적 인식의 이점을 얻습니다.
인시던트가 있는 경우 팀은 이미 기존 에스컬레이션 경로에 익숙할 것입니다.
공유 백로그는 새 기능 작업 또는 버그 수정과 같은 우선 순위를 명확하게 합니다.
Contoso의 과제
- Contoso에는 새 앱의 개발 및 유지 관리에 참여할 세 개의 기술 팀(개발, 테스트 및 운영)이 있습니다. 현재 이러한 팀에서 일관되게 사용되는 표준 통신 및 프로젝트 추적 도구는 없습니다.
- 역사적으로 각 팀은 원하는 도구를 선택할 수 있었습니다. 내부 메시지에 일부는 Slack을 사용하고 다른 일부는 Microsoft Teams를 사용합니다. 일부는 ADO(Azure DevOps)를 사용하고 다른 팀은 Excel을 사용하여 작업을 추적하고, 각 팀은 나머지와 다른 문서 리포지토리를 사용하여 지식 및 인시던트 대응 절차를 공유합니다.
- 과거 프로젝트에서는 각기 다른 도구가 사용되어 전반적인 기술 조직이 통신과 공동 작업에 어려움을 겪었습니다. 앞으로 Contoso HR은 생산성을 개선하고 이전에 발생한 것과 같이 프로젝트를 느리게 할 수 있는 상황을 방지하려고 합니다.
접근 방식 및 결과 적용
- 기술 팀의 리더는 프로젝트 후원자와 만나 앞으로 사용될 표준 도구를 선택했습니다. 그룹은 백로그, 코드 리포지토리 및 배포 파이프라인을 관리하기 위해 ADO를 선택했습니다. 또한 통신 및 공동 작업을 위해 Microsoft Teams를 선택했습니다.
- 공통 도구 집합을 사용하면 개발, 운영 및 테스트 팀이 다양한 환경의 상태, 공통적인 프로젝트 문제 및 팀 성과에 대한 정보를 얻고 동기화를 유지할 수 있습니다. 또한 팀은 잘 알려진 단일 위치에서 인시던트가 발생할 경우 설정된 에스컬레이션 경로에 대한 정보에 액세스할 수 있습니다.
- 또한 공유 백로그를 사용하면 새 기능 개발 또는 버그 수정과 같은 우선 순위를 일관되게 계획하고 조정하는 데 도움이 됩니다.
지속적인 개선 수용
개발 주기 전반에 걸쳐 지속적인 학습 및 실험 사고방식을 구축합니다. 팀 간 지식 공유를 지원하고 재사용을 위한 설명서를 유지 관리합니다. 그리고 비난 없는 분석을 수행하고 릴리스 후 및/또는 인시던트 후 검토를 수행합니다.
A/B 테스트 및 개념 증명 개발과 같은 실험 메커니즘을 통해 비용을 낮게 유지하면서 혁신을 장려할 수 있습니다.
팀이 설계 접근 방식, 도구 및 프로세스에 능숙하게 만드는 공동 작업을 통해 지식을 공유합니다.
프로젝트 후 회고를 수행하면 개선 영역을 식별하고 성공을 축하하는 데 도움이 됩니다.
Contoso의 과제
- 정보 공유를 더욱 용이하게 하고 공동 작업과 투명성의 문화권을 육성하기 위해 팀은 프로젝트 설명서에 대한 중앙 집중적이고 쉽게 액세스할 수 있는 정보 소스를 갖고자 합니다. 무엇보다도 새 개발자가 팀에 합류하고 프로젝트를 빠르게 진행해야 하는 경우 도움이 될 것입니다.
- Contoso HR이 특히 관심이 있는 점은 애플리케이션의 가용성에 영향을 주는 인시던트의 학습이 향후 인시던트를 돕고 최대한 되풀이를 방지하기 위해 전체 기술 조직에서 캡처하고 공유하는 것입니다.
- 애플리케이션의 사용자 환경을 설계하는 경우 과거의 실수가 반복되는 것을 방지하기 위해 팀은 실제 사용자 피드백을 고려할 수 있는 보다 민첩한 접근 방식을 사용하려고 합니다.
접근 방식 및 결과 적용
- 팀은 모든 설계 사양과 함께 모든 활성 운영 절차, 인시던트 대응 계획 및 회고적 결과가 게시되는 ADO에서 지식 공유 Wiki를 빌드합니다.
- 인시던트 및 모든 개발 반복 후 비난 없는 회고를 수행하고 Wiki의 학습을 문서화하면 프로젝트 팀이 개선 영역을 식별하고 성공을 축하하는 데 도움이 됩니다.
- 팀은 새로운 애플리케이션의 사용자 환경 디자인에 탐색적 접근 방식을 채택하여 UX 컨설턴트가 제안한 여러 가지 변형 중에서 최상의 사용자 환경을 찾기 위해 A/B 테스트를 활용하고, 사용자 피드백을 고려하여 데이터 중심의 의사 결정을 내렸습니다.
개발 및 운영 절차 체계화
모든 개발 및 운영 절차에 대한 표준을 설정하고 정기적으로 검토하고 유효성을 검사합니다. 이러한 절차에는 일상적인 작업, 대역 외 프로세스, 비상 훈련 및 상황, 도구 선택, 모니터링 절차, 기술 계획, 심지어 이해 관계자와의 통신 및 고객 공개까지 포함됩니다. 결정은 의도적이고 명시적이어야 합니다.
표준은 운영에 예측 가능성을 높이고 프로세스 및 관행을 확장 가능하게 만듭니다. 표준의 유효성을 검사하는 것은 개선점을 도출하는 좋은 방법입니다.
정기적인 훈련을 실시하여 비상 및 복구 상황에 대비합니다.
정밀하게 실행하고 거버넌스를 사용하도록 설정하여 위험으로 이어지는 변칙을 방지합니다.
Contoso의 과제
- 과거에 개발 팀의 생산성과 결과물 품질에 영향을 미쳤던 문제 중 하나는 코드베이스의 표준화 및 일관성의 부족입니다. 예를 들어 명명 규칙에서 균일성이 없거나 공통 소프트웨어 패턴을 사용하지 않으면 팀 구성원이 서로의 코드를 이해하기 어렵고 이는 효율성에 영향을 줍니다.
- 또한 운영에 대해 적절히 문서화된 공통된 접근 방식이 없으면 운영 직원이 다른 방법을 사용하여 동일한 목표를 달성할 수 있으므로 비효율성과 혼란을 초래할 수 있습니다.
- Contoso HR은 다른 DevOps 개선 사항을 구현하여 성공했으므로 이 문제를 다음 개발 주기의 일부로 해결하기로 결정했습니다.
접근 방식 및 결과 적용
- 개발 팀은 개발 주기 동안 함께 모여 구현할 개발 표준 집합에 동의합니다. 선택한 항목을 문서화하고 코드 검토 중 그리고 도구를 통해 적용하기 시작합니다. 다음과 같은 항목을 살펴봅니다. 코드 서식 지정 및 명명 규칙, 오류 처리, 버전 제어 및 보안 관행. 팀은 ADO에서 생성되는 품질 메트릭 및 보고서에 세심한 주의를 기울여 이러한 변경 사항이 품질과 생산성에 미치는 영향을 정량화하여 이러한 종류의 DevOps 개선이 관리 팀에 미치는 가치를 입증할 계획입니다.
- 마찬가지로 운영 팀은 동일한 기간 동안 일상적인 관리 및 문제 해결 관행에 대한 기존 설명서를 확장하고 Wiki에 게시하는 데 시간을 할애합니다. 앞으로 Wiki는 단일 정보 소스의 역할을 하여 정보를 검색하는 데 소요되는 시간과 에너지를 절약합니다.