Mus Jung

DevOps Engineer

Mus Jung

DevOps Engineer

ChatOps란?3 min read

Jun 20, 2019

ChatOps에 대해서 알아보려고 합니다. 요즘 많은 조직이 DevOps에  대해서 고민을 하고 있는데요, DevOps에 운영(Operation)의 꽃은 ChatOps가 아닐까 합니다. 사람들 간의 의사소통은 운영하는 데 있어서 매우 중요한 요소입니다. 많은 분이 프로젝트에서 서로간의 의사소통이 제대로 되지 않아서 추가적인 비용이 들었던 경험을 해보셨을 겁니다. 개발자들뿐만 아니라 개발자가 아닌 분들도 ChatOps에 대한 관심이 커지고 있습니다. 그래서 DevOps라는 딱딱한 주제 중에서 많은 분이 가장 쉽고 가볍게 접근 가능할 수 있는 게 바로 ChatOps가 아닐까 하는 의미에서 저희 InfoGrab의 첫 블로그 포스트 주제로 ChatOps를 선정해 보았습니다.

 

ChatOps란?

 

ChatOps 정의

 

ChatOps는 chat과 operation의 합성어로 사람, 토론, 봇, 도구 및 파일을 하나의 중앙 위치에서 함께 가져오는 협업, 대화 중심의 작업 방식입니다. ChatOps로 사용되고 있는 대표적인 툴로는 Slack, Mattermost, Rocket Chat 등이 있습니다. ChatOps의 기능에 대해서는 Mattermost를 중심으로 자세히 알아보도록 하겠습니다.

 

ChatOps로 얻는 것

 

그렇다면 ChatOps를 통해서 얻는 것이 어떤 것들이 있는지 알아보도록 하겠습니다. ChatOps의 가장 큰 목표 중 하나는 짧은 피드백 루프라고 할 수 있겠습니다. ChatOps를 사용하지 않고 메일로 업무를 진행한다고 가정하겠습니다. 특정 버그가 발견되고 이를 해결하기 위해 담당자 혹은 담당자일 가능성이 큰 사람에게 메일을 보냅니다. 담당자가 부재중이거나 메일을 받은 사람이 해당 업무의 담당자가 아닐 경우 처리가 지연될 것입니다. 그러나 ChatOps의 채널로 내용이 공유된다면 채널에 속한 멤버 누구나 버그를 확인하고 해당 업무를 진행해 나갈 수 있게 됩니다. 최근 개발자들에게 점점 중요해지는 것은 지식에 대한 공유입니다. 지식에 대해서 공유는 하고 싶지만 문서화하기에는 너무 부담되고 그냥 넘어가기에는 아쉬운 경우들이 많습니다. ChatOps를 활용하면 간단한 지식을 공유하기 편해집니다. 콘솔부터 커맨드 라인까지 모두 ChatOps를 통해 지식이 쌓여가는 것이지요. 이러한 지식만 쌓여가는 것이 아닙니다. 이외의 정보 혹은 업무 진행 상황들을 공유하기 위해 사람들이 모여들게 될 것이고 프로세스 전반적인 내용이 ChatOps를 통해 확인할 수 있게 될 것입니다. 이렇게 모든 정보가 내역(History)에 남게 되면 흐름을 통한 버전 관리가 되기 때문에 이전 상태로 복원하는데 내용을 파악하는 시간을 줄일 수 있게 됩니다.

 

이렇게 ChatOps를 사용하면 얻는 장점에 대해서 간략하게 알아보았습니다. 위의 내용을 잘 살펴보면 Agile 방법론과 접근 방법이 비슷하다는 것을 알 수 있습니다. 사람들을 한곳에 모아두고 의사소통을 통해 사이클 타임을 줄이는 것은 Agile을 통하여 얻고자 하는 것들과 일치합니다. 모든 툴이 그러하듯 아무리 툴이 좋아도 사람들이 사용하지 않는다면 아무 소용이 없습니다. 그렇기 때문에 “ChatOps는 기술(Technology)이 아닌 방법론(Methodology)”으로써 접근하여 ChatOps를 잘 활용하도록 문화를 갖추는 게 가장 중요합니다.

 

  • 짧은 피드백 루프(빠른 응답 시간)
  • 공유되는 콘솔 혹은 커맨드라인
  • history
  • 한 공간에 필요한 모든 사람을 모음
  • 복원하는데  걸리는 시간이 줄어듦
  • ChatOps는 technology가 아닌 methodology(방법론)

 

 

ChatOps 사례

 

 

ChatOps를 어떠한 방식으로 구성해야 할까요? 시작은 사람으로부터 시작됩니다. 어떠한 업무에 대해서 개발자나 SRE가 구축된 DevOps(Jira, GitLab 등)에 아이템을 등록하여 ChatOps(예:Mattermost)로 메시지가 날아가도록 하거나 직접 메시지를 입력합니다. 채널에 입력된 메시지를 해당 채널에 멤버로 속해있는 로봇이 이미 약속해 놓은 흐름대로 인프라의 API 혹은 쿼리를 통하여 데이터를 가져오거나, 다른 사용자에게 노티를 하거나, 혹은 모니터링할 데이터를 만듭니다. 봇은 널리 사용되는 Hubot이나 Lita 등이 사용될 수 있습니다.

 

(내용, 이미지 출처 Mattermost – Lessons learned implementing ChatOps)