하드웨어를 살펴보고 있는 IBM 엔지니어링 팀 멤버

IBM 엔지니어링 팀이 개발 수명 주기 전반에서 Slack을 사용하는 방법

“당사는 소스 코드에서 시작해 제작 배포까지 이어지는, 이른바 ‘엔드 투 엔드 제공 파이프라인’을 갖추고 있습니다. 그리고 지금은 해당 프로세스에서 중요한 모든 단계에 Slack을 통합해 놓았죠.”

IBM수석 소프트웨어 엔지니어Thomas Lawless

IBM의 수석 소프트웨어 엔지니어Thomas Lawless나 그의 팀은 전날 얼마나 많은 업무를 진행했든, 검토할 코드가 있는지 검사하는 일로 매일 일과를 시작했습니다. 그는 “매일 아침 프로세스를 다시 시작하는 것 같았죠.”라고 말했습니다.

Lawless는 IBM 최대의 인트라넷 애플리케이션 중 일부의 프로덕션, 개발, 배포 및 제공 업무를 총괄하고 있습니다. 그는 “제 직무 범위는 개발, 지속적 통합, 테스트 자동화, 개발 자동화, 운영을 모두 포함합니다. 그날그날 각기 다른 팀에 속한 40~50명의 다양한 사람들과 함께 일하게 된다는 뜻이죠.”라고 설명했습니다.

Lawless는 “당사는 소스 코드에서 시작해 프로덕션 배포까지 이어지는, 이른바 ‘엔드 투 엔드 제공 파이프라인’을 갖추고 있습니다.”라고 말합니다. “그리고 지금은 해당 프로세스에서 중요한 모든 단계에 Slack을 통합해 놓았죠.”

IBM수석 소프트웨어 엔지니어Thomas Lawless

Lawless의 업무 중 주요한 부분은 개발 기술과 서비스를 도입해서 운영 성과를 개선하고 제공 속도를 높이는 일입니다. 그는 1여년 전에 IBM 내 다른 팀과 함께 Slack을 팀 커뮤니케이션의 허브로 사용하기 시작했지만, 곧 Slack이 시스템 알림이나 다른 서비스의 알림 등 사람들 간의 대화 외의 커뮤니케이션을 수집하는 데에도 유용하다는 것을 깨달았습니다.

Lawless는 “당사는 소스 코드에서 시작해 프로덕션 배포까지 이어지는, 이른바 ‘엔드 투 엔드 제공 파이프라인’을 갖추고 있습니다.”라고 말합니다. “그리고 지금은 해당 프로세스에서 중요한 모든 단계에 Slack을 통합해 놓았죠.”

Slack에서 구축 및 배포 프로세스 관리하기

IBM의 팀은 공용 Slack 채널(예: #development-team)을 사용해서 팀 멤버가 공개적으로 문제를 논의하고 다른 팀 전문가들이 쉽게 참여하여 각자의 의견을 첨언할 수 있도록 합니다.

팀 채널에는 직원들의 메시지는 물론, 이들이 사용하는 다양한 애플리케이션의 시스템 알림도 포함되어 있습니다. 개발자가 검토를 위해 소스 코드에 사용자 스토리를 제출하는 경우를 예로 들어 보겠습니다. 시스템에서 팀의 Slack 채널에 알림을 발송해 모두에게 검토할 새 코드가 있음을 알립니다. 그러면 검토자가 해당 Slack 메시지에서 바로 시스템으로 이동하여 코드를 검토할 수 있습니다.

Lawless는 “Slack을 사용하기 전에는 검토자가 될 만한 사람을 개발자가 찾아서 그 사람에게 이메일을 보내거나 일대일 채팅을 시작해야 했습니다.”라고 말합니다.

팀의 워크플로가 Slack을 통해 진행되면 팀은 필요에 따라 개별 코드 검토에 관한, Slack 내에서 바로 확인하고 처리할 수 있는 알림을 받게 된다는 것을 알기에 각자 업무 진행 페이스를 유지할 수 있습니다.

개선된 인시던트 관리를 위해 시스템 경고를 중심으로 팀을 한곳에 모으기

IBM의 인기 팀 채널과 이러한 채널에서 이루어지는 대화 및 알림에는 다음과 같은 것이 있습니다.

  • #help-services: PR(pull request) 알림을 수집하여 자동 동료 코드 검토를 촉진하고 요청이 승인되면 팀에 알림을 보내 팀 멤버가 최신 업데이트를 받기 위해 애플리케이션을 전환할 필요가 없도록 합니다. 또한 팀은 빌드 상태가 변경될 경우 해당 팀에 알림을 보내도록 하기 위해 Jenkins /Travis CI 통합을 사용합니다.
  • #help-deployments: 팀 멤버는 코드 변경의 테스트 자동화 과정에서 배포가 실패했을 경우 알림을 받게 됩니다.
  • #help-tasks: 일괄 처리 작업에 실패하는 경우 알림을 게시합니다.
  • #starfleet-monitoring: 런타임을 모니터링하고 인시던트를 관리하기 위해 NewRelic, Splunk 및 PagerDuty의 알림이 여기에 표시됩니다.

Lawless는 “채널은 일종의 감사 추적 역할을 합니다.”라고 말합니다. “우리는 이러한 인시던트 채널을 사후 점검을 위한 분석의 기반으로 활용합니다. 특히 좋은 점은 모든 내역이 남아 있기 때문에 짐작할 필요가 없다는 점이죠.”

IBM수석 소프트웨어 엔지니어Thomas Lawless

Lawless는 Slack에 실패 또는 인시던트 관련 경고가 표시되면 관련 팀 멤버가 잠재적 해결책을 논의할 수 있고 누구나 필요에 따라 다른 전문가를 초대할 수 있는 새로운 인시던트별 채널을 개설할 것이라고 설명했습니다.

문제가 해결되면 팀은 멤버들이 해결책을 찾기 위해 노력하면서 논의한 파일, 스크린샷, 오류 메시지, 알림 등 인시던트 전체에 대한 기록을 얻게 됩니다.

Lawless는 “채널은 일종의 감사 추적 역할을 합니다.”라고 말합니다. “우리는 이러한 인시던트 채널을 사후 점검을 위한 분석의 기반으로 활용합니다. 특히 좋은 점은 모든 내역이 남아 있기 때문에 짐작할 필요가 없다는 점이죠.”

최근에 Lawless와 그의 팀은 그들이 이용하는 다양한 서비스의 공급업체와 함께 Slack을 사용하기 시작했습니다. 그의 경험 상 대부분의 회사가 문제나 질문을 논의하고, 이로써 불필요한 대화를 줄일 수 있도록 기꺼이 그들의 팀 전체에 비공개 Slack 채널을 공유했습니다.

부가 단계를 줄여 높은 생산성 확보하기

Lawless와 그의 팀은 최초 소스 코드 작성 및 테스트부터 최종 배포에 이르기까지 개발 프로세스의 모든 단계에 Slack을 통합했습니다. 검토할 새 코드가 있는지 확인하느라 아침 시간을 허비하는 대신, 모든 직원이 전날 업무를 종료한 부분부터 다시 시작합니다.

Lawless는 “Slack 통합이 눈에 띌 때마다 활성화했습니다.”라고 말합니다. “이는 정말 많은 가치를 제공할 뿐 아니라 업무 프로세스에서 많은 부가 단계를 줄일 수 있도록 도와줬어요.”