Mus Jung

DevOps Engineer

Mus Jung

DevOps Engineer

ChatOps 시작하기(3단계~5단계)2 min read

Jun 20, 2019

3단계 – Command 자동화와 관리

시작이 반이라는 말이 있는 것처럼 이 블로그 포스트까지 따라오신 분들은 ChatOps의 절반은 완성하신 겁니다. 실제로 어느 정도는 맞는 얘기라고 할 수 있습니다. 지금부터는 보다 ChatOps를 업무와 좀 더 밀착되게 만드는 과정이 되겠습니다. 세 번째 단계로 Command를 자동화하여 관리하는 것입니다. 간단한 슬래시 명령어를 만들고 다른 DevOps 툴로의 웹 훅을 만들어 줍니다. 지난번에 만들어 놓은 ChatOps로의 웹 훅과 함께 이제 나가고 들어오는 웹 훅이 모두 완성되었습니다. 그리고는 팀원이 만드는 버그를 확인하는 것을 자동화합니다. 버그는 끊임없이 생성이 될 것이기 때문에 그것을 최대한 빨리 확인하고 처리할 수 있도록 채널에 공유되어야 합니다. 버그뿐만 아니라 프로세스를 자동화하는 것을 점점 확대합니다. 여기서 중요한 점은 자동화된 프로세스에 너무 의존하지 않도록 하고 ChatOps를 맹신하지 않도록 합니다. 사람이 만든 것이기 때문에 언제든지 문제가 생길 수 있다는 것을 염두에 두어야 합니다. 물론 모든 프로세스를 자동화할 수도 없습니다. 테스트 환경 셋업, 시스템 쿼리 등의 프로세스를 자동화하는 것이 프로세스 자동화의 예가 될 수 있습니다. 마지막으로 command로 프로덕션으로의 deploy를 자동화할 수 있게 합니다. 그 결과 또한 ChatOps 채널에 공유가 되어야 합니다. 우리는 항상 실패로부터 많은 것을 배울 수 있고 ChatOps 환경에서는 누구나 실패를 도울 수 있기 때문이죠.

  • 밖으로 나가는 웹 훅과 슬래시 명령어로 간단히 시작하기
  • 팀원이 끊임없이 버그를 만드는지를 확인하는 것을 자동화하기
  • 프로세스에 자동화를 두고 신뢰하기(나사를 조이면 안 됩니다)
    • 임시 테스트 환경 셋업
    • 로드 테스트 환경 셋업
    • 상세 분석 시스템 쿼리
  • 프로덕션 deploy를 자동화해라, 왜?
    • 잘못된 것의 좋은 역사, 누구나 도울 수 있다

Matterbuild 예시

 

4단계 – 봇 일시키기

자동화가 완성되었으면 이전단계에서 수행한 모든 훌륭햔 작업을 보다 많은 사람이 친숙하게 느끼게끔 인터페이스를 바꿉니다. ChatOps의 많은 기능이 추가될수록 많은 슬래시 커맨드가 생겨날 것이고 이것들을 모두 기억하기 힘듭니다. ChatOps에서는 보다 쉽게 커맨드들을 사용할 수 있도록 도와줘야 합니다.  봇의 인터페이스를 바꾸고 봇에게 캐릭터를 부여하여 재밌게 합니다. 단지 명령어를 수행하는 봇이 아닌 사람들을 화나게 하고 가끔은 과하게 행복하게, 고객들이 좀 더 친숙하게 느껴지도록 만듭니다. 휴봇과 같은 기존 봇 인터페이스를 사용하는 것도 방법이 될 수 있습니다. 젠킨스와 휴봇을 연동하고, 다양한 테스트 서버에 대한 서버 로그들도 보여주고, 여러 모니터링 리포트들을 보여줍니다.

  • 이전단계에서 수행한 모든 훌륭한 작업을 인간적인 인터페이스로 바꾸기
  • 슬래시 커맨드와 모든것 을 기억하기 힘들다
  • 봇에게 캐릭터를 주고 재밌게 만들기
    • 화나게 만들기
    • 과하게 행복하게
    • 더 큰 고객을 위해 인간화하기
    • 비난할 대상을 만들기, “내가 아니라 화난 로봇이 했어!”
  • 휴봇과 같은 기존 봇 인터페이스 사용
    • 젠킨스
    • 다양한 테스트 서버에 대한 서버 로그를 보여주기
    • grafana  리포트 보여주기

휴봇 예

5단계 – 플러그인, 봇으로 통합

드디어 ChatOps 시작하기에 마지막 단계입니다. 마지막은 ChatOps를 보다 DevOps로 녹여내는 과정입니다.  ChatOps를 위한 위젯을 개발하고 리치 플러그인 프레임 워크를 활용합니다. 마찬가지로 프론트엔드와 백엔드 플러그인 까지 말이죠. ChatOps의 많은 기능을 다른 환경에서도 재활용할 수 있도록 만드는 것이 궁극적인 목표이지 않을까 싶습니다. 더 나아가 명령어가 입력도 되기 전에 미리 메시지를 가로채 내용을 보여주도록 합니다.

  • 통합 위젯을 구축하기 위한 리치 플러그인 프레임 워크 활용
  • 프론트엔드와 백엔드 플러그인
  • 챗으로 입력되기 전과 후의 메시지를 가로채기

GItHub 통합

      

Jira 통합

 

여기까지 ChatOps를 시작하는데 어떤 것들이 중요한지 알아봤습니다. 물론 5단계가 끝났다고 해도 여기서 끝나지 않고 지속해서 ChatOps를 발전시켜 나아가야 합니다. ChatOps를 시작할 때 Agile 방법론과 같다고 소개한 것처럼 5단계가 끝났다고 하더라도 1단계에서부터 5단계를 반복시켜야 할지도 모릅니다. 이 블로그 포스트 글을 읽으신 모두가 문화로서의 ChatOps를 잘 구성하여 팀원과의 소통, 더 나아가 조직 내의 모든 사람과 소통이 잘되는 문화가 정착되었으면 하는 바람입니다.

 

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