DevOps란?

DevOps란 우수한 품질의 소프트웨어를 구축하고 제공하기 위한 비교적 새롭고 혁신적인 방법입니다.

DevOps는 사일로를 제거하고 개발 및 운영 활동을 하나로 통합하는 의미를 담아소프트웨어 개발기술 운영이라는 단어의 마지막 부분을 결합한 용어입니다.

DevOps는 10여 년 전에 등장한 이후로 많은 발전을 이루었습니다. 시스템 관리자는 생산-품질 소프트웨어를 더 자주 생성하여 효율적으로 업무를 수행하는 Agile 제품 개발 팀에 맞춰 업무를 수행하고 싶어 했습니다. 팀은 점점 더 효과적으로 소프트웨어를 제공하게 되었지만 가치 흐름의 나머지 부분 즉, 선행 계획 및 생산 중인 시스템의 배치 및 관리 같은 영역에서는 병목현상이 지속되었습니다. 당시에는 물론이고 지금도 많은 조직에서 이러한 병목현상 때문에 개발 팀과 운영 팀 간에 마찰이 발생하고 있습니다. Andrew Clay Shafer와 Patrick Debois는 2008년에 DevOps라는 용어를 만들었으며 2009년에 벨기에에서 열린 첫 번째 DevOpsDays 이벤트에서 이 개념이 적용되기 시작했습니다.

DevOps 도입은 도구에만 국한된 것이 아니라 인력의 근무 방식과 사용하는 프로세스와도 관련이 있습니다. DevOps는 애플리케이션 또는 서비스를 생성하는 엔지니어링 팀과 생산 중인 서비스를 실행하는 담당자 사이에 존재했던 사일로를 제거합니다. 프로세스와 작업은 제품 및 서비스의 전체 수명주기와 해당 제품 및 서비스의 제공과 운영에 필요한 모든 수명주기에 맞춰 조정됩니다.

한 팀에서 보안과 테스트 기능을 포함한 서비스의 모든 측면을 관리하는 것이 이상적입니다. 대규모 조직에서는 여전히 일부 기능적 전문 기술이 있을 수 있지만 프로세스와 통신을 전체 서비스의 엔드 투 엔드 제공에 중점을 두는 것도 중요합니다. 이러한 제품 중심적 뷰는 마이크로서비스 또는 릴리스로 구성된 더 복잡한 결과물의 집합(종종 상황과 최종 고객의 결정을 따름)을 기초로 할 수 있습니다. 시간이 지남에 따라 계속해서 작은 부분을 변경하고 더 신속하게 반복하는 것이 목표입니다.

새로운 프로세스와 팀은 가능한 한 많은 자동화와 제품 수명주기의 엔드 투 엔드 연결을 촉진하는 기술(고객과 팀 간에 매우 중요한 피드백 루프 포함)을 활용합니다.

DevOps는 업무 수요에 더 신속하게 응답함으로써 조직이 경쟁업체와 차별화하는 데 도움을 주는 잠재력을 보유하고 있기 때문에 중요합니다. DevOps는 개발 팀과 운영 팀 간의 향상된 공동 작업 엔드 투 엔드뿐만 아니라 보안(DevSecOps라고도 함), 테스트(품질 보증 또는 QA), 버전 제어 및 ChatOps 같은 교차 팀의 공동 작업 기능 등의 규율에 따르는 공동 작업을 통해 소프트웨어를 구축하는 새롭고 개선된 방식입니다. DevOps를 통해 소프트웨어 제품이 향상되고 더 성공적으로 도입할 수 있습니다.

핵심은 DevOps가 베스트 프랙티스라는 점입니다. DevOps는 소프트웨어 개발 팀이 실제로 공동 작업을 수행하고 지속적 통합 및 지속적 제공(CI/CD)을 수행할 때 애플리케이션 및 서비스 제공 조직이 가장 효과적으로 업무를 수행한다는 전제 하에 구상되었습니다. 즉, 모든 반복 업무의 마지막에 소프트웨어가 항상 생산에 배치되지는 않지만 아무리 짧은 시간이라도 소프트웨어 생산을 진행할 수 있습니다.

