@talkit의 AI 번역기 개발기: MACBOOK PRO 발열 잡고, API로 스마트하게 로깅하기
AI 번역기 고도화: API 기반 로깅 전환 및 하드웨어 보호 로직 적용
안녕하세요, 가야태자 @talkit 입니다. 오늘은 그동안 개발해오던 AI 뉴스 번역기를 대대적으로 리팩토링하고, 리모트 환경 배포 및 실 하드웨어 부하 조절 로직을 적용한 과정을 기록합니다.
1. 배경: 왜 API 기반인가?
기존 번역기의 진화 과정은 다음과 같습니다.
- 초기 버전: MySQL 서버에 직접 접속하여 번역될 때까지 무한 루프.
- 두 번째 버전: MySQL에서 최신 기사 1건만 가져오도록 개선.
- 최신 버전: 외부 도메인 API를 통해 기사를 1건씩 수신.
제가 맥북을 항상 휴대하며 외부에서 작업하는데, 기사 수집기는 매시간 외신을 수집합니다. 외부 환경에서도 원활하게 번역기를 돌리기 위해 외부 도메인을 할당하고 API 기반으로 데이터를 수신하도록 변경했습니다.
또한, 토큰 사용량에 따른 비용을 절감하기 위해 로깅 시스템을 추가했는데, 주말에 집에서 작업하다 보니 실수로 MySQL 버전 모듈을 사용하고 있었습니다. 오늘 출근 후 이 사실을 인지하고, 즉시 API 버전으로 수정하여 로깅 모듈 역시 외부에서 접근 가능하도록 변경했습니다.
2. 주요 작업 내역
오늘 하루 동안 진행된 주요 커밋 히스토리를 요약하면 다음과 같습니다.
- AI 토큰 로깅 API 전환: 번역기(
API_translator.py) 내 DB 직접 접속 로직을 제거하고, 백엔드의POST /api/logs/ai-usage엔드포인트를 호출하도록 변경했습니다. - 리모트 배포 자동화 (Jenkins &
tjks): 초기 쉘 스크립트 배포 방식에서 벗어나, Jenkins와 Docker Compose를 이용해 리모트 리눅스 서버에 백엔드/프런트엔드를 배포했습니다. 특히, 현재 개인 프로젝트로 개발 중인tjks(젠킨스 CLI 도구)의 초기 결과물을 실전에 적용하며 배포 테스트를 진행했습니다. - 노트북 발열 해결 (Cooling Logic): M4 Max 맥북에서 로컬 LLM(MLX/Ollama) 구동 시 발생하는 심각한 발열을 제어하기 위해 단계별 1분 휴식(Cooldown) 로직을 삽입했습니다. 또한, Ollama를 사용하지 않을 때는 프로세스를 종료하여 메모리 확보 및 발열을 제어합니다.
- 번역 품질 및 파싱 보강: 간혹 번역 본문에 영문 원본이 섞여 나오는 프롬프트 혼선 이슈를 해결하기 위해 예외 처리 코드를 강화하고, 파싱 실패 시 원시 응답(Raw Response)을 로그에 남기도록 개선했습니다.
3. 핵심 코드 변화: 노트북 발열 방지 (Cooling Logic)
가장 체감되는 변화는 하드웨어 보호를 위한 '발열 해소' 로직입니다. GPU 부하가 집중되는 '전문 번역'과 '라인 분석' 단계 사이에 강제 휴식 시간을 두어 장치에 무리가 가지 않도록 했습니다.
# [API_translator.py - 발열 방어 로직]
from datetime import datetime
import time
# ... (기사 수신 및 번역 로직) ...
# 1. 전문 번역 완료 후 1분간 대기 (GPU 휴식)
print(f"[{datetime.now().strftime('%H:%M:%S')}] -> [Cooling] 전문 번역 완료. 분석 시작 전 1분간 휴식합니다...")
time.sleep(60)
# ... (분석 및 요약 작업 수행) ...
# 2. 모든 작업 완료 후 다음 큐 확인 전 다시 1분 휴식
print(f"[{datetime.now().strftime('%H:%M:%S')}] -> [Cooling] 전체 분석 완료. 다음 기사 수신 전 1분간 최종 휴식...")
time.sleep(60)
4. 실시간 로그 출력 강화
로그 출력 메시지를 명확하게 수정하여 운영 가시성을 높였습니다.
- 기존:
...토큰 로그가 저장되었습니다. - 변경:
...토큰 로그가 API 서버(https://task.whd.kr:5173/api/logs/ai-usage)에 저장되었습니다.
AI가 자동으로 생성한 모호한 로그 대신, 어떤 API 엔드포인트를 이용했는지 명확히 표시하도록 개선했습니다.
5. 마치며
이번 고도화 작업을 통해 번역 시스템은 단순한 로컬 스크립트 수준을 넘어, API 기반 인프라를 갖춘 안정적인 서비스 모델로 진화했습니다. 특히 맥북의 발열 상태 등 하드웨어 환경에 맞춰 소프트웨어 로직을 유연하게 조정한 점이 오늘 작업의 핵심입니다.
현재 준비 중인 Global IT News 서비스의 기본 아키텍처는 거의 완성된 것 같습니다. UI/UX를 조금 더 개선한 후 정식으로 제품을 선보일 예정입니다.
오늘은 발열 문제 해결에 집중하느라 초대장 발송 루틴을 만들지 못했네요. 내일은 이 작업을 진행하여 진척되는 대로 초대장을 배포하도록 하겠습니다.
감사합니다.

효율과 발열을 동시에 잡는 게 참 어려울 거 같은데^^
0.00 SBD,
0.96 STEEM,
0.96 SP
[booming-kr-auto]
보팅 완료했습니다 🙌
어제 보다 발열이 많이 줄었습니다.
어제는 손가락이 뜨거웠는데 오늘은 미지근 하네요 ㅎㅎㅎ
Upvoted! Thank you for supporting witness @jswit.
🎉 Congratulations!
Your post has been upvoted by the SteemX Team! 🚀
SteemX is a modern, user-friendly and powerful platform built for the Steem community.
🔗 Visit us: www.steemx.org
✅ Support our work — Vote for our witness: bountyking5
이렇게 뚝딱뚝딱 하시는 거 보면 신기합니다^^
저혼자만 하면 이렇게 빨리 개발을 할수가 없을 껀데 에이아이가 도와주니 신나게 개발 중입니다.
감사합니다.