DevOps란?
DevOps는 고객에게 지속적으로 가치를 전달할 수 있도록 지원하는 사람, 프로세스, 제품의 합집합입니다. 하지만 정확한 의미는 무엇일까요? DevOps가 무엇인지, DevOps가 아닌 것은 무엇인지, 우수 성과자를 만드는 것은 무엇인지, 팀에 합류하여 Mara의 설명을 들어 보겠습니다.
Mara는 팀원들과 짧은 회의를 요청했습니다. 모든 팀원이 참석하기는 했지만, 원해서 온 사람은 아무도 없습니다. Mara는 테이블 위에 도넛 상자를 올려 놓습니다.
Mara: 모두 참석해 주셔서 감사합니다. 우리의 가치 흐름도에 대해 이야기를 나누고 프로세스 효율성을 높이는 방법을 토론하고 싶어서 이 자리를 만들었습니다.
이전 회의 때 화이트보드에 표시된 Mara의 가치 흐름도가 여전히 표시되어 있습니다.
Mara: 가치 흐름도를 보면 최종 사용자에게 가치를 제공하는 효율성이 떨어지는 부분을 알 수 있습니다. 다른 사람들과 마찬가지로, 개선할 수 있으며 먼저 해결할 영역을 결정할 수 있습니다.
Andy: 가치 흐름도를 어디에 문제가 있는지는 알 수 있지만 어떤 조치를 취해야 하는지는 알 수 없습니다.
Mara: 맞아요, 우리에게 올바른 방향을 알려 주는 교재라고 할 수 있습니다. 문제에 대해 어떤 조치를 취해야 하는지에 관해서는 DevOps가 도움이 될 수 있다고 생각합니다. 제가 다니던 이전 회사에서는 배포 속도가 훨씬 빠르고, 리드 타임이 빠르고, 운영 관련 사건도 훨씬 적었습니다. 그렇게 될 때까지 시간이 좀 걸리기는 했지만, 그럴 만한 가치가 있었습니다. DevOps는 단기간에 할 수 있는 방법이 아닙니다.
Tim: 저도 DevOps 엔지니어로 일하는 사람을 알고 있습니다. 제 생각에 DevOps는 개발자에 더 가깝습니다. 그러고 보니 Andy 님과 비슷하네요.
Mara: DevOps는 직위가 아닙니다.
Amita: 우리를 도와줄 수 있는 소프트웨어 프로그램이나 템플릿이 있나요? DevOps 스프레드시트가 있을 것 같은데.
Mara: DevOps는 소프트웨어가 아닙니다.
Andy: 방법론에 더 가깝죠.
Mara: 그렇지는 않아요.
Andy, Amita, Tim: 그렇다면 무엇인가요?!
Mara: 제가 사용하고 싶은 정의는 바로 이거에요.
DevOps는 최종 사용자에게 지속적으로 가치를 전달할 수 있는 사람, 프로세스 및 제품의 합집합입니다.
실제로 Microsoft의 Cloud Advocate인 Abel Wang이 몇 가지 질문에 대해 즉석에서 대답한 훌륭한 비디오 세트가 있습니다. Abel이 DevOps를 어떻게 정의하는지 살펴보겠습니다.
Abel에게 질문하기
우리의 목표는 고객이 좋아할 만한 게임을 제공하는 것입니다. 그러기 위해 우리는 공유되는 사례 및 도구 세트를 사용합니다.
Amita: 어떤 의미인가요? 어떤 공유 사례요? 어떤 공유 도구요?
Mara: 사례라는 말의 의미는 다음과 같습니다.
- 민첩성 계획: 여러분과 함께 우리 팀과 관리 부서의 모든 직원이 볼 수 있는 작업 백로그를 만듭니다. 어떤 일을 먼저 해야 하는지 알 수 있도록 항목의 우선 순위를 지정할 것입니다. 백로그에는 사용자 스토리, 버그, 그 외에 도움이 되는 모든 정보가 포함될 수 있습니다.
- 연속 통합(CI): 코드를 빌드하고 테스트하는 과정을 자동화합니다. 팀원이 변경 내용을 버전 제어로 커밋할 때마다 이 코드를 실행할 것입니다.
- 지속적인 배포(CD): CD는 빌드부터 QA까지 또는 프로덕션 환경을 테스트, 구성 및 배포하는 방법입니다.
- 모니터링: 원격 분석을 사용하여 애플리케이션의 성능 및 사용 패턴에 대한 정보를 수집합니다. 이 정보를 사용하면 반복 작업을 개선할 수 있습니다.
Amita: 저는 자동화된 테스트에 대해 잘 모릅니다. 제가 하는 테스트는 수동이며, Andy 님이 저에게 코드를 전달하면 그 후에 테스트합니다. 지금 제가 하고 있는 것들을 변경할 시간이 없습니다.
Tim: 여러분이 프로덕션 환경에 배포하도록 허용할 방법이 없습니다.
Andy: 경영진이 알면 싫어할 거예요. 경영진은 항상 다음 릴리스를 최대한 빨리 출시하는 것만 생각하죠.
Mara: 경영진에 대한 우려를 이해합니다. 우수한 성과팀이 되기 위해 필요한 것들을 제가 자료로 모아 보았습니다.
우수 성과 팀이 되려면 무엇이 필요할까요?
다음은 Mara가 준비한 유인물입니다. 이 정보는 전 세계의 기술 전문가들이 수행한 DevOps 연구 보고서 및 설문 조사를 기반으로 합니다.
DevOps는 기업이 고객 채택률과 만족도를 높이는 방법을 실험하는 데 도움이 됩니다. 결과적으로 조직의 성과를 향상하고 수익성과 시장 점유율을 높일 수 있습니다.
메트릭을 사용하여 ‘우수 성과자’와 부진한 성과자를 비교할 수 있는 기준이 되는 네 가지 범주를 만듭니다.
우수 성과자:
더 자주 배포
일부 팀에서는 하루에 수십 번 배포합니다.
모니터링, 지속적인 테스트, 데이터베이스 변경 관리, 소프트웨어 개발 프로세스 초기의 보안 통합 같은 사례는 우수 성과자가 더 자주 배포하는 데 도움이 되고, 예측 가능성과 보안을 크게 향상합니다.
커밋부터 배포까지 리드 타임 감소
리드 타임은 기능을 고객에게 제공하는 데 걸리는 시간을 말합니다. 일괄 처리 크기를 줄이고, 수동 프로세스를 자동화하고, 더 자주 배포하면 우수 성과자는 몇 주 심지어 몇 달이 걸리던 작업을 몇 시간 또는 며칠 내에 완료할 수 있습니다.
변경 실패율 감소
프로덕션 환경에서 실패하거나 다른 기능을 중단시키는 새 기능은 개발자와 사용자 간의 기회 손실로 이어질 수 있습니다. 우수 성과 팀이 성숙할수록 시간에 따른 변경 실패율이 감소합니다.
사고를 빠르게 복구
사고가 발생할 때 우수 성과자는 보다 빠르게 복구할 수 있습니다. 메트릭에 따라 조치를 취하면 우수 성과자가 더 빨리 복구하는 동시에 더 자주 배포할 수 있습니다.
클라우드 인프라를 구현하는 방법도 중요합니다. 클라우드는 소프트웨어 제공 성능을 향상합니다. 따라서 필수적인 클라우드 특성을 채택한 팀은 우수한 성과를 거둘 가능성이 더 큽니다.
아웃소싱을 통해 비용을 절약하고 인력 풀의 유연성을 확보할 수 있지만, 올바른 영역에 사용해야 합니다. 성과가 낮은 팀은 성과가 높은 팀보다 전체 직능(예: 테스트 및 운영)을 아웃소싱할 가능성이 더 큽니다.
요점
DevOps는 많은 우수 기업이 경쟁사보다 더 빠르게 새로운 기능과 개선의 형태로 고객에게 가치를 제공할 수 있게 된 주요 근거입니다. 이 짧은 비디오에서 Abel은 DevOps에 대해 자세히 학습해야 하는 이유를 설명합니다.
Abel에게 질문하기
DevOps가 아닌 것
DevOps가 무엇인지 검토할 때 DevOps에 해당하지 않은 것을 확인하는 것도 중요합니다. DevOps는 다음이 아닙니다.
- 방법론
- 한 가지 특정 소프트웨어
- 조직의 당면과제에 대한 빠른 해결책
- 단순한 팀 이름이나 직책(업계에서는 매우 일반적으로 사용되고 있지만).