대규모 조직은 DevOps 변혁을 통해 기업 소프트웨어 생성과 관련된 공통적이고 근본적인 문제를 해결합니다. 개발자가 신규 소프트웨어를 생성할 때 기업, 정부 기관, 의료 기관이나 교육 기관에 위험을 초래하지 않고 버그를 해결하고 코드를 수정하며 요구사항을 구체화할 수 있으며 오프라인 상태의 개발자 환경에서 소프트웨어를 코딩하고 테스트를 수행합니다.

그러나 신규 소프트웨어 또는 코드를 실제 환경에 배치해야 할 때 개발자 환경이 끊임없이 발전하는 생산 환경과 정확하게 일치하지는 않기 때문에 문제가 발생합니다. 이 때문에 실제로 괴롭고 안타까운 상황이 발생할 수 있습니다. 배치 장애는 해결하는 데 많은 시간과 비용이 드는 문제로 이어질 수 있습니다. 과거에는 변경 사항은 많은데 릴리스는 드물게 나와 이 문제를 더 심각하게 만들었습니다.

운영 팀은 신뢰할 수 있는 배치를 보장하기 위해 적절한 검사와 균형을 통해 제품이 안정적으로 생산되도록 운영할 책임이 있습니다. 운영 팀과 코드 변경을 반복하고 코드 변경 사항을 최대한 빨리 생산에 적용하려는 개발 팀 간에 마찰이 발생할 수 있습니다.

DevOps 기반의 제공 파이프라인은 개발자 및 운영 직원이 다음과 같이 작업할 수 있도록 지원합니다.

  • 더 효과적으로 협력

  • 하나된 마음으로 생각하고 행동

  • 장애물 및 격리된 구조 제거

  • 책임 분담

  • 연결된 지속적 제공 활동(종종 가치 스트림이라고 함)으로 QA, 버전 제어, 구성 관리 및 릴리스 관리에 집중

개발 팀과 운영 팀을 통합하고 자동화를 추가함으로써 조직은 공동 작업과 업무 문화를 개선하고 궁극적으로는 생산성까지 개선할 수 있습니다. DevOps 통합은 인프라 및 워크플로우 자동화를 기반으로 하며 애플리케이션을 생산하도록 지속적으로 제공하고 애플리케이션 성능을 지속적으로 측정할 수 있도록 지원합니다.

자동화는 DevOps 모델을 사용하는 조직의 핵심 베스트 프랙티스입니다. 특히 다음과 같은 작업을 최대한 자동화합니다.

  • 코드 기능, 사용자 및 보안 테스트

  • 스테이지 게이트 및 릴리스를 포함한 워크플로우

  • 인프라 도입 및 변경

  • 구성 관리 변경 사항 확인

DevOps는 소프트웨어 개발 주기 전반에서 발생하는 자동화된 코드 기능을 통해 엄청난 경쟁 우위를 제공합니다. 그러나 팀이 자동화 기능을 사용할 수 있고 ITIL 변경 관리 등 이전의 많은 수동 기능이 점점 더 자동화되고 있다는 사실을 알고 있는 경우에만 자동화가 이루어집니다. 자동화는 개발자를 관리 작업에서 벗어날 수 있게 하여 개발자 경험을 크게 개선할 수 있습니다.

DevOps 변경 관리 - ServiceNow 기업 변경 관리를 위한 DevOps

