DevOps란 무엇일까요?
'DevOps'는 'development(개발)'와 'operations(운영)'가 합쳐진 단어이지만, 단순히 각각의 용어를 결합한 것 이상의 포괄적인 아이디어와 방식을 나타냅니다. DevOps에는 보안, 협업 방식, 데이터 분석을 비롯해 기타 여러 요소가 포함됩니다. 그렇다면 DevOps가 구체적으로 무엇을 의미하는 것일까요?
DevOps는 새로운 소프트웨어 기능, 개선 요청 또는 버그 수정 등 하나의 아이디어가 개발에서 배포에 이르는 프로세스의 속도를 높임으로써 더 빨리 프로덕션 환경에 전달되어 사용자에게 가치를 전달하도록 합니다. 이러한 접근 방식을 적용하려면 개발 팀과 운영 팀이 자주 커뮤니케이션하고 팀원들과 공감하면서 업무에 접근해야 합니다. 확장성과 유연한 프로비저닝도 필요합니다. DevOps를 확립하면 셀프 서비스와 자동화를 통해 다양한 이점과 경쟁력을 얻을 수 있습니다. 일반적으로 표준 개발 환경에서 코딩 작업을 하는 개발자는 IT 운영 담당자와 긴밀하게 협력하여 소프트웨어 빌드, 테스트, 출시 속도를 가속화할 수 있습니다.
즉, 코드 변경도 더 빈번해지고 인프라도 더 역동적으로 사용해야 합니다. 전통적인 관리 전략은 이러한 종류의 요구를 충족할 수 없으므로, 경쟁력을 강화하려면 몇 가지 변화가 필요합니다.
컨테이너는 DevOps를 통해 어떤 작업을 할까요?
컨테이너를 사용하면 개발, 테스트, 프로덕션 환경 사이에서 애플리케이션을 더욱 쉽게 이동할 수 있습니다. 또한 개발자는 컨테이너를 사용하여 애플리케이션과 실행에 필요한 모든 요소(애플리케이션 파일, 런타임 환경, 종속 라이브러리 및 설정)를 패키징하고 분리할 수 있습니다.
DevOps는 아이디어 개발에서 배포에 이르는 프로세스를 가속화합니다. 그 중심에서 DevOps는 애플리케이션 라이프사이클 전반에서 일상적인 운영 태스크 자동화와 환경 표준화를 사용합니다. 컨테이너는 표준화된 환경을 제공할 수 있으나 이를 관리하기 위해서는 모든 인프라에 대한 지원 및 빌트인 자동화를 제공하는 플랫폼이 필요합니다. Red Hat OpenShift는 DevOps 이니셔티브를 지원하기 위한 엔터프라이즈급 쿠버네티스 플랫폼입니다.
DevOps 문화
DevOps는 오픈소스 원칙에 부합하는 협업 문화와 투명한 애자일 접근 방식을 활용합니다. 5일 동안 진행되는 마스터 강의인 DevOps Culture and Practice Enablement(DO500)에서 DevOps와 애자일 가치가 서로 어떻게 밀접한 관련을 맺고 있는지 자세히 살펴볼 수 있습니다.
오픈소스 소프트웨어 프로젝트 문화는 DevOps 문화를 구축하기 위한 청사진으로 볼 수 있습니다. 자유로운 정보 공유는 오픈소스 커뮤니티에서의 협업에 대한 기본적인 접근 방식입니다. 이를 통해 의사 결정 과정에서 투명성을 높이거나, 실패에 대한 두려움을 없앰으로써 실험적인 프로젝트를 권장하거나, 신뢰와 협업을 장려하는 보상 시스템을 구현하는 등의 기업 문화의 변화를 이끌어낼 수 있습니다. 많은 조직에서 이러한 유형의 이니셔티브를 지원하기 위한 디지털 트랜스포메이션 컨설팅 서비스를 찾고 있습니다.
올바른 리더십과 인센티브 프로그램을 제공하면 개발 팀과 운영 팀이 열린 문화를 적극적으로 조성하는 데 도움이 될 수 있습니다. 그러나 이 문화가 조직 전체에 확산될 때 DevOps의 효과가 가장 크게 나타납니다. DevOps라는 명칭은 개발과 운영을 지칭하지만 DevOps는 모두를 위한 것입니다.
Red Hat의 기업 문화는 개방성과 투명성을 기반으로 하며 25년 이상 동안 성공적으로 지속되고 있습니다. 고객이 개방적인 접근 방식을 채택하여 DevOps 구현을 통해 성과를 획득하도록 지원합니다.
시즌 1, 에피소드 4: DevOps_Tear Down That Wall
Command Line Heroes 팟캐스트 클립에서 Saron Yitbarek, Scott Hanselman, Gordon Haff가 DevOps 문화, 프로세스, 플랫폼, 툴에 대해 이야기하는 것을 들어보세요.
DevOps 프로세스
현대적인 애플리케이션을 개발하려면 과거의 접근 방식과는 다른 프로세스가 필요합니다. 소프트웨어 개발에 애자일 접근 방식을 적용하는 많은 팀들이 가장 먼저 고려하는 사항이 바로 DevOps입니다. 실제로, '신속하고 지속적인 소프트웨어 제공을 통한 고객 만족'은 애자일 선언문(Agile Manifesto)의 12가지 원칙 중 첫 번째 원칙입니다. 이는 지속적 통합/지속적 배포(CI/CD)가 DevOps 팀에 매우 중요한 이유이기도 합니다.
그러나 개발 및 운영 프로세스를 변경하는 것만으로는 충분하지 않습니다. 소프트웨어 제공 방식을 실질적으로 최적화할 수 있도록 고안된 시스템을 적용해야 합니다. 즉, DevOps가 개발 작업을 요청하는 사업부와 최종 사용자를 지원하는 그룹에 변화를 가져옵니다. 무엇보다도 최종 사용자가 비즈니스에 지속적으로 피드백을 제공하는 것이 중요합니다.
현재 작업 수행 방식을 넘어서는 프로세스 변경이 필요함에 따라, 수행하는 작업도 변경될 수밖에 없습니다. DevOps는 기존의 동일한 모놀리식 소프트웨어 개발을 가속화하는 것뿐 아니라 이러한 지속적인 개발 흐름에 더욱 적합한 새로운 종류의 소프트웨어를 개발하는 것과 관련이 있습니다.
이런 이유로 DevOps 팀이 마이크로서비스 아키텍처를 사용하여 소프트웨어를 구축하고 API로 이러한 서비스를 함께 연결하는 경우가 많습니다. DevOps 팀이 각각의 기능을 더 작은 단위로 구축함으로써 서비스를 더욱 신속하게 제공 가능하므로 이러한 서비스와 API가 관리되는 방식에 중점을 두고 이 모두를 통합할 수 있는 애자일 인테그레이션과 같은 전략을 수립해야 합니다.
이러한 변화는 많은 노력을 필요로 하지만 적절한 기술을 사용한다면 지금 바로 시작할 수 있습니다. 자동화를 활용한다면 프로세스를 가속화할 수 있으며, 최종적으로는 DevOps 워크로드를 클라우드로 마이그레이션할 수 있습니다. 자동화를 통해 DevOps에 수반되는 상시적인 코드 변경에도 인프라를 안정적으로 운영할 수 있으며 환경을 손쉽게 확장할 수 있습니다. 자동화는 반복적인 작업이나 단순 작업의 부담을 경감함으로써 기업의 우수한 인력이 가장 중요한 업무에 집중할 수 있는 환경을 조성합니다.
DevOps 프로세스는 플랫폼 엔지니어링의 등장으로 한층 더 새롭게 진화했습니다. 반면, 플랫폼 엔지니어링은 사용자 여정을 중심으로 공감대를 형성할 수 있게 하여 애플리케이션 제공을 자동화하고, 협업과 소통을 개선하고, 오류를 줄이고, 보안 및 컴플라이언스를 강화하고, 효율성을 향상하고, 무엇보다 가장 필요한 부분에 개발자의 역량을 다시 투입하는 효과적인 방법을 찾아 DevOps 기반의 전략을 도출할 수 있습니다.
흔히 IT 서비스 관리(ITSM)에 대해 DevOps와 ITIL 접근 방식이 상충된다고 생각하지만, 이 이분법적 사고에는 많은 부분이 빠져 있습니다.
DevOps 플랫폼 및 툴
프로세스를 지원하는 툴을 선택하는 것은 DevOps 성공의 열쇠입니다. 운영 팀이 빠른 개발 주기와 속도를 맞추려면 상당히 유연한 플랫폼을 사용하고 개발 팀이 코드를 다루는 방식과 마찬가지로 인프라를 다뤄야 합니다. 수동 배포는 속도가 느리며 오류가 발생할 가능성이 있습니다.
자동화를 통해 플랫폼 프로비저닝과 배포를 간소화할 수 있습니다. 사이트 신뢰성 엔지니어링(SRE)은 수동 운영 태스크를 가져와서 소프트웨어 및 자동화를 사용해 관리합니다. SRE 접근 방식을 사용하면 DevOps 팀의 목표를 달성하기가 더 쉬워집니다.
Red Hat OpenShift는 탄탄한 입지를 바탕으로 DevOps 팀과 플랫폼 엔지니어, SRE에게 CI/CD, 보안 가드레일, 제로 트러스트 보안 아키텍처, 조직의 컴플라이언스 요구 사항을 지원하는 기능을 제공합니다. Red Hat Developer Hub와 통합된 OpenShift는 엔지니어링 팀에 내부 개발자 플랫폼(IDP)을 효과적으로 구축 및 관리하고 '최적의 경로'를 개발하기 위한 프로젝트 템플릿, 도큐멘테이션, 워크플로우를 만드는 데 필요한 툴을 제공합니다.
DevOps 및 쿠버네티스
DevOps 접근 방식은 Linux® 컨테이너와 긴밀히 연계되며, 개발 팀은 이를 통해 클라우드 네이티브 개발 방식에 필요한 기반 기술을 얻게 됩니다. 컨테이너는 개발, 배포, 통합, 자동화를 위한 통합 환경을 지원합니다.
또한 쿠버네티스는 Linux 컨테이너 운영을 자동화할 수 있는 현대적인 방법입니다. 쿠버네티스를 활용하면 퍼블릭, 프라이빗 또는 하이브리드 클라우드 전반에서 Linux 컨테이너를 실행 중인 클러스터를 손쉽게 효율적으로 관리할 수 있습니다.
컨테이너 내외부에서 모두 Red Hat® Enterprise Linux 및 Red Hat OpenShift®와 같은 신뢰할 수 있는 플랫폼을 선택하면 가장 필요한 순간에 실패 없이 확장과 자동화를 수행할 수 있습니다. 적절한 플랫폼을 보유한 기업은 DevOps 문화와 프로세스 변경에 따르는 장점을 최대한 누릴 수 있게 됩니다.
DevOps로 지속적 배포를 통해 확장 가능
DevOps 구현의 주요 성과는 지속적 통합/지속적 배포(CI/CD) 파이프라인입니다. CI/CD를 통해 고객에 대한 애플리케이션 제공 주기를 단축하고 인적 개입을 최소화하여 소프트웨어의 품질을 검증할 수 있습니다.
특히, CI/CD는 애플리케이션의 통합 및 테스트 단계부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에서 지속적인 자동화와 지속적인 모니터링을 제공하여, 신속하게 문제 및 결함을 식별하고 수정합니다. 이러한 구축 사례를 일반적으로 “CI/CD 파이프라인”이라 부르며 개발 팀과 운영 팀의 애자일 방식 협력을 통해 지원됩니다.
우리는 자동화에 주로 [Red Hat Enterprise Linux]를 사용합니다. 예를 들어, 애플리케이션을 배포하는 데 도움이 될 수 있습니다. 지속적 제공 및 지속적 배포를 계획 중이라, 자동화를 지원하기 위해 이 제품을 사용하고 있습니다.
비즈니스 혁신을 위한 준비가 되셨나요?
오늘날의 시장에서 경쟁하려면 기술 그 이상이 필요합니다. 기업의 문화, 프로세스, 플랫폼의 성숙도를 평가하고 디지털 트랜스포메이션의 실현에 필요한 단계를 파악해야 합니다.
DevOps 및 보안
앞에서 언급했듯이 DevOps는 단순히 개발 팀과 운영 팀에 관한 것이 아닙니다. DevOps 접근 방식을 최대한 활용하기 위해서는 보안이 애플리케이션의 라이프사이클에서 어떤 역할을 하는지 고려해야 합니다. 이러한 사고방식을 바탕으로 만들어진 용어가 DevSecOps이며, 계획 단계부터 보안을 고려해야 할 필요성을 강조합니다.
팀은 시프트 레프트와 시프트 라이트 보안 원칙을 도입하여 모두 지속적인 테스트 방법을 중심으로 DevOps 프로세스 전반에서 제품과 기능의 품질 및 성능을 평가하고 보장할 수 있습니다. 이러한 테스트 방법은 빌드 및 배포 단계에서 사용자의 오류를 줄이고 런타임 시 워크로드를 보호하는 개발자 친화적인 가드레일을 제공하기 위해 일반적으로 자동화됩니다.