메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

데브옵스(DevOps)가 무엇인지에 대한 재조명

한빛미디어

|

2014-10-29

|

by HANBIT

27,471

제공 : 한빛 네트워크
저자 : Mike Loukides
역자 : 허민정
원문 : Revisiting “What is DevOps”

만약, 모든 회사들이 소프트웨어 회사라면, 함께 일하는 모든 사람들은 온라인 작업을 관리하는 법을 배워야 한다.

2년 전, "데브옵스(DevOps)란 무엇인가?"에 대해 썼다. 기사는 그 당시에는 적정하였으나 조직행동에 대한 이해와, 조직 행동과 복잡한 시스템 운영간의 관계가 커졌다.

지난 기사 이후 2년동안 몇 개의 주제들이 분명해졌다. 그 주제들은 기사에 내재되어 있었다고 생각한다. 하지만 이제는 그 주제들을 명확하게 해야 할 때다. 지금 사용하고 있는 툴들을 통해서 데브옵스(아니면 다른 소프트웨어 산업의 패러다임)에 대해서 쉽게 생각해 볼 수 있다. 특히, 설정 자동화를 위해 Chef나 Puppet을 사용하거나, 지속적 통합을 위해 Jenkins를 사용하거나, 클라우드 제공자를 통해 필요할 때만 서버를 사용하고 있다면, 데브옵스를 하고 있는 것이라고 생각하기 쉽다. 하지만 데브옵스는 단지 툴들에 대한 것만은 아니다. 데브옵스는 문화이고 개발자들과 운영자들의 공간의 엄청난 확장판이다. Jeff Sussna의 Empathy: The Essence of DevOps을 인용하자면,
"개발자와 시스템 관리자가 같은 VP에게 보고하게 만드는 것만이 아니다. 모든 설정을 자동화하게 하는 것도 아니다. 이것은 Jenkins 서버를 다루는 것도 아니고, 애플리케이션을 클라우드를 통해 이용하는 것도 아니며, GitHub를 통해서 코드를 배포하는 것도 아니다. 개발자가 그들의 코드를 PaaS하게 배포하는 것도 아니다. 데브옵스의 진정한 본질은 공감이다."
Jeff의 "공감"은 개발팀과 운영팀과의 이해를 같게 하는 것이다. 개발자와 운영자의 책상을 같이 둔다든가, 그들을 같은 관리하에 둔다든가 등의 묘책들은 이 목적을 달성하는 방법이다. 진정한 목적은 쉽게 적대적인 관계가 될 수 있는 조직들 간의 소통이다. 실제로 쉽게 적대적인 관계가 될 수 있었던 개발팀과 운영팀이 결국 같은 말을 하고 같은 목적을 향하고 있다는 것의 자각으로 우리의 Velocity 컨퍼런스의 시작이 되었던 것처럼 말이다.

Mark Burgess의 블로그의 The Promises of DevOps 포스팅은 데브옵스와 약속이론(Promise theory)과의 관련성에 대해 설명하고 있다. 약속 이론은 하향식으로 지휘 및 통제하는 관리와는 완전히 다른 견해를 가지고 있다. 약속 이론은 로컬 규약(local promises)의 체계에서 서비스를 만든다. 시스템 구성 요소들(사람이나 머신)은 꼭 전달되어야만 하는 "필요 요건들"의 목록들만으로 나타낼 수 없다. 시스템 구성요소들은 전달할 수 있는 것들에 대해 "약속"들을 만들어야 한다. 약속들은 부분적인 직무이다. 개발자는 개발 요건에 맞추어 코드를 납기일까지 작성하여야 하고, 운영자들은 서버가 어떠한 환경에서도 잘 동작하게 유지해야 한다.

약속 이론은 소박하게 모든 약속들이 지켜지는 것을 가정하는 것이 아니다. 사람들은 그들의 약속을 항상 어긴다. 서버(약속 네트워크의 agent가 될 수도 있는) 또한 약속을 어긴다. 그러나 약속 이론과 함께라면, 에이전트들은 자신이 약속한 것을 인지하고 있고, 그들의 약속은 그들이 수행할 수 있는 가능성들을 반영한다. Burgess가 이렇게 설명하였다.
"개발자들은 운영자들이 좋아할 만한 것을 약속한다. 운영자는 개발자들이 좋아할 만한 것을 약속한다. 개발자들과 운영자들 모두 서비스가 특정한 수준의 가동률을 유지하도록 약속한다. 즉, 개발자들은 운영자들이 배포 할 수 있는 만큼 공급한다. 약속으로 표현함으로써, 실마리 없는 외부의 희망적 관측에 의한 확률이 아니라 대리인의 책임감에 의한 정확한 정보로 추측할 수 있다."
그리고 잘 구성된 약속 체계(network of promises)는 만일의 사태와 백업을 포함한다. 만약, A가 약속 X를 전달하지 않는다면 어떻게 될까? 이럴 때는 반직관적일지는 몰라도, 약속 망(network of promises)은 하향식 구성의 명령보다 더 취약할 수도 있다. 하지만, 약속 네트워크는 위에서부터 억누르며 지휘하고 통제하는 관리보다 더 견고하고 믿을 만한 서비스를 제공할 것을 약속한다. Tim Ottinger가 몇 개의 트윗에서 말했듯이:

"어떤 사람들은 그들의 시간을 인간들로 톱니들을 만들어 완벽하고 효율적인 머신을 완성하는데 노력을 허비한다."
- Tim Ottinger (@tottinge) June 12, 2014

