<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1387208918241112&ev=PageView&noscript=1"/>

뉴스센터 목록으로 돌아가기

데브옵스(DevOps)의 최고기법 7가지, 대공개!

위시켓 | 2020.09.08.

 

안녕하세요. 위시켓입니다.

여러분은 데브옵스(DevOps)가 무엇인지 알고 계시나요? 데브옵스는 프로젝트의 수명주기 전반에 걸쳐서 발생할 수 있는 특정한 문제와 어려움들을 효과적으로 해결하면서 전 세계 많은 조직들에서 도입되고 있는데요. 이런 과정을 지원하는데 필요한 도구와 기술, 프로세스들은 각 조직에게 가장 효과가 좋은 것이 무엇인지에 따라서 아주 많이 다를 수 있습니다. 즉, 우리는 데브옵스 기법을 받아들일 것인지가 아니라, 그것을 어떻게 하면 가장 잘 구현해서 비즈니스의 가치를 최대로 키워낼 수 있는지에 대해서 고민을 해야 하는 것이죠.

​이번 글에서 위시켓은 데브옵스가 무엇인지, 그리고 그것이 제공하는 장점들을 최대한 활용하기 위해서 따라야 하는 기법들에 대해서 알아보는 시간을 갖도록 하겠습니다.

​*잠깐, 위시켓은 2019년 시밀러 웹 방문자 수 기준, 국내 1위 IT 아웃소싱 플랫폼입니다. 현재 8만 이상의 개발업체, 개발 프리랜서들이 활동하고 있으며, 무료로 프로젝트 등록이 가능합니다. 프로젝트 등록 한 번으로 여러 개발업체의 견적, 예상 기간, 포트폴리오 등을 한 번에 비교해보세요:)



데브옵스(DevOps)가 무엇일까?



데브옵스는 IT 프로세스를 미세하게 조정하는 것을 지향하는 사고방식입니다. 데브옵스는 지속적인 개선과 지속적인 산출 그리고 자동화의 창출을 통해서 혁신을 간소화하고 가속화합니다. 데브옵스를 채택하는 이유는 실적 향상과 향후의 개선 가능성을 파악해서, 프로세스 계획 및 조직에 대한 정보에 입각한 의사결정을 내리기 위함입니다.


데브옵스 최대 기법 7가지!




01. 사람들에게 우위를 둔 다음에, 프로세스와 테크놀로지에 초점을 맞춘다.


이는 애자일 선언(Agile Manifesto)에서 말하는 내용과 상당히 비슷하게 들릴 수도 있지만 데브옵스 실행 방식에서도 사용할 수 있는 것으로 입증되고 있습니다.

​소프트웨어 개발의 3대 요소는 사람, 프로세스, 도구입니다. 데브옵스 문화를 받아들일 때는, 3대 요소가 현재의 요구 사항에 맞게 적절하게 조정되어야 합니다. 조직에서 소프트웨어 개발 수명주기(Software Development Life Cycle, SDLC)를 최소화할 수 있는 프로세스 그리고 적절한 도구와 테크놀로지를 갖춘 인프라는 데브옵스를 매끄럽게 구현할 수 있도록 도와줍니다. 그 안에서는 공동의 목표를 공유하고 공동의 명분을 향해 기여하는 공동체의 분위기가 있어야 하는데요. 이를 위해 경영진은 모든 팀들이 정보를 제대로 공유하고 있도록 노력해야 합니다.

​이상적인 시나리오대로라면, 조직에는 실행공동체(Communities of Practie, Cop)가 있습니다. 이러한 역할 기반의 커뮤니티는 팀들 사이의 지식 공유 및 탐구에 기여할 것으로 기대할 수 있죠. 결국 데브옵스는 다른 부서들과 함께 하는 것이기에, 이 주제를 다루는 조직에서는 팀원들로 하여금 회사 안에서 다양한 역할을 수행하면서 고도로 생산적인 환경을 구축하기 위해 서로 간의 실천 기법과 경험을 공유하도록 유도합니다.


02. SDLC를 지원하기 위해서 테스트를 자동화한다.


데브옵스를 구현하려면 아마도 글로벌 차원에서의 변화를 지원할 수 있는 자동화된 테스트가 필요할 겁니다. 데브옵스의 맥락에서 테스트 자동화라는 것은 무엇보다도 지속적인 코드 및 데이터 품질 검사를 갖춘 자동화된 인프라를 의미하는데요.

​코드의 품질을 뛰어나게 만들기 위해서는, 정기적인 테스트가 필요합니다. 테스트 자동화는 SDLC의 속도를 높여주고, 개발자들이 작업을 하면서 문제를 해결할 수 있도록 해주죠. 데브옵스를 받아들인 팀에서는 본격적인 생산 과정에 들어가기 전에 결함을 감지하고, 수정하기 위해서 더 자주, 더 일찍 테스트 해야만 합니다. 자동화를 통해 더 많은 테스트를 수행할 수 있으며, 수동으로 테스트하는 것보다 시간을 절약할 수 있습니다.

