[ZDNET 칼럼] 데브옵스를 위한 지름길, 챗옵스를 아시나요

클라우드 시대에 데브옵스(DevOps)는 선택이 아니라 필수이다. 인프라 자원을 소프트웨어 코드로 관리하고, 모든 개발 영역에서 자동화를 이루며, 이를 위한 SW 도구를 사용하여 협업을 통해 개발과 운영의 간극을 메워 좀 더 빠르게 비즈니스 혁신을 이루는 것은 소프트웨어 서비스 영역에서는 최근 몇 년간 가장 중요한 베스트 프랙티스가 되었다.

이제 시스템 운영자는 개발팀의 요청에 맞추어 기존 데이터 센터에 서버를 설치하고, 고장난 서버 및 하드 디스크 교체, 복구하는 일을 할 필요가 없다. 클라우드 환경에서 API 만으로 이 모든 일을 자동화 할 수 있는 프로그램을 짜는 것이 주요 업무가 되었다. 이렇게 되면, 운영자는 몇 대의 서버나 수천대의 서버나 시스템에 대해 신경 쓸 필요가 없게 된다. 이러한 베스트 프랙티스는 본디 개발(Dev)과 운영(Ops)을 나눌 수 없는 스타트업(Startups)이나 넷플릭스 같은 클라우드 올인(All-in) 기업에서 출발했다.

따라서, 데브옵스란 하나의 조직이나 직군이라기 보다는 기업 내 전체 개발에서 부터 배포 및 운영까지의 프로세스와 문화를 일컫는 것이다. 인력과 소프트웨어, 개발 프로세스나 인프라를 의미하기도 하지만, 이것이 성공적으로 도입되기 위해서는 조직 문화나 의사 결정 체계도 바꾸어야 한다. 아마존닷컴은 일찍이 각각의 세부 서비스 기능을 잘게 쪼개, 이를 맡은 개별팀이 자율성, 주인 의식과 열정을 가지고 빠르게 개발 및 운영하도록 조직 구조를 만들었다. 또 개발의 많은 부분을 자동화 하고 시스템적 해결 도구를 제공했다.

■ 실시간 운영을 위한 챗옵스(ChatOps)의 발현
데브옵스의 문화적 동인 중 가장 중요한 것이 실시간 커뮤니케이션이다. 많은 회사들이 이미 PC 혹은 모바일 메신저를 통해 동기화된 방식의 커뮤니케이션을 해 왔다. 최근 모바일 환경이 발전하면서, 그룹 채팅이라는 비동기적 방식의 경향도 더 뚜렷해졌다.

국내 대표 인터넷 기업인 카카오의 경우, 회사 창업 초기부터 게시판과 답글 형식의 그룹웨어를 지양하고 아예 비동기식 메시지와 채팅 방식의 업무 앱을 사용해 왔다. 기존 그룹웨어에 익숙한 사람에게는 혼란스럽지만, 과거 IRC(Internet Relay Chat)을 사용해 본 경험이 있는 개발자라면 빠르게 적응할 수 있었다.

개발과 운영이 합체된 팀에서도 서비스 장애 상황이 발생했을 때, 문제를 빠르게 해결하기 위한 도구가 필요하다. 물론 VPN을 연결해서 서버에 접속하고, 문제를 파악하고 콘솔과 대시보드를 보면서 일일이 해결 하는 방법도 있다. 하지만, 실시간 채팅을 통해 상황을 파악하고 이를 빠르게 처리할 수 있도록 도와 주는 역할을 하는 도구가 절실해졌다.

2013년 깃허브(Github)의 개발팀은 원격 근무 환경에서 휴봇(Hubot)이라는 채팅봇을 통해 SW 자동 배포, 모니터링, 장애 처리를 가능하게 하는 ‘챗옵스(ChatOps)’라는 개념을 처음 소개했다. 오픈 소스로 만들어진 휴봇은 팀원들의 대화 중에 각종 정보를 제공해 주며, 문제를 빠르게 인지하고 필요한 경우 해결 할 수 있도록 하는 각종 명령어를 수행해 준다. 마치 예전 ‘심심이’를 연상하게 해 준다. 부수 효과로 새로운 개발자가 입사했을 때, 빠르게 팀의 개발 프로세스를 파악하고 업무 방법을 익히도록 도와 줄 수도 있다.