"일반적으로 사람들은 재능 있는 사람들의 생산적이고, 활동적인 커뮤니티와 함께 하는 편이 더 낫다."
- Tim Ottinger (@tottinge) June 12, 2014

저것이 하향식 관리와 약속 이론의 차이를 요약한 것이다: 당신은 인간들로 톱니를 만들어 기계를 완성하는가 아니면 재능의 커뮤니티를 만드는가?

Burgess는 데브옵스가 단지 툴들이나 기술에 대한 것이 아님을 명확하게 말했다. "협동은 컴퓨터나 프로그래밍과 전혀 관계가 없다. 협동의 원칙은 정보 교환과 그 목적의 보편적인 문제다." 협동, 정보교환, 그리고 네트워크 목적은 다른 무엇보다도 더 문화적인 이슈들이다. 마찬가지로 Sussna의 "공감"이란 개념도 이해(다시 말해서, 정보 교환)이며, 이해는 문화적 이슈이다.

문화의 변화와 이해에 관한 것이다. 무엇인가 새로운 것을 실천에 옮기는 방법이다. 이것을 더 정확하게 이해하기 위해, Etsy에 있는 blameless postmortems 을 살펴보자. John Allspaw 가 쓴 대로, 만약 사후 검사(postmortem)가 정말로 어떤 일이 일어났는지 확인하는 것이라면, 고용인들이 "처벌이나 응징에 대한 두려움이 없이" 이벤트들에 대한 설명을 할 수 있는 분위기는 필수적이다. 사후 검사는 정보 교환이나 공감이다. 만약 우리가 무슨 일이 정확히 일어났는지 파악하지 못한다면, 우리는 더 큰 탄력성을 가진 시스템을 만들 수 있다는 희망이 없다.

책임 없는 사후 검사들이 모던 컴퓨팅의 다른 관점에서는 더 중요하다. 오랫동안 주장 해왔던 것처럼 하향식 관리는 실패가 있다면 하나의 근본 원인을 찾을 것이고, 이 근본 원인들은 종종 "휴먼 에러"로 끝나기 마련이다. 하지만 복잡한 시스템에서는 하나의 근본적인 원인이란 없다. 이것은 매우 중요한 포인트다. 지적했듯이, 모든 시스템은 분산되어있고 모든 시스템은 복잡한 시스템이다. 그리고 거의 모든 실패는 관계 없는 이벤트들의 "더할 수 없이 나쁜 상황"의 결과이고, 어떠한 실패나 에러도 예상할 수 없었고 예상하지 못했던 것들이다. Allspaw가 Richard Cook을 의역한 것을 쓰자면, "복잡한 시스템에서의 실패는 여러 개의 원인들로 구성되어있는데, 각각이 필수적이나 공동으로 필수적인 요소들이다."

데브옵스는 단지 개발과 운영에 관한 것이 아니다. 이것은 전체처럼 협동하여 관리하는 것이다.
만약, 누군가가 책임을 질 때까지 끝나지 않는 프로젝트가 있는 회사에 다녔다면(내가 경험했듯이), 단기적으로는 "하나의 근본적인 원인" 이란 생각이 개인의 "책임"에 대한 비난과 부끄러움으로 끝나는 결과를 낼 것이다. 하지만, 장기적으로는 필연적으로 조직이 더 불안정하거나 실패하기 쉽고 그리고 덜 민첩하고, 변화에 적응하는 능력이 떨어지는 결과를 낼 것이다. 이해와 공감 없는 문화는 진정한 원인들을 찾아 탄력적인 시스템을 만드는 것을 불가능하게 만든다.

여기서의 결론은 지대한 영향을 가져올 것이다. 여기서 문화적 변화와 데브옵스에 대해서 말해왔으나 컴퓨팅 시스템과 소프트웨어 개발자, 아니면 시스템 관리자에 대해서는 거의 언급하지 않았다. 사후 점검 후 문제가 서버 고장이라든지 은행 대출 문제이든 상관 없다. 같은 원칙만이 적용된다.

만약, 모든 회사들이 소프트웨어 회사라면, 함께 일하는 모든 사람들은 그들의 온라인 작업을 관리하는 법을 배워야 한다. 그러나 그것보다 더 나아가서 우리는 웹의 제품개발 시간의 급격한 감소, 신뢰성, 퍼포먼스의 급격한 증가를 보아왔다. 이 생산성의 증가를 온라인 그룹만이 아니라 전체 회사로 확장시킬 수 있을까? 그럴 것이라고 믿는다. 이러한 질책 없는 사후 검사들로 기업들이 실패를 맛보아도 탄력적이고 더 나아가 직원들의 삶의 질을 높이게 할 수 있는가? 그것 또한 믿는다. 단지 "온라인 그룹"이 아닌 기업 사이에서의 DevOps의 채택은 느리게 전개될 것이다. 하지만 이것은 꼭 필요한 과정이다. 5년이나 10년 후에 우리는 되돌아보며 살아남은 사람과 잘 적응한 사람, 그리고 경쟁을 능가하는 이해와 더불어 협동, 상호 존중이 함께한 커뮤니티를 가진 기업을 보게 될 것이다.

데브옵스는 개발자와 운영자에 관한 것이 아니다. 전체로 공동 운영하는 것에 관한 것이다. 수위아저씨(빌딩을 항상 깨끗하게 해주기로 약속한 사람)로부터 CEO(회사가 자금 운용을 잘 하고 월급을 제 때 주기로 약속한 사람)까지의 전체 기업의 문화이다. 약속 이론은 문화를 변화시키는 지적 프레임워크의 기반으로 등장했다.
TAG :
댓글 입력
자료실

최근 본 상품0