피드로 돌아가기
One EXE. No Python. No Docker. 120 Windows automation tools written in Go.
Dev.toDev.to
Infrastructure

CGO 없는 Pure Go 기반 27MB 단일 EXE 윈도우 자동화 프레임워크 구현

One EXE. No Python. No Docker. 120 Windows automation tools written in Go.

DJ Kruger2026년 6월 30일4advanced

Context

Python의 복잡한 의존성 관리와 Docker 기반 배포의 무거움으로 인한 배포 효율성 저하 문제 발생. 기존 COM 바인딩 라이브러리의 의존성을 제거하여 단일 실행 파일로 동작하는 경량화된 시스템 설계 필요성 대두.

Technical Solution

  • syscall.SyscallN을 이용한 Raw COM/WinRT vtable dispatch 구현으로 CGO 및 외부 바인딩 라이브러리 의존성 완전 제거
  • Template Matching, ONNX YOLO, WinRT OCR로 이어지는 3단계 Cascade 구조를 통한 UI 요소 인식 정밀도 확보
  • SQLite 기반의 Bayesian priors 설계를 통해 별도 ML 프레임워크 없이 UI 요소의 공간적 z-score 및 빈도 분포 관리
  • Pure Go로 직접 구현한 NCC(Normalized Cross Correlation) 알고리즘으로 OpenCV 의존성 없이 이미지 매칭 수행
  • 120개의 MCP(Model Context Protocol) 도구를 통합하여 LLM이 OS 제어권(마우스, 키보드, 윈도우 관리)을 직접 갖는 인터페이스 구축

Impact

  • Native WinRT COM 활용을 통한 PowerShell 대비 OCR 속도 2~8배 향상
  • 외부 런타임 및 컨테이너 없이 27MB 단일 EXE 파일로 배포 최적화
  • 14,000라인 이상의 Pure Go 코드 작성을 통한 제로 디펜던시 달성

Key Takeaway

추상화된 라이브러리 대신 OS SDK 헤더 기반의 Raw System Call을 직접 제어함으로써 런타임 오버헤드를 최소화하고 배포 복잡성을 획기적으로 낮춘 저수준 최적화 사례


- 배포 환경의 제약이 클 경우 CGO나 외부 Wrapper 대신 OS 레벨의 vtable dispatch 직접 구현 검토 - ML 모델의 무거운 추론 과정 전 단계에 Rule-based Template Matching을 배치하여 불필요한 연산 비용 절감 - 상태 저장 및 간단한 통계 분석이 필요한 경우 외부 DB 대신 SQLite를 활용한 Bayesian 확률 모델 적용 고려

원문 읽기