다른 DevOps 베스트 프랙티스 중 하나는 개발자가 몇 시간 이내에 통합, 테스트, 모니터링 및 출시할 수 있는 작은 청크로 소프트웨어 코드를 작성하는 것입니다. 이렇게 하면 대용량의 소프트웨어 코드를 작성하고 테스트하는 데 몇 주 또는 몇 개월이 소요되던 기존의 방식이 개선됩니다. 개발 팀은 업무 요구에 더 신속하게 응답할 수 있으며 많은 변경 사항이 있는 대규모 릴리스로 인해 큰 중단이 발생할 가능성이 줄어듭니다. 또한, 생산 과정에서 문제가 발생하면 작은 변경 사항은 되돌리기가 더 쉽습니다. 이 베스트 프랙티스는 새로운 클라우드 네이티브 기술을 사용하거나 기존 인프라를 사용하는 경우에 모두 적용됩니다.

모든 프로젝트를 더 자주 작은 청크로 제공할 수 있는 것은 아니며 어떤 경우에는 더 규모가 큰 DevOps 수명주기에서 변경 사항을 더 크거나 빈도가 적은 릴리스로 그룹화하는 것이 논리적일 수도 있습니다. 그러나 DevOps 팀은 코드를 즉시 배포할 수 있다는 원칙에 따라 운영됩니다.

대부분의 회사가 Agile 개발을 위해 많은 경험을 쌓고 DevOps 원칙을 실험 중이거나 전적으로 투자하고 있지만, 일부 회사는 DevOps가 대규모 조직에서 황금기를 맞이할 준비가 되지 않았다고 생각합니다. 이러한 생각은 DevOps를 채택할 경우 조직 인력, 프로세스 및 기술에 큰 변화가 필요할 수 있다는 요구사항을 포함한 많은 요인에서 비롯됩니다. 또 다른 요인은 거의 모든 대기업이 광범위한 규제의 적용을 받는다는 점인데 특히 시스템이 재무, 개인 식별 정보(PII) 또는 의료 데이터에 접근하는 경우입니다. 대규모 조직에 대한 이러한 규제 환경 때문에 대규모 조직은 애플리케이션 업데이트를 릴리스하기 위해 IT 운영을 강력하게 제어하고 있습니다. 이러한 제어는 수동 프로세스를 기반으로 해왔기 때문에 자동화하기에 적절한 시기가 되었습니다.

DevOps가 지속적으로 도입되고 경험과 자동화가 성장함에 따라 DevOps는 실질적인 문제와 업무 문제를 해결하는 데 더 자주 활용될 것입니다. 또한 직원이 속도와 민첩성의 균형을 규제와 제어에 맞추는 방법을 알게 되면 새로운 소프트웨어 기능을 생성할 준비를 마칠 수 있을 것입니다. 성공적인 DevOps 관행은 이러한 현실의 핵심을 인식하는 데서 비롯되며 '계획, 구축, 실행' 시스템이 더 효율적으로 운영되기 때문에 직원의 생산성을 높일 수 있습니다.

신속하게 작업할 경우 발생할 수 있는 위험을 없애고 IT 운영 팀과 개발 팀 간의 마찰을 최소화하면서 조직 전반에서 DevOps 방법론을 지능적으로 알릴 수 있습니다. 업무 연속성을 위해 강력한 제어를 실시하고 있는 대기업은 가치 스트림 관리(VSM)와 같은 새로운 기술을 활용하여 전환하도록 지원할 수 있습니다.

DevOps 수명주기 - ServiceNow ServiceNow 플랫폼을 활용하여 DevOps 수명주기를 관리하십시오.

제대로 운영되는 DevOps 팀에서는 신속하게 반복 업무를 수행하고 매우 기본적인 방식으로 장점을 제공합니다. 즉, 소규모의 더 빈번한 소프트웨어 릴리스를 정시에 또는 예정보다 빨리 제공하면서 생산 시 문제는 더 적게 발생합니다. 생산 시 버그가 발견되더라도 더 신속하게 수정되며 팀은 공동 작업과 가치 스트림 관리를 통해 사용 가능한 데이터를 활용하여 학습하고 개선하는 작업을 수행합니다.

