Medium - What DevOps Really Means

원문 - Adam Mackay

Trend 파악을 Medium 기고문 요약 포스팅 - DevOps가 진짜 의미하는 것에 대해서

“man using laptop in front of brown chair” by Alex Kotliarskyi on Unsplash

저는 기술분야에서 일하며 커리어를 쌓고 있고 그동안 소프트웨어 개발이 다양한 방법들로 성장하는 것을 지켜봤습니다. 대부분의 아이디어들은 다양한 분야에서 도출된 생산성 향상에 대한 일반적인 생각들입니다. 몇 년전에는 모두가 waterfall 방법론에서 애자일, lean 모델로 옮겨가는 것이였죠. 최근에 저는 DevOps를 적극 수용하는 진보적인 회사에 입사했습니다. Verifa는 애자일 방법론을 받아들였고 더 넓은 사업분야에 이익을 가져다 주는 구조를 제공합니다. 코딩을 다시 즐겁게 만들어 봅시다.

DevOps는 컴퓨터 업계에서 새로운 유행어 입니다. 데브옵스는 기술과 사업을 통합하는 것에 대한 많은 일반적인 생각을 포함하고 있으며 개발, 전달, 운영에 관한 이야기를 함께 제공합니다.

데브옵스는 실용적인 운영으로서 개발 엔지니어들이 디자인과 개발 프로세스를 포함하여 서비스 라이프 사이클 전체에 함께 참여하여 생산지원을 하는 것을 말합니다. 이 것인 기존에 당신의 팀이 코드를 작성하고 다른 팀이 테스트를 하고 또 다른 팀은 배포를 하고 또 다른 곳에서 운영을 하던 방식을 대체합니다.

이 것은 운영팀이 시스템에서 개발자들과 비슷한 기술을 많이 사용한다는 것으로 간주합니다. 데브옵스에서는 시스템 엔지니어들이 개발 워크플로우 처럼 작업을 수행합니다. 모든 애셋은 소스 컨트롤로 확인되고 관련 테스트가 수행됩니다.

Verifa에서는 우리는 여러개 핵심 데브옵스 테마가 있습니다: 가치, 원칙, 메소드, 관행, 그리고 도구입니다.

Values

엔지니어들은 해결 중심 사고를 가지고 있습니다. 그래서 새로운 기술을 부정적으로 생각하거나 새로운 것을 시도하는 것을 피하려고 하는 경향이 있습니다. 진정한 데브옵스 마인드는 이러한 충동을 인정하고 극복하는 것입니다. 가치에 대한 이해가 되지 않으면 기술이나 도커, Kubernetes 혹은 아마존 웹서비스도 당신의 문제를 해결해 줄 수 없습니다.

“people holding hands” by rawpixel on Unsplash

Principles

Verifa에서는 3가지 방식에 근거하여 원칙을 세웁니다. 이 모델은 “Visible Ops”, “The Phoenix Project의 저자 Gene Kimrhk “Lean IT”의 저자 Mike Orzen에 의해 고안되었습니다. 우리는 시스템 중점 사고, 피드백 루프의 확대, 지속적인 실험과 학습하는 문화가 이뤄지는 환경을 조성하는데 심혈을 기울였습니다.

항상 시스템 전체에 대한 생각을 하도록 했습니다. 스스로 자문해보세요, 어떻게 더 많은 피드백 루프를 구성할 수 있을까 하면서요. 모니터링, 측정 그리고 로그를 남기는 것은 작업을 디자인으로 돌리는 세가지 피드백 루프입니다. 성공적인 데브옵스 환경에서는 사건 제어 시스템이나 흠 없는 사후 분석, 그리고 투명성과 같은 효과적이고 짧은 피드백 루프들이 만들어 질 수 있습니다.

“two person handshaking in front of MacBook Pro” by rawpixel on Unsplash

Methods

Lean Management

Lean = Simple. 프로젝트를 작은 일의 연속으로 분해하세요, 진행률 제한을 구축하고 피드백 루프와 시각화를 하세요. 이것은 제가 프로젝트에 즐겨 사용하는 요소입니다. 린 관리 습관은 시스템 처리량과 안정성을 포함하여 구성원들이 스트레스를 적게 받고 만족감을 크게 얻는 등 조직의 결과물을 향상시킵니다.

People over Process over Tools

데브옵스의 창시자들 제시한 최초의 방법론 중 하나는 사람 다음 절차 다음 도구라는 것 입니다. Verifa에서는 먼저 누가 해당 기능의 책임자 인지 정하는 것을 권고합니다. 그리고 나서 해당 작업에 대해 필요한 프로세스들을 정의하죠. 그리고 나서 프로세스를 수행하기 위한 툴 체인을 선택하고 구현합니다. 당연한 얘기라고 생각하시겠지만 종종 엔지니어들과 관리자들은 툴 벤더들의 화려한 판촉행위에 넘어가서 도구부터 사놓고 작업을 생각하는 경우가 있습니다.

Continuous Delivery

이것은 사람들이 너무 많이 들어서 데브옵스의 개념 자체와 혼동하는 용어입니다. 간단히 말해서 코딩, 테스트, 릴리즈를 자주 하는 습관을 통해 작업의 규모를 작게 만들고 전체적으로 작업물의 질과 속도를 향상시키는 것을 말합니다. 이 것은 프로젝트 초반에 적용할 수 있는 핵심 요소이자 성공적인 데브옵스 구현의 원동력 입니다.

Change Control

