지난 시간에는 DevOps의 등장 배경과 그로 인한 일하는 방식의 변화 그리고 DevOps를 주목하고 있는 이유와 수행하기 위한 다섯 가지 기본적인 원칙에 대해 알아봤습니다. DevOps에서 빠르게 효과를 볼 수 있는 방법인 ‘DevOps Toolchain’과 성공적인 도입을 위한 요소에는 무엇이 있는지 알아보겠습니다.
● 전편 보기: http://blog.lgcns.com/1755
DevOps Toolchain
DevOps Toolchain은 위에서 언급한 DevOps의 주요 원칙 중 주로 자동화, 측정, 공유 부분을 실현할 수 있는 도구들과 그 도구 간의 연계를 의미하며, DevOps에서 실질적으로 빠르게 효과를 볼 수 있는 방법입니다. DevOps Toolchain은 보통 계획, 개발, 테스트, 릴리즈, 운영의 다섯 단계로 나눕니다.
● 계획(Plan)
계획은 초기 단계이며, 프로젝트 관리의 첫 단계이다. 프로젝트 및 제품의 아이디어를 관리하고 개발자 및 팀 조직을 구성하며 배정 팀원 간의 협업 및 계획을 수립하고 관리하는 단계이며, 대표적인 도구로는 JIRA, Confluence등이 있습니다. 이 도구들은 DevOps에서 이슈에 대한 일정과 정보 등에 대해 개발과 운영의 모든 구성원이 공유하고 커뮤니케이션 할 수 있게 하는 도구들이며, 작업 완료 여부 등은 측정 부분에도 기여합니다.
- JIRA: Atlassian이 개발한 이슈 추적 시스템이다. 버그 추적, 이슈 추적, 프로젝트 관리 기능을 제공한다.
- Confluence: Atlassian에서 개발한 자바 기반의 상용 위키 소프트웨어이다. Jira 등 Atlassian에서 제공되는 타 솔루션들과 연동되어 협업 환경이 구축된다.
● 개발(Development)
아이디어를 코드로 풀어가는 단계이다. 소프트웨어를 구성, 관리하고 빌드하는데 자동화된 연속적인 통합 도구가 필요하며, 대표적인 도구로는 Git, Jenkins 등이 있습니다. 이 도구들은 DevOps에서 버전 관리 등의 기능으로 다수가 개발한 소스 코드를 안정적으로 통합할 수 있게 하는 도구들이며, 이미 많은 프로젝트에서 널리 쓰이고 있습니다.
- Git: 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템이다. 빠른 수행 속도에 중점을 두고 있는 것이 특징이다.
- Jenkins: 소프트웨어 개발 시 지속적 통합(Continuous Integration) 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 저장소에 빈번히 업로드 함으로써 지속적 통합이 가능하도록 해 준다.
● 테스트(Test)
제품 및 서비스를 검토하고, 여러 가지 조건에서 작동하는지 확인하는 중요한 단계이며, 대표적인 도구로는 XL TestView, Selenium 등이 있습니다. DevOps가 빠른 변화를 적용할 수 있으면서도 안정성을 잃지 않게 만들 수 있는 도구들이며, 자동화를 통해 간편하게 실행하고 그 결과를 측정하여 프로젝트에서 사용할 수 있게 합니다.
- XL TestView: 테스트를 정의하고 실행하며 결과를 집계하고 시각화하여 품질을 확인할 수 있게 하는 테스트 관리 및 분석 도구이다.
- Selenium: 웹 애플리케이션을 위한 소프트웨어 테스팅 프레임워크이다. 테스트 스크립팅 언어 (Selenium IDE)를 배우지 않고도 테스트를 작성할 수 있는 기록•재생 도구를 제공한다.
● 릴리즈(Release)
제품의 출시를 위해서 변경사항을 관리하고 승인하는 단계이며, 대표적인 도구로는 Puppet, Chef 등이 있습니다. DevOps의 빠른 변화 적용을 위한 최종 관문의 역할을 하며, 소규모의 빠른 배포가 필요하거나 배포 대상이 여러 지점에 분산되어 있어도 자동화를 통해 쉽고 빠르지만, 안정적인 배포를 가능하게 합니다.
- Puppet: 소프트웨어 구성 관리 도구이다. OS별 명령을 지정하지 않고도 사용자, 서비스 및 패키지와 같은 상위 수준의 시스템 구성을 설명할 수 있다.
- Chef: 회사의 서버 구성 및 유지보수 작업을 간소화하고 클라우드 기반 플랫폼들과 통합하여 자동으로 새로운 머신을 프로비저닝하고 구성할 수 있다.
● 운영(Operate)
실제 제품을 출시하고 운영하는 과정이며 다양한 모니터링 툴이 필요하며, 대표적인 도구로는 AWS CloudWatch, Google StackDriver가 있다. DevOps를 통해 변화를 적용한 후 서버 안정성, 성능, 버그 등을 모니터링하고 분석하며, 다음 계획 단계를 위한 피드백을 제공하는 역할을 합니다.
- AWS CloudWatch: AWS 클라우드 리소스와 AWS에서 실행되는 애플리케이션을 위한 모니터링 서비스이다. 지표를 수집 및 추적하고, 로그 파일을 수집 및 모니터링하며, 경보를 설정하고, AWS 리소스 변경에 자동으로 대응할 수 있다.
- Google StackDriver: 클라우드 기반 애플리케이션의 상태, 실적, 가용성에 대한 통계를 제공하며, 다양한 측정항목, 대시보드, 알림, 로그 관리, 보고, 추적 기능을 제공한다.
성공적인 DevOps 도입을 위한 요소
DevOps를 성공적으로 적용하기 위해서는 개발 및 운영조직의 효율성을 극대화해야 하고, 이를 위해서는 구체적으로 실행 가능한 요소들이 필요합니다. 높은 성과를 내는 DevOps 팀을 만들기 위해서는 프로세스 흐름, 지속적인 피드백, 지속적인 학습이 필요합니다.
● 흐름(The Flow)
흐름에 대한 주요 내용은 흐름을 이해하지 못하면 의도치 않은 변화가 생기므로, 작업의 흐름의 이해하는 것이 가장 중요합니다. 이때 하나의 흐름에서 발생되는 결함은 흐름의 증가에 따라 다음 흐름에서는 처리가 더욱 힘들어지므로, 다음 프로세스에서 처리하는 방법은 옳지 않습니다. 또 글로벌 문제를 일으키는 로컬 최적화는 금지하고 균형을 유지하기 위해서 전체적인 체계에 대한 깊은 이해가 필요합니다.
● 지속적인 피드백(Consistent feedback)
피드백에서는 모든 고객의 내부적, 외부적 요건을 이해하고 대처해야 한다는 점과 피드백 주기는 단축하고 더 빠르게 증가시켜야 한다는 점이 중요합니다. 또한, 품질에 대한 피드백이 중요하며 이를 실현하기 방법으로는 단순 수치 모니터링 시스템 설치 및 공유 등 피드백을 몸으로 느낄 수 있게 하는 방법이 있습니다.
● 지속적인 학습(Continual learning)
위험을 감수하고 도전을 격려하며, 성과를 보상하고 실패로부터 배우려는 자세가 중요하며, 반복은 작업 숙달을 위한 선행조건입니다.
DevOps의 미래는?
DevOps는 현재 IT 업계의 주류에 올라섰으며 최근에는 보안을 포함하여 ‘모두가 보안에 책임이 있다’라고 하는 DevSecOps가 인기를 얻고 있는데요. 앞으로는 아키텍트, 특히 코딩 방법도 아는 IT 설계자의 참여가 포함된 DevSecArchOps가 부각될 거라는 등 과거의 DevOps를 넘어서 계속 발전하고 변화될 것으로 예측하는 의견도 많습니다.
DevOps는 필요하다면 패키지 제품을 구매하여 벤더를 통해 신속한 기술 지원이나 업데이트, 보안 패치 등을 얻는 방법도 있지만, 가장 중요한 점은 제품, 서비스 등을 각 기업에 가장 적합한 방식으로 조합하는 것이므로 오픈 소스 도구들을 잘 활용하는 방식으로 적용되고 있습니다.
오픈 소스 도구들은 광범위한 솔루션 생태계와 지원뿐만이 아니라 인재 고용 및 유지를 용이하게 하므로, 오픈 소스 도구들이 시중에 많이 나오고 있고 또 많이 활용되고 있습니다.
● Atlassian
Atlassian은 이슈 추적 시스템인 Jira, Wiki인 Confluence, Git 솔루션인 BitBucket 등 DevOps와 관련된 많은 도구를 제공하고 있으며, 자사의 SmartDev도 Atlassian 기반으로 되어 있습니다. 특히 Jira는 전 세계 점유율의 60% 정도를 차지할 정도로 높은 인지도를 가지고 있으며, 오픈 소스 프로젝트와 비영리 단체에 한해 무료 제공되는 상용 솔루션입니다.
● Puppet
오픈 소스 설정관리 도구인 Puppet의 상용버전인 Puppet Enterprise 제품이 주력인 회사입니다. 파트너 사로는 VMware, Amazon Web Services, Cisco, OpenStack, Microsoft Azure, Eucalyptus, Rightscale, Zenoss등 있습니다.
● CA Technologies
기업이 디지털 전환을 실현할 수 있도록 애자일(Agile), 데브옵스(DevOps), 보안 솔루션 등을 제공하고 있습니다. DevOps와 관련해서는 서비스 가상화 자동화, 네트워크 가상화 관련 솔루션 등을 제공하고 있습니다.
DevOps와 LG CNS
다양한 기업에서 DevOps에 대한 개념, 기술 및 도입을 검토했고, 검토했던 이력 대비 적용 사례가 적은 이유는 크게 두 가지로 생각할 수 있습니다.
첫째, DevOps를 필요로 할 만큼 빠른 비즈니스 라이프 사이클을 가진 고객이나 자사 시스템이 적다.
둘째, DevOps를 정착시키기 위한 비용이 DevOps 적용을 통해 얻는 장점보다 더 크다.
즉, ROI가 낮다고 느끼기 때문일 것입니다. 특히 DevOps를 정착시키기 위한 비용 중 가장 큰 부분은 문화의 정착인데요. 앞서 DevOps의 주요 원칙 5가지(문화, 자동화, 간소화, 측정, 공유)에서 언급한바 와 같이, DevOps를 도입하기 위해서는 다기능 협업 문화 정착이 전제 조건이라 할 수 있습니다.
하지만 DevOps의 주요 원칙 5개 중 자동화, 측정, 공유에 대해서는 Toolchain 및 활용 노하우가 많이 있습니다.
즉, 상대적으로 손쉽게 DevOps를 도입•경험할 수 있는 부분인데요. Toolchain을 이루는 개별 도구들은 이미 많은 프로젝트에서 사용되고 있기 때문에, 이를 Toolchain으로 잘 묶어서 시너지를 발휘하면, DevOps 전환으로의 첫걸음을 뗄 수 있을 것입니다.
DevOps Toolchain 관련하여 LG CNS의 솔루션들을 활용할 수 있습니다. LIDE (LG CNS Integrated Development Environment)는 현재 DevOps의 5단계(계획, 개발, 테스트, 릴리즈, 운영 단계) 중 개발 단계에서 쓸 수 있는데, 테스트 단계로 그 범위를 넓혀 가고 있습니다.
운영 단계에서 쓸 수 있는 애플리케이션 성능 관리 툴인 TunA도 LG CNS의 많은 프로젝트에서 사용 중입니다. SmartDev는 Jira, Confluence, Git을 세트로 묶어서 제공하고 있으며, Jenkins나 TestLink 같은 도구는 솔루션 관련 조직들도 부분적으로 사용 중이므로, DevOps Toolchain에 속한 도구들을 경험해 본 사용자들도 점점 많아지고 있습니다.
이렇게 DevOps Toolchain 사용을 통해 축적된 경험과 역량이 DevOps 문화 정착까지 이어져, 비즈니스 변화에 빠르고 안정적으로 대응하는 기업의 성장을 기대해봅니다.
글 l LG CNS CTO 아키텍처담당