■ 챗옵스를 시작해 보자
사내 데브옵스의 다양한 프로세스와 기능을 업무용 채팅 플랫폼과 통합하는 것은 챗옵스에서 매우 중요한 일이다. 최근 해외에서 각광을 받고 있는 메시징 협업 플랫폼인 슬랙(Slack)이나 힙챗(HipChat), 그리고 국내 서비스인 잔디 등에서는 웹훅(Webhook)이라는 봇 개발에 필요한 방식을 제공하고 있다. 웹훅은 메시징 플랫폼에 적절한 권한을 승인 받아 명령을 수행할 수 있는 API를 말한다.

챗옵스를 위한 웹훅을 전달하기 위해서는 원하는 봇을 만들어야 한다. 깃허브(Github)에서 공개한 휴봇의 경우, 다양한 Hubot scripts라는 서드파티플러그인들이 있고, 리타(Lita)라는 봇 역시 Lita plugins이 공개되어 있다. 레딧(Reddit)의 챗옵스 토론에도 다양한 베스트 프랙티스가 올라와 있어 손 쉽게 구축을 시작할 수 있다. 버즈니라는 국내 스타트업이 만든 홍모아라는 슬랙봇도 참고할 만하다.

AWS 클라우드를 기반하고 있는 서비스라면, 챗옵스를 구축하기 위한 다양한 AWS 빌딩 블록을 이용할 수도 있다. 이는 AWS의 모든 자원을 API로 프로그래밍할 수 있을뿐더러 모니터링도 자유롭기 때문이다. 특히, 최근에 서버없이(Serverless) 원하는 기능만을 수행할 수 있는 AWS 람다(Lambda) 서비스와 다양한 API 호출을 AWS 내부 자원과 손쉽게 연동할 수 있는 아마존 API 게이트웨이(Amazon API Gateway)를 활용해 슬랙과 같은 메시징 플랫폼과 AWS기반 챗옵스를 구현하는 방법도 있다.

또한, 람다 및 API 게이트웨이로 텔레그램과 슬랙을 연동하는 예제를 참고해도 된다.

슬랙과 AWS CloudWatch알림 연동 봇 사례=AWS 한국 블로그
슬랙과 AWS CloudWatch알림 연동 봇 사례=AWS 한국 블로그

가장 먼저 해야 할 것은 작게 시작하는 것이다. 팀에서 가장 많이 필요한 정보이면서, 개발과 운영이 꼭 알아야 하는 업무와 기능을 정의하고 이를 구현해서 도움을 받는 것이다. 구성원들의 피드백을 받고 점진적으로 필요한 기능을 추가하는 것이 중요하다.

■ 미래의 데브옵스, 보이스옵스(VoiceOps)?
챗옵스라는 아이디어를 통해 데브옵스팀의 실시간 운영 생산성이 향상되었다면, 과연 미래의 데브옵스 환경은 무엇일까? 최근 로봇, 인공 지능 및 음성 인식에 대한 관심이 커지면서 더 빠르고 쉽게 사람의 손으로 하는 업무를 대체할 수 있을 것이라는 기대가 높아졌다.

이러한 기대를 반영하듯이 보이스옵스(VoiceOps)라는 용어가 심심치 않게 회자되고 있다. 아마존은 음성 인식을 기반한 질문 및 음악 재생, 상품 주문 등의 기능을 수행하는 아마존 에코(Amazon Echo)라는 가정용 기기를 선보인바 있다. 아마존 에코 개발자 플랫폼을 통해 제공되는 알렉사 스킬 키트(Alexa Skills Kit)이라는 API를 통해 내가 원하는 기능을 탑재할 수도 있다.

에코에 새로운 기능을 추가할 수 있는 Alexa Skills Kit=아마존
에코에 새로운 기능을 추가할 수 있는 Alexa Skills Kit=아마존

얼마 전 열린 미국 유타AWS 개발자 모임에서는 아마존 에코와 알렉스스킬셋을 기반으로 AWS 클라우드 인프라를 음성으로 조정하는 소위 보이스옵스 기능에 대한 코드를 공개하고, 데모를 진행한 바 있다. 미시간 지역 사용자모임에서도 유사한 챗옵스 데모를 보여주는 개발자 발표도 있었다.

챗 옵스로부터 촉발된 실시간 운영에 대한 요구로부터 시작해 음성 인식, 인공 지능을 기반한 미래의 데브옵스 환경이 우스개처럼만 보이지 않는다. 데브옵스는 좀 더 비지니스혁신을 위해 최대한 인간에 의한 운영 요소를 없애는(NoOps) 방향으로 진화하고 있으며, 이를 위한 스마트한 접근 방법과 프로그래밍 도구의 창조, 좀 더 민첩한 조직 문화와 협업 프로세스의 개선은 여전히 인간의 몫으로 남아 있다.

-원문: http://www.zdnet.co.kr/column/column_view.asp?artice_id=20160411132149

여러분의 생각