제 경험으로는 성공적인 운영과 지나친 수정을 제어하는 것은 직접적인 상관관계가 있습니다. 이 말은 당신을 느리고 만들고 장점보다 단점이 더 많은 고전적인 절차 제어가 필요하다는 것이 아닙니다. 여기서 요구하는 것은 확장 가능하며 탄력적이고 지속가능한 제공 플랫폼 입니다. 깨지기 쉬운 구조를 제거하는 것과 반복직인 빌드 프로세스를 만드는 것, 의존성 관리와 지속적으로 개선할 수 있는 환경을 만드는 것에 집중하세요.

“Matrix movie still” by Markus Spiske on Unsplash

Infrastructure as Code

제가 Verifa에서 일하면서 알게된 것 중 하나는 시스템은 코드처럼 취급해야 한다는 것입니다. 시스템 요구사항은 소스 제어부에서 확인되고 코드 리뷰를 받아야 합니다. 도커와 Kubernetes 같은 최신 배포 기술을 사용하세요. 자동적으로 빌드, 테스트, 스펙을 준수하는 실세 시스템을 만들수 있고 프로그램을 통해 그것들을 관리할 수 잇습니다. 이런 접근을 통해 우리는 개선하기 어렵고 시간이 많이 집중되는 방식에서 벗어나 컴파일하고 시스템을 동작시킬 수 있습니다.

Practices

제가 일해본 모든 IT조직들은 프로젝트를 시작할 때 “자 뭔가를 만들어 봅시다!” 같은 철학으로 시작합니다. 그리고 나서 다른사람에게 테스트와 배포하는 것을 맡깁니다. 이것은 일반적인 작업 계획이 아닙니다. 일정이 어긋나게 되고 한번 개발팀이 다음 프로젝트로 나아가면 운영 이슈를 해결하기가 불가능 해집니다.

“roller coaster under white clouds and blue sky” by Priscilla Du Preez on Unsplash

Verifa에서 주장했던 것은 개발자가 그들이 만든 서비스에 계속 있어야하고 운영에 있어서 주인의식을 가져야 한다는 것입니다. 이것은 피드백 사이클을 더욱 효율적으로 만들어주며 개발팀이 버그를 빨리 처리하는 것 뿐만 아니라 새로운 기능과 제품이 올바르게 개발되고 있다는 것을 보장합니다.

Tools

Verifa에서 우리는 도구에 환장합니다. 엔지니어에게 코딩과 테스트, 패키지, 배포, 설정, 시스템과 응용 프로그램을 모니터링 할 수 있게 해주죠. 우리는 툴 전문가 이며 오픈소스 커뮤니티와 상업 벤더들이 제공하는 것 까지 폭 넓게 지켜보고 있습니다. 데브 옵스가 떠오르기 전에는 혁신과 도구를 사용하는 것이 침체되었습니다. 2000년에 제가 개발자를 시작했을 때와 똑같은 툴셋을 사용하고 있었죠. 많은 데브 지원 도구들은 서비스 라이프 사이클에 제공되는 기능측면에서 아주 인상적입니다.

“assorted handheld tools in tool rack” by Barn Images on Unsplash

견고한 데브옵스 툴체인을 정하는 것은 필수적입니다. 모든 것을 해결해주는 도구는 없고 툴 체인으로 일련의 도구들을 조합해야 당신이 필요한 것을 수행할 수 있습니다. 그리고 당신은 모든 것을 함께 사용하고 싶잖아요… 하나의 도구는 시스템 전체를 지탱하는 정도에만 유용합니다.

당신은 툴체인에 있는 다른 것들과 잘 어울리는 툴을 선택해야 할 필요가 있습니다. 자동화된 관리하에 수행이 가능해야 합니다. API나 커맨드 라인을 통해 호출할 수 있어야 합니다. 일반적으로 UI 기반 도구들은 툴체인으로 통합하기에 적합한 선택이 아닙니다. 당신은 도구가 검증가능 하길 원할겁니다.

And Next..

도커 이미지를 내리고 테스트를 시작하세요. 다른 사람의 코드를 포크하고 빌드를 시작하세요. 단일 서버나 Kubernetes를 사용한 클러스터 서버를 구동시키세요. 당신은 데브옵스를 하고 있습니다. 당신의 컴퓨터에서 시작해서 이제는 클라우드에 있죠.

“boy standing on ladder reaching for the clouds” by Samuel Zeller on Unsplash

사람들이 처음 지속적인 전달이 가능한 코드나 인프라에 대해 들으면 항상 반응은 똑같습니다. “여기서는 그렇게 하지 않아” 데브옵스를 성공적으로 수행하기 위해선 이러한 기술들을 사용해야만 합니다. 게다가 그리 어렵지도 않아요. 많은 시간 동안 업계에서 주어진 조언들은 Verifa와 데브옵스 개척자들이 효과가 있는 것으로 발견한 것과 완전히 반대였습니다.

Summary

  • 데브옵스 방식으로 프로젝트를 진행하는 것에 대한 개념정리
  • 데브옵스 환경을 구축하면 서비스 운영에 있어서 많은 장점이 있다는 것
  • 개발자가 디자인과 운영에도 참여를 함으로써 서비스의 제작속도와 품질을 향상시킨다.
  • 서비스의 배포 후 운영중인 경우에도 안정적인 확장과 제품의 품질을 향상 시키는데 도움이 된다.

© 2019. All rights reserved.

Powered by Hydejack v8.1.1