자동화 프로세스
빌드와 배포부터 크래시 대응까지, 반복되는 개발 과정을 자동화합니다.
앱 빌드·배포
Mattermost 슬래시 명령으로 모듈, 빌드 유형, 환경을 지정해 Jenkins 빌드를 실행하고 Firebase로 배포합니다.
배포 태그 관리
배포 버전 태그를 자동으로 남기고 관리합니다.
유닛 테스트 자동 실행
빌드와 함께 유닛 테스트를 돌려 결과를 확인합니다.
백엔드·프론트엔드 배포
서버와 웹 배포를 파이프라인으로 처리합니다.
빌드 결과 알림
빌드 결과를 사실 데이터로 조립해 정책과 폴백 순서에 따라 Mattermost 등으로 알립니다.
빌드 실패 분석·수정
실패 로그를 로컬 LLM이 분석하고 수정을 시도합니다.
크래시 감지·알림·수정
Crashlytics API를 주기적으로 조회해 신규·재발·급증 크래시를 Mattermost로 알립니다. 앱 생성 시 Firebase 프로젝트와 알림 연결도 함께 처리합니다. 원인 분석과 수정 PR 초안 생성은 개발 중입니다.
UI 테스트 자동화
화면 테스트를 파이프라인에서 자동으로 실행합니다.
만들고 운영하는 것
업무 밖에서 구성하고 운영하는 개발 환경과 AI 자동화입니다.
Jenkins CI/CD
Docker로 띄운 Jenkins에서 앱 빌드부터 배포, 검증, 알림까지 하나의 파이프라인으로 처리합니다. 파이프라인 코드도 앱 코드처럼 층을 나눠 설계했습니다.
- Checkout, Setup, Lint(minSdk 하위 호환 게이트), 빌드, Firebase 배포, 산출물 보관 단계로 구성
- 순수 정책 층, 파일 어댑터 층, 부수효과 서비스 층으로 분리해 Jenkins 없이도 정책을 단위 테스트
- 배포와 CI가 같은 공용 모듈을 쓰도록 정의를 하나로 묶고, 그 계약을 테스트로 고정
- 값과 시크릿 위치는 선언형 설정 한 곳이 소유하고, 서명 정보는 자격 증명 바인딩으로만 주입
- 알림은 사실(facts)을 먼저 조립한 뒤 발송 정책과 폴백 순서에 따라 전달
- 백엔드·프론트엔드 배포 파이프라인을 같은 구조로 운영하고, UI 테스트 단계는 추가 예정
ChatOps (Mattermost 연동)
메신저를 개발 작업의 입구로 씁니다. 슬래시 명령으로 빌드를 요청하고, 빌드·배포·리뷰·수익 같은 이벤트를 한 채널에서 받습니다.
- /deploy 명령으로 앱 모듈, 빌드 유형, 환경을 지정해 Jenkins 빌드를 실행
- Firebase App Distribution, GitHub 이벤트 수신 엔드포인트, Crashlytics 크래시 주기 조회 알림
- Google Play 리뷰와 AdMob 수익은 주기적으로 조회해 채널에 요약
- Claude와 Copilot에 연결한 대화형 봇 (이벤트 스트림 수신)
- Mattermost 메시지를 Claude Code 세션과 주고받는 MCP 채널을 구성하고, 도구 승인 요청을 DM으로 중계
홈서버
하나의 리버스 프록시 뒤에 백엔드 API, 봇, CI, 메신저, 웹 대시보드를 경로별로 나눠 올리고, 외부에서도 접속할 수 있게 운영합니다.
- 정적 프론트엔드 서빙과 API 프록시를 한 서버에서 처리하고 WebSocket 업그레이드를 지원
- 메신저·웹훅 서비스·봇·프록시 설정을 하나의 비공개 저장소로 관리하고, 스크립트 한 번으로 새 PC에 복원 (도구 설치, 메신저, 빌드, 프록시, 프로세스 관리 순서, 여러 번 실행해도 안전)
- 프록시 설정 적용 시 검증에 실패하면 이전 설정으로 자동 복구
- 메신저 DB 백업·복원 스크립트와 로그인 시 자동 시작 구성, 프로세스는 pm2로 관리
로컬 LLM
gpt-oss, gemma, qwen, deepseek-coder 등 여러 모델을 로컬에서 돌려 보고, 작업 성격에 맞는 모델을 고릅니다.
- 긴 로그와 코드를 다루도록 컨텍스트를 늘린 모델을 따로 구성
- Jenkins 실패 로그 분석과 수정 시도, 단순 작업을 서브 에이전트에 위임하는 용도로 사용
- 예정: 유닛·UI 테스트와 헬스 체크를 24시간 반복 실행
AI 개발 하네스
Claude Code, Codex, Copilot이 같은 스킬과 에이전트를 공유하도록 설계한 개발 하네스입니다. 모델에 맡길 일과 스크립트가 할 일을 나누는 것이 핵심 원칙입니다.
- 결정적인 작업(파싱, 집계, 규칙 검증)은 모델이 아니라 스크립트가 수행
- 에이전트 위임은 근거를 선언한 경우에만 허용하고, 선언이 없으면 린트가 막음
- 판단 수준(티어)과 지불 예산을 다른 축으로 분리해 예산이 바뀌어도 에이전트 파일은 그대로
- 푸시 전 검증 게이트 8단계: 구조, 티어 정합, 버전 동기화, 매니페스트, 스크립트 문법, 단위 테스트 등
- 런타임 가드: 과금 경로 차단, 커밋 메시지 규칙, 편집 직후 정적 검사, 작업 이력 기록
- 스킬·에이전트·스크립트의 동작을 별도 평가(evals)와 하네스 자체 테스트로 확인
앱 개발 도구 체인
앱 6개를 모노레포로 만들면서, 반복되는 일과 실수하기 쉬운 규칙을 도구로 옮겼습니다.
- 모듈과 앱 스캐폴딩 스크립트가 코드, 테스트, 문서, 모듈 등록까지 한 번에 생성
- 의존 방향, 하드코딩 문자열, 문서 계약, 문서 속 심볼 드리프트를 검사하는 스크립트
- testTag 규칙과 자체 구현한 Appium E2E 러너로 화면 흐름 테스트
- 변경된 모듈만 골라 테스트하고 결과와 커버리지를 집계
- 공개용 문서를 소스 문서에서 추려 동기화하는 스크립트