DevOps
개발과 운영의 협업을 통한 비즈니스 가치의 지속적이고 신속한 제공.
— 데브옵스 방법론 백서
개발도 해야 하고 인프라도 만져야 하는데, 배포가 터지면 낮밤 가리지 않고 호출벨이 울리는 현대판 노예 계약서. 회사가 DevOps 도입하자고 하면 십중팔구 서버 엔지니어 자르고 개발자에게 인프라 업무까지 떠넘기겠다는 속셈이다.
1. 개요
개발(Development)과 운영(Operations)을 하나로 통합하여 제품 빌드부터 배포, 운영 모니터링의 순환 주기를 극도로 단축하고자 하는 방법론이자 문화. 현대 클라우드 네이티브 아키텍처의 필수 불가결한 종교로 칭송받고 있으나, 현실의 실무 생태계에서는 'DevOps 엔지니어'라는 기묘한 직군으로 변질되어 온갖 고된 궂은일을 도맡아 하는 고독한 밤샘 집단으로 전락하는 경우가 허다하다.(...)
2. 개발과 운영의 영원한 불통의 전쟁
DevOps라는 개념이 등장하기 전, 개발팀과 운영(인프라)팀은 물과 기름 같은 관계였다. 개발팀의 지상 과제는 '빠른 신기능 배포'였던 반면, 운영팀의 사명은 '서버의 절대적인 안정성 유지(즉, 변화 최소화)'였기 때문. 개발팀이 버그 가득한 코드를 운영팀 서버에 던져 넣으면 시스템이 뻗어버리고, 운영팀은 욕을 바가지로 하며 롤백시키는 시시포스의 형벌이 매일같이 반복되었다. DevOps는 이 거대한 장벽을 허물고 Git 기반의 소스 코드로 인프라까지 정의하는 Infrastructure as Code (IaC)를 제시하며 구원투수로 등판했다.
3. YAML 파일 편집기이자 24/7 인간 모니터의 현실
하지만 장밋빛 이론과 달리 현실은 냉혹하다. DevOps를 제대로 굴리기 위해선 도커 컨테이너 제어부터 쿠버네티스의 미친 스케일 관리, 지속적 통합 및 배포(CI/CD) 파이프라인 설계까지 산더미 같은 도구들을 통달해야 한다. 결국 이들의 일상은 퇴근 후에도 바지 주머니 속에서 끊임없이 진동하는 Slack의 'Grafana 경고 메시지'에 벌벌 떨며, 온종일 수만 줄짜리 들여쓰기 가득한 .yaml 파일만 쳐다보고 있는 'YAML 파일 타이피스트' 신세로 수렴되곤 한다.(...)1
4. 관련 밈 및 드립
4.1. 내 컴에선 되는데요? (It works on my machine)
개발자가 코드를 작성해 올렸는데 서버에서 에러를 뿜어낼 때 시전하는 가장 고전적인 책임 회피성 대사. DevOps는 이에 대응하여 '그럼 네 컴퓨터를 그대로 프로덕션 서버로 올려서 배포할게!'라는 극단적인 발상을 해냈고, 이것이 실제 컨테이너 가상화 기술인 도커 탄생의 이론적 배경이자 거대한 기술적 밈이 되었다.
4.2. 무한 루프(Infinity Loop)의 참뜻
DevOps의 상징 마크는 계획-코드-빌드-테스트-릴리즈-배포-운영-모니터링이 끊임없이 순환하는 무한대 기호(∞) 모양이다. 실무자들은 이를 보고 '너의 퇴근과 평화도 무한 루프 속에 갇혀 영원히 빠져나오지 못할 것'이라는 끔찍한 데스 엔드(Death End)의 예언으로 해석한다.
5. 여담
- 카오스 몽키의 기행: 넷플릭스는 DevOps 문화를 극한으로 끌어올리기 위해 운영 환경의 서버를 무작위로 강제 종료시키는 소프트웨어인 '카오스 몽키(Chaos Monkey)'를 개발했다. 일부러 헬게이트를 열어 인프라의 자동 복구력을 강제로 검증하는 변태적인 테스트 방식으로 업계에 엄청난 충격을 안겼다.
- 정체성 혼란: 학계와 선구자들은 끊임없이 '데브옵스는 직무가 아니라 문화이자 협업 방식이다'라고 침을 튀기며 설명하지만, 정작 채용 시장에서는 '쿠버네티스 3년 이상 다뤄본 DevOps 엔지니어 구함'이라는 텍스트로 모든 논쟁을 단숨에 종결짓고 있다.(...)
- 들여쓰기의 저주: IaC의 핵심 도구인 Ansible이나 Kubernetes 마니페스트 파일은 YAML 문법을 쓰는데, 띄어쓰기 한 칸 잘못 들어간 것 때문에 새벽 3시에 수억 원어치 인프라 배포가 터져버리는 촌극이 드물지 않게 벌어진다.