생산성 200% 올려주는 스타트업 자동화 (1)
사놓고 안입은 옷들
10초 늦어서 놓쳐버린 버스
쌓아 놓고 만료되어 버린 마일리지
마감 직전에 쓰지 못한 쿠폰
기껏 세차 했는데 다음날 비가 올 때
마지막으로
구매하고 사용하지 않고 있는 500만원 짜리 Mac Studio
안녕하세요. 딜라이트룸 DARO 팀에서 광고 수익화를 극대화 하기 위한 광고 SDK개발하고 있는 라이언입니다. iOS 와 React Native SDK 를 개발하고 있어요.
딜라이트룸에 합류한지 1년이 지났는데요. 첫 출근 하고 가장 눈에 띄었던 것은 책상위에 놓여있는 꺼져버린 맥 스튜디오 였어요. 24코어 CPU, 60코어 GPU, 32코어 Neural Engine … 하여튼 최고스펙이더라고요. CI/CD 머신으로 사용하기 위해 구입했는데 사용되지 못하고 있었어요. 너무 아까웠습니다.
들어가며
CI/CD 부터 시작해 Slack bot 을 이용한 유저티켓 분석 시스템을 만들기 까지 딜라이트룸에 합류하여 진행한 재밌는 작업들을 공유해 볼까 해요. 몇 편의 글로 나올지 모르겠지만 마지막 글을 쓴 후에는 자동화 코드를 공유하겠습니다.
CI/CD 환경 구축
이 머신을 이용해 CI/CD 환경을 구축했습니다. Self-hosted github actions 를 사용했고 fastlane 을 사용했어요.
pr_check, firebase, testflight, appstore deploy 등 다양한 작업을 추가했어요.
깃헙 액션은 너무 잘되어 있어서 조금만 시간을 투자하면 안정적인 CI/CD를 구축할 수 있었어요. runs-on 에 self-hosted 를 추가해주면 됩니다.
jobs:
build:
runs-on: [self-hosted, macOS]
...
프로젝트에는 다양한 github actions 가 추가되고 삭제 되면서 진화하고 있어요.
어떻게 깃헙 액션을 트리거 할 것인가?
배포 트리거 방식이 고민이었는데요. 처음에는 터미널에서 gh workflow run 을 사용 했어요. 기존에는 개인 장비에서 돌리던 배포를 CI 머신으로 위임만 한거였죠. 하지만 불편했습니다. 특히 배포 공유가 불편했습니다. Shortcuts 앱도 사용해 보았는데 Siri로도 배포할 수 있어서 그럴듯 했지만 생산성 향상에 도움이 되는 방법은 아니었어요. Slack 에서 배포하고 상태를 모니터링하고 결과를 공유할 수 있으면 좋겠다고 생각했어요.
그래서 Slack bot 을 만들게 되었습니다. 이름은 Rocket 🚀 이에요. 배포하고 싶은 브랜치, 버전, 태그하고 싶은 멤버를 선택 할 수 있고 배포하면 그 후에는 배포과정을 모두 확인 할 수 있고 모든 프로세스가 자동으로 진행됩니다.
fastlane 을 사용해서 앱스토어 심사제출, 배포까지 모두 자동화 했어요. App Store Connect API 를 이용해서 앱 리뷰 상태, 배포 비율까지 모니터링 됩니다. 모든 정보를 한곳에서 빠르게 접근 할 수 있도록 했어요.
Slack bot 이 하는 다양한 작업들
Open AI api 를 사용해 유저 피드백을 분석 요약하고 슬랙채널로 전송하는 기능도 추가 되었어요. Function calling API 를 이용해 DB query 를 자연어로 할 수 있도록 했고요.
슬랙봇 기술 스택
서버는 Cloudflare worker 를 사용했어요. 언어는 typescript 를 사용했습니다. Zendesk, AppStore Connect API, ChatGPT API 를 사용하고 있고요. Cloudflare 의 D1 DB를 사용합니다.
다음 글
다음 글에서는 상세한 구현 가이드를 차근 차근 공유해 볼게요.
⏰ 딜라이트룸에서 알라미와 함께 아침을 바꿀 분들을 모십니다 🙌
- 딜라이트룸 채용 공고 살펴보기 ⏰
(+ 여기서 지원하면 입사 축하금 100만원💸)