DevOps란 무엇인가요?
기존 소프트웨어 개발 모델에서는 개발자가 새로운 기능, 제품, 버그 수정 등을 위해 대량의 코드를 작성한 다음, 보통 자동화된 티켓팅 시스템을 통해 운영팀에 작업을 전달하여 구축합니다. 운영팀은 이 요청을 대기열에 접수하고 코드를 테스트한 후 프로덕션에 사용할 수 있도록 준비하는데, 이 과정은 며칠, 몇 주 또는 몇 달이 걸릴 수 있습니다. 이러한 기존 모델에서는 구축 중에 문제가 발생하면 팀에서 개발자에게 티켓을 보내 무엇을 수정해야 하는지 알려줍니다. 결국 이 문제가 해결되고 나면 워크로드가 프로덕션으로 푸시됩니다.
이 모델은 소프트웨어 배포를 길고 단편적인 프로세스로 만듭니다. 개발자는 종종 운영을 장애물로 인식하여 프로젝트 일정을 늦추는 반면, 운영팀은 개발 문제가 발생하는 장소처럼 느껴집니다.
DevOps는 전체 소프트웨어 배포 프로세스 전반에 걸쳐 개발 팀과 운영 팀을 통합하여 문제를 조기에 발견 및 해결하고, 테스트 및 구축을 자동화하며, 출시 시간을 단축함으로써 이러한 문제를 해결합니다.
DevOps는 아닙니다.
- 개발팀과 운영팀의 조합입니다: 여전히 두 개의 팀이 있으며, 소통하고 협업하는 방식으로 운영됩니다.
- 별도의 팀이 있습니다: "DevOps 엔지니어"라는 것은 존재하지 않습니다. 일부 기업에서는 DevOps 문화로 전환할 때 파일럿으로 DevOps 팀을 지정할 수 있지만, DevOps는 전체 소프트웨어 배포 수명 주기 동안 개발자, 테스터 및 운영 담당자가 협력하는 문화를 의미합니다.
- 도구 또는 도구 세트입니다: DevOps 모델과 잘 작동하거나 DevOps 문화를 촉진하는 데 도움이 되는 도구가 있긴 하지만 DevOps는 궁극적으로 도구가 아니라 전략입니다.
- 자동화: 자동화는 DevOps 문화에 매우 중요하지만, 자동화만으로는 DevOps를 정의할 수 없습니다.
DevOps 정의
개발자가 방대한 기능 세트를 코딩한 후 무턱대고 운영팀에 넘겨 구축하는 대신 DevOps 모델에서는 개발자가 지속적인 테스트를 위해 소량의 코드를 제공하는 경우가 많습니다. 티켓팅 시스템을 통해 문제와 요청을 전달하는 대신 개발팀과 운영팀이 정기적으로 만나 분석을 공유하고 프로젝트를 엔드투엔드로 공동 소유합니다.
CI/CD 파이프라인
DevOps는 지속적 통합 및 지속적 배포(또는 지속적 구축)의 주기로, CI/CD 파이프라인이라고도합니다. CI/CD 파이프라인은 개발팀과 운영팀을 통합하여 인프라 및 워크플로를 자동화하고 애플리케이션 성능을 지속적으로 측정함으로써 생산성을 향상시킵니다. 다음과 같이 보입니다:

- 지속적인 통합을 위해서는 개발자가 자동화된 테스트를 위해 하루에 여러 번 코드 리포지토리에 코드를 통합해야 합니다. 각 체크인은 자동화된 빌드를 통해 확인되므로 팀에서 문제를 조기에 발견할 수 있습니다.
- 지속적 배포와 혼동하지 마세요. 지속적 배포는 CI 파이프라인이 자동화되어 있지만 프로덕션에서 구현되기 전에 수동 기술 점검을 거쳐야 한다는 것을 의미합니다.
- 지속적구축은 지속적 배포를 한 단계 더 발전시킵니다. 수동 검사 대신 자동화된 테스트를 통과한 코드가 자동으로 구축되어 고객이 새로운 기능을 즉시 이용할 수 있습니다.
DevOps 및 보안
DevOps의 한 가지 문제점은 보안이 종종 허점을 드러낸다는 점입니다. 개발자는 빠르게 움직이고 워크플로가 자동화됩니다. 보안은 별도의 팀이며 개발자는 보안 확인 및 요청을 위해 속도를 늦추고 싶지 않습니다. 그 결과 많은 개발자가 적절한 보안 채널을 거치지 않고 구축을 진행하며, 필연적으로 해로운 보안 실수를 저지르게 됩니다.
이를 해결하기 위해 조직에서는 DevSecOps를도입하고 있습니다. DevSecOps는 개발자와 IT 팀이 소프트웨어 배포 전반에 걸쳐 따로따로 일하는 것이 아니라 긴밀하게 협력해야 한다는 DevOps의 개념을 보안으로 확장하여 전체 CI/CD 파이프라인에 자동화된 검사를 통합합니다. 이렇게 하면 보안이 외부의 힘처럼 보이는 문제를 해결하고 개발자가 데이터 보안을 손상시키지 않으면서도 속도를 유지할 수 있습니다.