IT 기업의 기술 블로그는 단순히 기술 지식과 정보를 나누는 통로에만 그치지 않습니다. 이는 기업의 기술력과 개발 문화를 대외로 드러내는 창구이기도 한데요.
양질의 콘텐츠가 있는 기술 블로그는 잠재 고객에게 신뢰를 얻는 데 도움이 되고요. 나아가 기술 인재의 관심을 해당 기업으로 끌어들일 수도 있습니다. 기술 블로그를 잘 운영하면 기업의 브랜드 이미지도 향상할 수 있고요.
이에 기술 블로그를 관리할 때는 시장 또는 독자 기대치를 충족하는 콘텐츠를 기획하고요. 콘텐츠를 성의 있게 제작하고, 이를 신속하게 배포해야 합니다. 그러면 기술 블로그에 양질의 콘텐츠를 더 자주 발행할 수 있고요. 이로써 기업 홈페이지로 트래픽을 더 많이 유도할 수도 있죠.
인포그랩에서는 그동안 기술 블로그에 글을 수동으로 올리고 관리했습니다. 그렇다 보니 기술 블로그 제작, 배포 과정에서 단순 반복 업무가 많았는데요. 콘텐츠를 제작, 리뷰, 수정, 편집, 배포하는 데 시간이 오래 걸렸죠. 이는 전반적인 테크니컬 라이팅 업무의 효율성을 떨어뜨렸습니다.
그러나 지난해 기술 블로그에 콘텐츠를 자동 배포하는 슬랙봇을 직접 개발해 문제를 개선했습니다. 이 도구는 콘텐츠 제작, 배포 과정에서 불필요한 단순 반복 업무를 줄여줬죠. 그 결과, 기술 블로그 제작에서 배포까지 걸리는 시간을 단축했고요. 이로써 테크니컬 라이팅 업무의 효율성과 생산성까지 향상할 수 있었습니다. 이 글에서는 기술 블로그 배포용 슬랙봇의 개발 배경과 과정, 작동 방식, 도입 결과를 자세히 살펴보겠습니다.
개발 배경