​미들웨어(middleware) 환경설정에 대한 테스트, 네트워크 및 데이터베이스 변화, 자동화된 부하(load), 단위, 회귀 테스트(regression test) 등에 대한 주기적인 검사 같은 모든 테스트들이 SDLC 최적화에 기여합니다. 소프트웨어 개발 수명주기의 흐름을 유지하면서 테스트를 자동화하게 되면, 검증을 거친 코드가 데브옵스의 파이프라인을 따라서 자동적으로 개선되거나 또는 뒤늦게 결함이 발견되는 것을 방지할 수 있습니다.


03. 중앙 집중식 데브옵스 인프라를 구축한다.


데브옵스 전략은 기술적으로 단단한 기반을 갖추고 있어야 합니다. 다른 말로 하면, 데브옵스 팀들은 개발, 테스트, 배포 단계 전 과정에서 협업을 가능하게 해주는 공통의 도구 전략을 세울 수 있도록 해야 하죠.

​데브옵스의 파이프라인 과정에서 일반적으로 사용되는 도구들은 다양하게 존재하는데, 대표적으로는 젠킨스(Jenkins), 스플렁크(Splunk), 테라폼(Terraform), 나기오스(Nagios), 그라파나(Grafana), 프로메테우스(Prometheus) 등이 있습니다. 따라서 데브옵스로 전환할 때는 중앙 집중화되고, 연합된 인프라가 균형을 잘 맞출 수 있도록 관리 시스템이 특별히 구현되어야 합니다.

​이런 도구들을 구성하는 가장 좋은 방식은 먼저 IT 작업 방식을 중앙 집중화하거나, 또는 프로비저닝(권한설정)이나 보안 또는 실제 애플리케이션의 배치를 중앙에서 수행하는 겁니다. 이를 통해서 프로비저닝, 보안, 연결성과 관련하여 사람들이 조직되어 있는 독립적인 개발자 중심의 데브옵스 모델로 전환할 수 있고, 보다 쉽게 접근할 수 있으며, 중앙 집권화된 소스 저장소를 갖춘 API 기반의 방식으로 소프트웨어를 개발할 수 있습니다.


04. 처리량을 향상시키기 위해서 배포자동화(continuous deployment)를 구현한다.


배포의 빈도와 안정성을 높게 유지하는 것은 데브옵스의 기본 원칙 중 하나입니다. 코드 배포는 적은 처리 작업(batch)을 통해서 자동화되고, 반복적이며, 예측할 수 있어야 하죠. 따라서 일주일에 한 번 이상 자주 배포를 하는 팀에서도 코드를 보다 빨리 수정하고, 새로 발견된 취약점에 대해서는 신속하게 조치를 할 수 있으며, 고객들에게 자신들의 가치를 주기적으로 전달할 수 있습니다.

​보다 빈번하게 배포를 하기 위해서는 일주일 단위로 애자일 스프린트(agile sprint)를 해보는 게 좋습니다. 그렇게 하면 어떤 팀이 다른 팀보다 더 자주 배포해야 할지 결정하는 것이 수월해질 겁니다. 배포의 빈도는 중요한 측정 수치이기 때문에 정기적인 성과 검토를 향해서 나아가는 이러한 단계는 데브옵스를 받아들이고자 하는 조직에서 반드시 수행돼야 합니다. 이 모든 과정을 통해서 조직은 지속적인 배포를 효과적으로 결국 배포자동화를 효율적으로 받아들이고, 프로세스를 자동화하는 방법에 대해 심도 있게 논의할 수 있습니다.

배포의 안정성은 지속적인 배포가 제대로 이뤄지고 있는지를 가늠하는 지표이며, 지정된 저장소가 얼마나 성공적인지, 그리고 코드 생성, 버전 관리, 테스트, 배포, 배포 이후의 절차와 같은 배포의 허위 프로세스들이 과연 제대로 제어되고 있는지에 대해서 팀에게 정보를 알려줍니다. 팀에서 배포 프로세스를 최적화해야 하는 대상을 분명하게 파악할 수 있도록, 대시보드 위에 빌드(build)를 시각화하는 것을 도와줄 수도 있죠.


05. 지속적인 통합 및 지속적인 배포(CI/CD)의 과정에서 지속적인 모니터링과 지속적인 관찰 가능성을 수립한다.


장애가 있을 때 빠르게 확인하기 위해서는 프로세스를 지속적으로 모니터링해야 합니다. 모니터링을 위한 데브옵스 통합 도구를 활용하면 문제에 신속하게 대응해서 비즈니스에 미치는 영향을 최소화하면서 문제에 신속하게 대응할 수 있는 환경을 만들 수 있는데요. 덕분에 가시성(visibility)이 향상되고, 팀의 생산성을 보다 더 쉽게 높일 수 있습니다.

​효율적인 모니터링 도구는 컨테이너 환경, 클라우드 환경 그리고 온프레미스 환경에서 모두 동일하게 잘 대처할 수 있습니다. 또한 향후의 업그레이드나 프로젝트에 대한 계획을 적절하게 수립할 수 있고, 그에 따라서 리소스를 관리할 수 있게 해줍니다. 가장 많이 쓰이는 모니터링 도구들로는 센수(Sensu), 프로메테우스(Prometheus), 나기오스(Nagios) 등이 있습니다.