훌륭한 DevOps 팀은 성과가 적은 다른 팀보다 몇 배 더 빠르게 코드를 배치하고 장애를 더 적게 발생시킵니다. DevOps로 전환하면 관련된 모든 사람이 전체 수명주기에 대한 정보에 액세스할 수 있기 때문에 조직 전반에서 지속적 개선에 대한 사고방식이 형성됩니다. 또한 DevOps의 새로운 AI 기능은 자동화 및 신뢰성 향상을 통해 효율성까지 더욱 개선할 수 있습니다.

DevOps에 대한 분명한 업무 사례가 있지만 이를 출시하는 것은 예상치 못한 리더십 문제가 될 수 있습니다. 회사가 소프트웨어 개발 시 Waterfall 방법론에서 Agile 방법론으로 전환하고 DevOps 채택으로 이어가려면 철저한 준비와 끈기가 필요합니다. 그 결과, 인상적인 보상을 얻을 수 있습니다.

안정성

많은 DevOps 베스트 프랙티스는 안정성 향상에 도움을 줍니다. 한 가지 예로는 중대한 중단을 일으킬 가능성이 낮아 보이는 작은 변경에 초점을 맞추는 것입니다. 문제가 발생하면 신속하게, 대개의 경우 자동으로 복구할 수 있습니다. DevOps의 지속적 통합 프로세스를 통해 코드 변경 사항을 적절하게 결합하고 테스트할 수 있으며 정책 및 도구를 적용하여 가능한 한 주기의 초기 단계에서 문제를 없앨 수 있습니다.

보안

2019년 DevOps Puppet 상태 보고서에 따르면 강력한 DevOps 기반을 통해 보안을 더 간단하고 안정적으로 도입할 수 있습니다. 보안은 코드 개발, 테스트 및 운영과 동일한 방식으로 DevOps 팀의 일부가 됩니다. 공동 작업이 개선되고 보안이 프로세스의 기본 요소가 됩니다.

속도

소규모의 반복 업무 및 결합된 엔드 투 엔드 팀에서 작업을 수행하면 변경 사항을 더 신속하게 도입할 수 있으며 업무 요구에 더 신속하게 응답할 수 있습니다. 초기 아이디어에서 생산 시 나타나는 변경 사항에 이르기까지 전체 시간이 크게 단축될 수 있으므로 가치 실현 시간이 단축됩니다.

공동 작업

공동 작업과 통신이 개선되므로 모든 DevOps 장점이 강화됩니다. 개발자는 생산 작업의 성과에 대한 직접적인 피드백을 받고 운영자는 제공 받은 내용과 이유에 대해 더 많은 인사이트를 얻을 수 있습니다. 보안 및 품질 보증을 포함하여 관련된 모든 사람은 전체 팀의 지원을 받아 정책을 공유하고 구체화할 수 있는 기회를 가집니다.

개발자와 운영 팀이 협력을 통해 코드를 신속하게 구축하고 생산 시 배포하는 것은 쉬운 일이 아닙니다. DevOps는 적절한 DevOps 도구의 가용성과 함께 문화적 측면과 프로세스 변경 사항에 크게 의존하고 있습니다. 대규모 조직의 많은 IT, 엔지니어링 및 비즈니스 단위 리더는 이러한 전환을 계획할 때 당연히 불안함을 느낍니다. 그러나 DevOps에 대한 업무 사례는 주목할 만하며 ServiceNow DevOps 같은 제품은 워크플로우를 단순화합니다. 어떤 조직에서도 DevOps 배치를 주저할 이유가 없습니다.

DevOps 하이브리드 모델을 통한 개발과 운영 연결 - ServiceNow ServiceNow DevOps는 개발과 운영 간의 연결을 지원합니다.

DevOps 받는 방법

전사적으로 DevOps 성공을 확대하십시오. 앞서 가는 것의 위험 요소를 없애고 IT 운영과 개발 간의 마찰을 최소화하십시오.