이 글은 처음에 게시되었습니다 DevOps.com에 게시되었습니다. 업데이트 및 수정되었습니다.
「블록체인」, 「빅데이터」, 「디지털 디스루프션」과 마찬가지로, 「DevOps」라는 용어는 현재 대규모 조직의 IT 부서에서 사용되는 또 다른 유행어입니다.
많은 기업들은 비즈니스 목표와 긴밀히 연계된, 보다 명확한 워크플로우와 개발 팀 및 운영 기반 팀 간의 협업을 가능하게 하는, 보다 정확한 프로세스인 소프트웨어 개발 라이프사이클의 필요성을 (올바르게) 인식하고 있습니다. DevOps는 본질적으로 '애자일' 개발이며, 모두가 성장하고 지속적으로 혁신되며 신속하게 배포되는 현대 비즈니스의 요구에 부응할 준비가 되어 있습니다.보안 전문가에게 이는 훌륭한 접근 방식입니다. 훨씬 더 이른 단계에서 보안이 프로세스에 주입될 수 있으므로, 버그 수정 비용을 절감하고 미래에 발생할 수 있는 재앙을 피할 수 있습니다.
문제는 DevOps 구현에 진정으로 성공한 기업이 거의 없다는 점입니다. 비즈니스 전반에 걸친 적절한 지원, 육성, 이해가 없다면 순식간에 백지 상태로 돌아가게 됩니다. 아시다시피, 이는 '전쟁은 말할 것도 없다'는 프로젝트 중 하나입니다.
그럼, 무엇이 문제인가요? 이는 흥미로운 논의입니다. DevOps 접근 방식에는 훨씬 더 원활한 전환에 도움이 될 것이라고 제가 믿는 몇 가지 방법이 있습니다. 효과적인 프로그램은 화려한 새 도구, 직함, 팀 회의만으로는 충분하지 않습니다. 반드시 쉬운 일은 아니지만, 실패한 전략을 수정하는 데(또는 처음부터 올바른 방식으로 실행하는 데) 시간을 투자하면 장기적으로 고통이 훨씬 덜해집니다. 그리고 결국에는 더 높은 품질과 안전성을 갖춘 소프트웨어가 탄생할 것입니다.
분해해 보겠습니다:
「애자일」에프런의 끈을 놓아주세요.
조직은 애자일이나 DevOps 중 하나를 선택하고, 한쪽 길을 개척한 뒤 절대 뒤돌아보지 말아야 한다는 오해가 있습니다.
중요한 것은 개발 프로세스가 양자를 하나로 통합하여 고려하고 구현할 때 가장 효과적으로 작동한다는 점입니다. DevOps는 애자일 개발의 재발명이 아닙니다. 오히려 애자일 개발의 연장선상에 있습니다. 프로세스 자체에 기대면 바퀴가 빠지기 쉽습니다. 완전히 동일한 애자일에서, 혹은 완전히 다른 애자일에서 말이죠.
애자일은 디자이너, 테스터, 개발자를 초기부터 연결하고 프로젝트 전반에 걸쳐 개방적인 커뮤니케이션 라인을 보장하는 크로스 기능 팀 원칙을 지원합니다. 그 목적은 사일로화된 배포를 중단하고 이중 작업을 줄이는 것이며, 이 두 가지 모두 DevOps 프로세스의 장점이기도 합니다.그러나 DevOps는 한 걸음 더 나아가 시스템, 보안, 운영을 결합하여 고객에게 완전하고 기능적인 소프트웨어를 제공하는 것을 궁극적인 목표로 하는 견고한 엔드투엔드 기술 세트를 제공합니다.
DevOps 중심 프로세스로의 전환이라는 피할 수 없는 과제에 직면하면서, 사일로화된 개발의 위험이 다시 높아질 수 있습니다. 대부분의 경우, 기존 애자일 팀들이 협력하여 보안 및 운영 기능을 어떻게 통합해야 하는지, 무엇을 해야 하는지, 그리고 전체적인 목표에 대해 누구도 확신을 가지지 못한 상태에서 이러한 기능들이 여전히 조직에 스며들고 있습니다.
DevOps는 명확히 정의된 목표, 부서를 초월한 온보딩, 모든 관계자와의 직접적인 커뮤니케이션 없이는 작동하지 않습니다. 신중한 변경 관리가 필요한 조정 기간이 있지만, DevOps 기능이 가져다주는 강화에 대한 모든 사람의 인식을 일치시키는 것은 싸움의 절반에 불과합니다.
DevOps는 프로세스의 일환으로 보안 모범 사례에도 중점을 두게 되었으며, 그 단계를 명확하게 설명함으로써 보안 팀과 다른 모든 구성원 간의 격차를 해소하고 있습니다(고마운 일입니다). 앞서 언급했듯이 개발자가 처음부터 안전하게 코딩할 수 있도록 하려면 아직 갈 길이 멀지만, DevOps 방법론의 성공적인 구현은 개발 팀 내에서 보안 역량을 구축하기 위한 훌륭한 기반이 됩니다.
자동화가 전부는 아닙니다(또한 가장 안전하다는 의미도 아닙니다).
DevOps 방법론의 또 다른 특징은 소프트웨어 개발 프로세스의 어느 정도 자동화입니다. 지속적 통합과 지속적 배포(CI/CD) 원칙은 이 개념의 기초이며, 예상하시다시피 도구에 크게 의존합니다.
도구는 훌륭합니다, 정말 훌륭합니다. 코드 저장소, 테스트, 유지보수, 저장소 등 각 요소를 비교적 매끄럽게 관리할 수 있게 해주므로 소프트웨어 배포 프로세스에 전례 없는 속도를 가져다줄 수 있습니다.
그러나 로봇이 언젠가 우리의 모든 일자리를 빼앗고 우리를 감옥에 가둘 수도 있지만, 아직 실현되지 않았다는 것은 분명합니다. 도구와 자동화에 크게 의존하면 오류 발생 가능성이 크게 확대됩니다. 스캔이나 테스트로 모든 것이 발견되는 것은 아니며, 코드가 점검되지 않은 채로 남을 수도 있습니다. 그 결과 품질(물론 보안도)에 에 심각한 문제가 발생합니다. 공격자가 데이터를 훔치기 위해 악용할 수 있는 백도어는 단 하나면 충분합니다. 품질 관리나 보안 관리에서 인적 요소를 간과하면 비극적인 결과를 초래할 수 있습니다.
「해피 미디엄」이란 사람들의 균형을 맞추는 것입니다. 그리고 도구입니다. 도구는 신뢰할 수 있는 팀이 프로젝트 목표를 달성하기 위한 조력자 역할을 해야 합니다. 다음을 수행해야 합니다.
- 선택한 DevOps 도구 체인에 익숙해질 수 있도록 충분한 시간을 할당하십시오.
- 효과적인 협업(그리고 도구가 이를 어떻게 지원할 수 있는지)에 초점을 맞춘다
- 기술/지식에 기반한 것이든, 도구에 기반한 것이든, 프로세스의 모든 격차를 해결합니다.
결국, 단순히 '도구를 업그레이드'해서 최상의 결과를 기대해서는 안 됩니다.
DevOps는 유행어가 아닌 문화입니다. 귀사의 성장은 진행 중입니까?
변경 관리는 가장 좋은 시기에도 어려운 일입니다. 미지에 대한 두려움은 가장 우수한 팀 멤버조차도 기술을 연마하고 시야를 넓히는 것을 방해할 수 있습니다.
단순히 "DevOps를 하자"고 말하며 운영 팀의 책상만 옮긴다고 해서 마법처럼 프로세스가 성공하지는 않습니다. 많은 사람들이 혼란스러워하고, 오랜 기간 근무해 온 팀원들은 불만을 느낄 것입니다. 기대를 전달하는 것은 필수적이며, "한 걸음씩 나아가기"도 중요합니다. DevOps는 개발 방법론인 동시에 문화적 운동이기도 합니다. 팀은 부서 간 협업과 협력적인 사고방식을 고수해야 합니다.
우수한 DevOps 문화란 어떤 것일까요?
- 리더뿐만 아니라 개인이 자신의 전문 지식을 프로세스에 활용할 수 있는 권한을 부여받는다
- 팀 간의 개방적이고 진실하며 존중하는 의사소통
- 개발 프로세스에 품질과 보안을 통합한다는 전반적인 목표에 대해서는 각자가 책임을 집니다.
- 비즈니스에서의 DevOps 정의, 로드맵, 각 구성원의 역할 방법/내용/이유에 대해 모두가 동일한 인식을 가지고 있습니다.
저는 오랫동안 개발 팀에서 긍정적인 보안 문화를 구축하는 것의 중요성을 강조해 왔으며, DevOps도 예외는 아닙니다.
보안 모범 사례를 달성하고 발견된 취약점이 감소하는 것을 확인하며 데이터 보호의 중요성에 팀의 관심을 집중시키기 위해서는 적절한 도구, 지식 및 지원이 필수적입니다. DevOps에서는 긍정적인 변화를 실현하기 위한 문화적 기반을 구축해야 합니다. 즉, 모든 구성원이 자신의 역할, 가치, 기대 사항, 프로젝트 전체 목표 및 프로세스 단계를 이해할 수 있도록 해야 합니다.
그것을 마스터했나요? 훌륭합니다. 그렇다면 이제 방향을 전환하여 보안 측면을 더욱 강화하고, DevSecOps를 소프트웨어 우수성의 궁극적인 로드맵으로 만들어 봅시다.