​또한 슬랙(Slack)이나 페이저듀티(PagerDuty), 서비스나우(ServiceNow)와 같은 데브옵스 알림 도구가 있는데, 이들은 팀에서 대응해야 하는 이슈가 발생했을 때 그에 대한 중요한 정보를 제공해 줍니다. 인플럭스디비(InfluxDB), 스플렁크(Splunk), 아마존웹서비스(AWS)와 같은 도구들은 메트릭스(metrics) 스토리지 시스템(storage system)으로서, 수집된 데이터를 종합해서 학습하는 데 도움을 주게 됩니다.

​마지막으로, 사용자 설정 가능한 대시보드에 연동되어 정렬된 데이터를 보여줄 수 있는 데브옵스 시각화 도구의 활용을 고려하는 것도 좋은 생각입니다. 견고한 모니터링 환경을 조성하기 위한 목적으로 데브옵스 도구들을 합리적으로 사용한다면, 팀의 기능이 확장되고, 팀원들이 담당하는 제품이나 서비스의 품질과 가치를 개선할 수 있습니다.


06. 지속적인 통합(CI)으로 성과를 개선한다.


지속적인 통합을 지원하고 실천하면 그룹들 사이의 협업을 돕기 때문에, 전반적인 성과를 향상시킬 수 있습니다. 단일한 프로젝트에서 사용되는 도구와 기술의 다양성을 고려하면, 프로세스의 통합에 있어서 일관성이 유지되어야 하는데요. 그렇게 하면 변경사항을 통합하고 검증하는 공통의 매커니즘을 공유할 수 있게 됩니다.

​따라서 코드를 다시 마스터 브랜치(master branch)에 일찍 병합함으로써, 통합에 따르는 오버헤드(overhead)를 줄일 수 있죠. 이 방법은 협업도 개선되고, 코드의 상태에 따른 빠른 피드백 루프(feedback loop)가 가능하게 만듭니다. 지속적인 통합을 실천하는 개발 부서는 코드 변경으로 인해서 기존의 기능이나 테스트가 중단되지 않았음을 확인하기 위해서 자동화된 테스트를 구성해야 할 겁니다.


07. 서버리스를 통해서 조직이 긍정적으로 변화할 수 있도록 유도한다.


서버리스 아키텍처는 데브옵스의 잠재력을 최대한 발휘할 수 있도록 힘을 실어줍니다. AWS 람다(AWS Lambda), 구글 클라우드 펑션(Google Cloud Functions), 애저 펑션(Azure Functions), 로직 앱스(Logic Apps)와 같은 도구들은 데브옵스 조직의 고유한 요구사항을 충족시킬 수 있도록, 서버리스 인프라 위에서 어플리케이션을 실행하기 위한 환경이 잘 갖추어져 있습니다.

​IT 아키텍처에서의 이러한 변화는 소프트웨어 개발 부서와 운영 부서가 함께 일하는 방식도 변화시킬 겁니다. 보다 많은 운영 및 관리 업무를 서버리스 제공업체가 처리하게 된다면, 데브옵스의 역할은 인프라 관리가 아닌 앱을 구축하고 배포하는 업무에 보다 집중할 수 있도록 발전하겠죠. 개발(데브, Dev)과 운영(옵스, Ops)이 통합된 서버리스 아키텍처는 데브옵스 프로세스를 단순화해서, 팀에 있어서의 많은 문제들을 줄여줄 수 있습니다.


지금, 데브옵스를 도입해볼 수 있을까?


데브옵스는 쉽지는 않지만, 시도해 볼 만한 가치가 있는 변화인 것은 확실합니다. 많은 대기업 및 중소기업들이 이러한 변화를 시작했으며, 이를 최대한 활용하기 위해서 노력하고 있습니다. 지금까지 설명한 최고의 데브옵스 기법들은 성공으로 가는 여정의 출발점이 될 수 있습니다.

​데브옵스 전환의 주된 목적은 모든 회사에서 동일합니다. 즉, 생산성과 효율성에 긍정적인 영향을 미치고, 소프트웨어의 품질을 개선하며, 궁극적으로 최대한 빠르게 가치를 전달하는 것이죠. 데브옵스와 관련된 전문가를 만나보고 싶다면 위시켓을 이용해보세요! 여러분이 원하는 개발 프로젝트를 등록해주시면, 견적/포트폴리오/ 프로젝트 분석, 제안 내용을 한 번에 받아보실 수 있습니다.

 

 

> 이 글은 '7 DEVOPS BEST PRACTICES'를 각색하여 작성되었습니다.

위시켓 | 2020.09.08.

'뉴스센터'의 다른 글 보기

'스노우'같은 사진편집앱, 어떻게 만드는걸까?

더 나은 선택을 유도하는 'UI요소' 만들기

데브옵스(DevOps)의 최고기법 7가지, 대공개!

높은 사용성을 위해 '워드프레스 홈페이지'를 제작했더니?

유튜브도 그랬다. 모바일 앱, 리디자인 실패 사례로 보는 교훈들

뉴스센터 더 보기 >