해당 스터디는 90DaysOfDevOps
https://github.com/MichaelCade/90DaysOfDevOps
를 기반으로 진행한 내용입니다.
Day 24 - DevSecOps - Defined, Explained & Explored
결국, 이러한 복잡성은 기존의 프로세스와 도구만으로는 비즈니스를 효과적으로 대응하기 어렵게 만들기 때문에, 최적화된 새로운 접근법을 필요로 하는 상황이다.
고객들은 더 많은 가치, 유연성, 더 빠른 민첩성 (Agility) 를 원하는 상황이다.
이러한 고객들의 요구를 충족시키기 위해서는 이를 뒷받침할 수 있는 어플리케이션, 개발 도구, 팀 조직 구조를 갖추는 것이 필수 과제가 된 상황이다.
더 높아진 고객과 시장의 기대치에 부응하기 위하여 IT 조직은 다양한 구체적인 목표를 요구하고 있다.
속도와 가치: 비즈니스를 지원하기 위해 빠르고, 민첩하며 (Agile), 가치 중심적인 (Value-driven) IT가 필요함.
품질과 안정성: 비즈니스의 연속성을 위해 확장 가능하고 (Scalable) 신뢰할 수 있는 (Reliable) 소프트웨어 솔루션이 필요함.
시장 출시 시간 단축: 경쟁에서 우위를 점하기 위해 제품과 서비스를 신속하게 출시해야 함.
비용 절감: 모든 비즈니스에서 공통적으로 요구되는 핵심 목표
사용자 경험 향상: 고객 만족도와 충성도를 높이기 위해 뛰어난 사용자 경험을 제공해야 함.
현재 비즈니스 환경이 과거와 달리 매우 복잡하고 역동적으로 변화하고 있으며, 이러한 변화의 계기들에 효과적으로 대응하기 위해 올바른 문화, 프로세스, 도구를 촉진하는 방법론으로 DevSecOps가 제시되었다.
DevSecOps는 '개발 (Development), 보안 (Security), 운영 (Operation)'을 통합하는 소프트웨어 엔지니어링 문화이자 Practice이다.
이러한 정의는 곧, 단순히 새로운 도구나 프로세스를 도입하는 것을 넘어, 조직 구성원들이 일하는 방식과 사고방식 자체의 변화를 의미한다.
DevSecOps는 비즈니스 가치를 창출하기 위해 다음과 같은 활동을 수행한다.
자동화 : 소프트웨어 개발 수명주기 전반의 작업을 자동화하여 속도를 높이고 인간의 실수를 줄임.
모니터링 : 개발의 여러 단계를 지속적으로 모니터링하여 문제를 조기에 발견하고 데이터 기반의 의사결정을 지원함.
보안 적용 : 개발 초기 단계부터 보안 원칙과 프랙티스를 적용하여 시스템을 완벽하고 안전하게 구축함.
DevSecOps를 도입하여 궁극적으로 자동화, 모니터링, 보안 적용을 통해 고객에게 더 나은 성과를 제공하고 비즈니스 가치를 향상시킬 수 있다.
또한, DevSecOps 철학의 중심에는 '지속적인 피드백 루프'가 있다.
'지속적 피드백 루프'는 개발의 여러 단계인 빌드, 테스트, 배포 등을 한번에 끝내는 것이 아니라, 짧은 주기로 계속 반복하여 제품을 점진적으로 완성해 나가는 방법이다.
이를 통해, 'MVP (Minimum Viable Product, 최소 기능 제품)' 의 여러 버전을 지속적으로 고객에게 전달한다.
이처럼, DevSecOps는 지속적인 피드백 루프를 통해 고품질의 소프트웨어를 안정적이고 빠르게 제공하는 것을 목표로 하는 방법론이다.
DevSecOps를 도입해야 하는 이유는 명확한 비즈니스 가치를 제공하기 때문이다.
이는 단순히 기술적 개선을 넘어 기업의 생존 및 성장과 직결되는 4가지 이점으로 귀결된다.
비용 효율성
더 빠른 시장 출시
품질 및 안정성 향상
높은 고객 만족도
DevSecOps는 특정 단계 (무엇을 하는가)들이 순환하는 구조를 가지며, 이 모든 과정은 4가지 핵심 원칙 (어떻게 하는가) 에 의해 구동된다.
DevSecOps는 크게 3개의 기능적 단계가 지속적으로 순환하여 가치를 전달한다.
개발 : 비즈니스 요구사항(제품 백로그, 스프린트 계획 등)을 받아 실제 동작하는 소프트웨어를 설계, 코딩, 빌드, 테스트하여 배포하는 과정
운영 : 배포된 애플리케이션을 안정적으로 운영하기 위해 모니터링하고, 장애 발생 시 서비스 수준 협약 (Service-Level Agreement, SLA) 에 따라 단계별 기술 지원 단계인 L1 (기초), L2 (심화), L3 (전문)을 제공하는 등의 서비스 관리를 수행
지속적인 서비스 개선 : 결함 밀도, 팀 속도, 평균 수리 시간 (MTTR) 등의 핵심 평가 지표 (Key Performance Indicator, KPI)를 기반으로 피드백을 수집하고, 이를 통해 프로세스와 제품을 끊임없이 개선하는 활동
앞서 설명한 3단계들이 성공적으로 작동하게 만드는 철학적 기반은 다음과 같다.
애자일 (Agile): 짧은 주기의 반복을 통해 '최소 기능 제품 (MVP)' 를 점진적으로 개발하여 비즈니스 요구사항을 DevSecOps 파이프라인에 지속적으로 공급하는 방법론
자동화 (Automation): 수동 작업이 불가능한 현대의 복잡한 시스템에서 코드 검증, 테스트, 배포, 모니터링 등 모든 과정을 자동화하여 속도와 안정성을 확보
거버넌스 (Governance): 핵심 평가 지표 (KPI) 와 중요 지표 (KR) 같은 지표를 통해 모든 과정을 모니터링하고, 프로젝트가 비즈니스 목표에 부합하도록 방향을 조정 (전체 프로세스의 가시성을 높이는 역할)
지속적인 서비스 개선 (Continuous Service Improvement): 전체 '소프트웨어 개발 수명주기 (SDLC)' 전체에 적용되는 개념으로, 현재에 안주하지 않고 끊임없이 더 효율적인 시스템을 만들려는 노력
앞서 설명한대로 DevSecOps는 기술 도입을 넘어 조직의 근본적인 변화를 요구하는 변화 과정이다.
따라서, 성공적인 도입을 위해 여러 계층의 변화를 체계적으로 관리해야 한다.
문화적 변화: 자율적인 팀 구축
기존의 분업화된 SDLC 와 달리 DevSecOps는 자율적인, 고성능의, 자기 조직화된 팀을 지향한다. 팀 스스로가 외부 의존 없이 제품 백로그를 관리하고 문제를 해결하는 문화적 변화를 주도해야 한다.
개선과 혁신 장려
조직은 실패를 용인하고 새로운 아이디어를 장려하여 DevSecOps 프랙티스 자체를 지속적으로 발전시켜야 한다.
데이터 기반 관리: 지표와 KPI 활용
객관적인 데이터를 통해 환경에서 어떤 일이 일어나는지 명확히 파악하고, 이를 기반으로 필요한 부분을 수정하고 조정해야 한다. 이때, KPI와 지표는 이러한 데이터 기반 의사결정의 핵심 도구이다.
권한 부여와 협업 촉진
팀에게 명확한 권한을 부여하여 주도적으로 일할 수 있는 환경을 만들고, 팀 간의 원활한 협업을 촉진해야 한다.
기업의 규모가 커져 한 달에 수천 건의 배포가 일어나는 복잡한 환경에 이르면, 더 이상 수동 운영 방식은 불가능하다.
따라서, 이러한 복잡성을 처리하고 비즈니스 속도를 유지하기 위해 DevSecOps로의 변화은 선택이 아닌 필수가 된다.
DevSecOps를 성공적으로 도입하기 위해서는 이를 실제로 어떻게 구현할 것인지에 대한 명확한 계획 및 방식이 필요하다.
조직이 DevOps를 도입할 때 가장 핵심이 되는 부분 (Cornerstone) 으로, 비즈니스 아이디어가 실제 운영 환경에 배포되기까지의 전 과정을 보여준다.
고객 요구사항과 애자일(Agile)
'제품 카탈로그(Product Catalog)' 생성
'스프린트 카탈로그(Sprint Catalog)'로 변환
개발 및 MVP 구축
운영(Operations) 및 피드백
이처럼 애자일과 DevOps는 분리된 것이 아니라, 비즈니스 가치를 실제 제품으로 변환하는 하나의 연속적인 흐름으로 연동되게 된다.
이러한 민첩한 워크플로우를 효과적으로 수행하기 위해서는 그에 맞는 조직 구조가 필수적이다.
과거에는 개발 부서, 테스트 부서 등이 명확히 분리된 사일로 (Silo) 구조였다. 이는 부서 간의 협업을 어렵게 하고 병목 현상을 유발하는 주요 원인이었다.
DevSecOps의 조직 모델 -> 자율적인 팀:
DevSecOps에서는 필요한 모든 역할을 하나의 팀 안에 포함하는 '자율적인 팀(Autonomous Team)'을 구성
팀 내부에는 DevSecOps 코치, 엔지니어, 테스팅 전문가, 스크럼 마스터 등 MVP 개발에 필요한 모든 전문가가 포함
해당 구조의 팀은 외부 부서의 지원을 기다릴 필요 없이, 할당된 스프린트 백로그를 독립적으로 완수할 수 있음.
소규모 팀이 아닌 수많은 팀이 여러 도메인에서 동시에 작업하는 대규모 조직에서는 이러한 모델을 확장하기 위한 추가적인 전략이 필요하다.
이를 위해, 여러 팀이 동시에 개발을 진행할 때 발생하는 의존성을 관리하고, 전체적인 방향성을 일치시켜야된다는 과제가 존재하게 된다.
해결 전략1. 스크럼 오브 스크럼즈 (Scrum of Scrums): 각 스크럼 팀의 대표들이 모여 더 큰 규모의 조율을 진행하는 방법. 이를 통해 여러 팀의 작업을 하나의 거대한 스프린트처럼 관리할 수 있게됨.
해결 전략2. 분산 애자일 (Distributed Agile): 지리적으로 분산된 팀들이 마치 한곳에 있는 것처럼 원활하게 협업할 수 있도록 지원하는 프랙티스와 도구 체계
이러한 확장 전략을 통해 대규모 엔터프라이즈 환경에서도 DevSecOps의 원칙을 효과적으로 적용할 수 있다.
DevSecOps는 단순히 기술이나 도구를 도입하는 것을 넘어, 현대의 복잡하고 빠른 비즈니스 환경에서 생존하고 성장하기 위한 필수적인 문화적, 조직적 변화이다.
성공적인 도입은 자동화된 파이프라인 구축뿐만 아니라, 자율적인 팀 구조와 데이터 기반의 지속적인 개선 문화가 조직 전체에 적용되었을 때 비로소 완성되며, DevSecOps는 더 이상 선택이 아닌, 비즈니스 민첩성을 확보하기 위한 필수적인 핵심 전략이다.