슬랙봇 개발 배경을 이야기하려면 먼저 인포그랩의 기술 블로그 업무 수행 방식을 짚고 가야 하는데요. 인포그랩에서는 테크니컬 라이터인 Grace가 회사 전체 기술 문서의 품질을 관리합니다. 기술 블로그를 제작, 리뷰, 수정, 편집, 배포하는 업무도 그중 하나인데요. Grace는 글에 맥락이 충분히 설명되지 않았거나 어휘가 잘못 사용된 걸 발견하면 이를 피드백하고, 수정하며 콘텐츠의 질을 높이는 데 기여하죠.
입사 초반에 Grace는 사내 기존 테크니컬 라이팅 업무 수행 방식, 그중에서도 마크다운 문법을 사용한 문서 작성 방식과 GitLab을 활용한 버전 관리 방식에 적응하는 데 어려움을 겪었습니다. 그는 문법/파이프라인 오류, GitLab 이슈/Merge Request(MR) 만들기, 마크다운 문법, 리뷰/승인 절차를 자주 문의했는데요. 위 메시지만 봐도 Grace가 사내 업무 매뉴얼과 정책을 파악하기 위해 얼마나 많은 질문을 자주 던졌는지 확인할 수 있죠.
특히 인포그랩은 노션에서 기술 블로그 콘텐츠를 작성해 마크다운 형식에 맞추어 GitLab에 배포하는데요. 이 과정은 번거로웠습니다. 사내 매뉴얼에 맞춰 이미지 이름을 손수 바꾸고, 프론트엔드에서 요구하는 여러 메타데이터를 수동으로 입력해야 했죠. 마크다운 문법과 GitLab을 사용해 본 경험이 없는 데다 사내 테크니컬 라이팅 정책을 모르는 신규 입사자가 여기에 익숙해지려면 시간이 필요합니다.
저는 DevOps 엔지니어로서 이러한 비효율적인 업무 수행 방식을 개선하고 싶었습니다. ‘기술 블로그 배포 프로세스를 자동화하고, DevOps 지표를 설정해 기술 블로그 제작 업무의 생산성 지표를 만들면 이 과정을 효율화할 수 있을 걸’로 생각했는데요. 저는 지체하지 않고 평일, 주말 밤낮을 쪼개가며 기술 블로그 배포 자동화 도구 개발에 나섰습니다.
개발 과정 1. 자동화 계획 세우기
저는 개발 과정에서 다음 세 가지 요소를 개발 원칙으로 세웠습니다. 첫째, 기술 블로그에 콘텐츠를 배포할 때 기존에 이용하던 도구를 새로운 도구에 통합하기로 했는데요. 이로써 구성원이 새 배포 시스템에 쉽고 빠르게 적응하도록 유도하려 했죠. 둘째, TypeScript 프레임워크를 사용하기로 결정했습니다. TypeScript는 널리 사용되며, 이는 정적 타입 언어라서 안정적으로 개발할 수 있는데요. 이는 새로운 배포 시스템을 쉽고 편리하게 유지보수하는 데 도움이 되죠. 셋째, 사용자 친화적인 상호작용을 지원하고자 했습니다.
제가 보기에 이러한 원칙을 모두 충족하는 도구는 슬랙봇이었는데요. 슬랙봇은 메신저 서비스인 ‘슬랙’에 기반한 봇이죠. 이 봇은 채널 또는 다이렉트 메시지(DM)에서 사용자에게 리마인더를 전달하는 등 다양한 기능을 자동으로 수행합니다. 기술 블로그에 콘텐츠를 배포하는 기능도 자동으로 실행할 수 있죠. 특히 인포그랩에서는 슬랙으로 구성원끼리 소통하는데요. 모두가 슬랙을 쓰는 데 익숙합니다. 이에 새로운 도구를 따로 사용하지 않는 게 편리한 시스템을 개발하는 데 더 도움이 됐죠.
특히 슬랙봇은 ‘Bolt’라는 프레임워크를 제공하는데요. 이는 JavaScript, Java, Python 뿐만 아니라 문서도 잘 지원합니다. 따라서 이를 참고하면 기술 블로그 배포 자동화 도구를 개발하기가 쉬웠고요. 특히 로컬 환경에서 실행해도 슬랙 애플리케이션에서 도구를 테스트할 수 있어 유용했죠. 마지막으로 슬랙은 사용자에게 보이는 화면을 ‘Block Kit’ 기능으로 설계하도록 지원하는데요. 화면 흐름을 JSON으로 설계하고 함수로 데이터를 처리하면 직관적으로 상호작용할 수 있었습니다.
정리하면, 슬랙봇을 기술 블로그 배포 자동화 도구로 사용할 때 유지보수하기가 더 편리했고요. 사용자는 더 쉽고 빠르게 상호작용할 수 있었습니다. 그게 제가 슬랙봇을 기술 블로그 배포 자동화 도구로 선택한 이유였고요.
개발 과정 2. 화면 그 리기

슬랙은 사용자와 상호작용하는 데 활용하도록 메시지와 모달을 지원합니다. 메시지는 슬랙 채널에 글을 쓰거나 답글을 다는 기능이고요. 모달은 팝업창이 뜨면서 사용자와 상호작용하는 기능이죠. 저는 기술 블로그에 콘텐츠를 배포하는 워크플로를 모달로 구현하였습니다.
슬랙봇을 활용한 기술 블로그 배포 과정은 다음과 같습니다.
- 블로그 게시: 노션의 콘텐츠 페이지에서 ‘무슨 콘텐츠를 어디에 배포할지’ 선택합니다.
- 블로그 유효성 검사: 메타데이터와 커버 이미지 등 프론트엔드에 필요한 요소가 배포하려는 콘텐츠에 모두 있는지 확인합니다.
- GitLab 이슈/MR 검사: GitLab에 이슈와 MR을 생성하는 단계입니다. 이슈와 MR이 이미 있다면 해당 MR에 커밋합니다.
- 완료 메시지: 배포가 완료되면 노션의 콘텐츠 원본 링크와 GitLab MR 링크를 포함하는 메시지를 남깁니다.