수동 혼돈에서 워크플로우 엔지니어링으로: 로컬‑퍼스트 AI 자동화 파이프라인 구축 (그리고 Gemini와 같은 클라우드 LLM 재고)
Source: Dev.to

이 글은 Built with Google Gemini: Writing Challenge에 제출된 작품입니다.
Google Gemini로 만든 것
지난 몇 달 동안 매일 LeetCode 연습 루틴을 유지해 왔습니다. 문제를 푸는 것은 간단했지만, 문서를 관리하는 것은 그렇지 않았습니다. 각 솔루션마다 다음 작업이 필요했습니다:
- 새 파일 만들기
- README 업데이트 (난이도별 정렬)
- 구조화된 설명 작성
- Markdown을 올바르게 포맷팅
- 모든 파일을 GitHub에 푸시
이 과정은 반복적이고 수동적이며 오류가 발생하기 쉬웠습니다.
이를 해결하기 위해 LeetCode AutoSync — 전체 워크플로를 간소화하는 CLI 자동화 도구를 만들었습니다.
What the Tool Does
- 자동 파일 구조화를 통해 로컬에 새로운 솔루션을 추가합니다
- 난이도별로 README 섹션을 업데이트하고 정렬합니다
- LLM을 사용해 구조화된 솔루션 작성물을 생성합니다
- 토큰 사용량 및 성능 지표를 Excel에 기록합니다
- 생산자‑소비자 큐를 이용해 백그라운드 추론을 관리합니다
- 시스템 자원을 해제하기 위해 모델을 정상적으로 종료합니다
Source: …
Gemini가 어디에 들어가는가
이 작업을 진행하면서 Google Gemini와 같은 클라우드 기반 LLM 솔루션을 살펴보았습니다. 특히 다음에 관심이 있었습니다:
- 구조화된 콘텐츠 생성
- 안정적인 지연 시간
- Cloud Run을 통한 배포 가능성
- API 기반 추론 확장성
하지만 비용 문제와 실험 목표 때문에 Ollama와 Mistral을 사용한 로컬‑우선 아키텍처를 선택했습니다.
이 결정 자체가 학습 여정의 일부가 되었으며, 다음과 같은 트레이드오프를 이해하게 되었습니다:
- 로컬 추론 vs. 클라우드 API
- 비용 vs. 확장성
- 지연 시간 vs. 자원 소비
- 인프라 소유권 vs. 편의성
이 프로젝트의 현재 버전은 로컬에 호스팅된 모델을 사용하지만, 아키텍처 설계는 클라우드 LLM API(예: Gemini)가 프롬프트를 구성하고 추론 워크플로를 관리하는 방식에 영향을 받았습니다.
데모
여기 CLI 자동화 도구가 실제로 작동하는 짧은 시연이 있습니다:
🎥
데모 내용:
- CLI를 통해 새로운 솔루션을 인터랙티브하게 추가
- 생산자‑소비자 모델을 사용한 큐 기반 백그라운드 LLM 생성
- 난이도별 자동 README 업데이트
- 구조화된 Markdown 솔루션 생성
- 토큰 사용량 및 성능을 Excel에 로깅
- 스레드 안전 상태 관리
- 큐 완료 후 모델을 우아하게 종료
아키텍처 하이라이트
- 추론을 처리하는 백그라운드 워커 스레드
- 동기화된 작업 큐
- Ollama를 통한 로컬 LLM 추론
- 구조화된 파일 시스템 업데이트
- 저장소 관리를 위한 Git 통합
- 토큰 및 성능 메트릭을 위한 텔레메트리 로깅
Source code and implementation details are available here:
🔗
배운 점
1. 파이썬에서의 동시성
생산자‑소비자 큐 패턴을 구현함:
- 메인 스레드가 생성 작업을 큐에 넣음
- 백그라운드 워커가 LLM 호출을 처리함
- 락을 사용한 스레드 안전 추적
- 레이스 컨디션을 방지하기 위한 우아한 종료 로직
2. 리소스 수명 주기 관리
로컬 LLM을 실행하면 RAM 사용량이 많습니다. 다음을 추가함:
- 큐 모니터링
- 큐가 비면 자동 종료
- 메모리 해제를 위한 명시적인 모델 정지 호출
3. 텔레메트리 및 가시성
시스템을 확장하여 다음을 로그함:
- 프롬프트 토큰
- 응답 토큰
- 총 토큰
- 로드 시간
- 생성 시간
- 초당 토큰 수
이를 통해 다음을 파악함:
- 콜드 로드와 웜 로드 비교
- 처리량 효율
- API 대안에 대한 비용 대리 지표
4. 트레이드오프: 로컬 vs. 클라우드
로컬 모델을 사용하면서 Gemini와 같은 클라우드 서비스가 추상화하는 부분을 이해하게 됨:
- 메모리 관리 불필요
- 수동 수명 주기 제어 불필요
- 잠재적으로 더 나은 일관성
- 확장 가능한 배포 옵션
동시에 로컬 추론을 통해 얻은 것:
- 비용 제어
- 완전한 소유권
- 모델 동작에 대한 깊은 가시성
이러한 트레이드오프 분석은 이 프로젝트에서 가장 가치 있는 부분 중 하나였습니다.
Source: …
Google Gemini Feedback
Gemini를 이 도구에 직접 통합하지는 않았지만, 아키텍처 옵션을 평가하면서 그 생태계와 문서를 살펴보았습니다.
눈에 띄는 점
- 깔끔한 API 설계
- 강력한 구조화된 출력 기능
- Cloud Run과의 통합 가능성
- 인프라스트럭처 부담 감소
더 필요했던 점
- 세부적인 수준의 투명한 토큰 사용량 인사이트
- 명확한 비용 비교 도구
- 성능 벤치마킹에 관한 추가 문서
향후 아이디어
- 로컬 추론을 Gemini API로 교체
- 성능 차이 측정
- Cloud Run을 이용해 도구를 서버리스 서비스로 배포
레포를 확인하고, 도구를 사용해 보거나 로컬‑우선 vs. 클라우드‑우선 AI 워크플로에 대한 의견을 자유롭게 공유해주세요!
클라우드 기반 서비스
다음 단계
이 프로젝트는 워크플로 자동화로 시작했지만, 더 깊은 것으로 발전했습니다:
- LLM 시스템 설계 이해
- 동시성 패턴 학습
- 성능 지표 측정
- 인프라 엔지니어처럼 사고하기
다음 목표는 다음과 같습니다:
- 다중 모델 비교 지원 추가
- 배포 옵션 탐색
- 구조화된 로깅 통합
- 클라우드 호스팅 추론 서비스 실험
이 프로젝트는 내 LeetCode 연습을 수동적인 혼란에서 엔지니어링된 워크플로로 전환시켰으며, 더 중요한 것은 AI 시스템에 대한 사고 방식을 변화시켰습니다.
읽어 주셔서 감사합니다 🚀
