피드로 돌아가기
Why I Replaced a Node.js Service with 30 Lines of Bash — and When You Shouldn't
Dev.toDev.to
DevOps

Node.js 런타임 제거 및 30줄의 Bash 전환을 통한 유지보수 비용 제로화

Why I Replaced a Node.js Service with 30 Lines of Bash — and When You Shouldn't

tkpdx012026년 6월 14일3intermediate

Context

매일 특정 URL 목록을 Google 및 Bing에 알리는 단순 자동화 작업 수행. 초기 Node.js 기반 설계는 과도한 transitive dependencies와 런타임 의존성으로 인해 마이너 버전 업데이트 시 인증 헬퍼 라이브러리의 Signature 변경으로 인한 시스템 장애 발생.

Technical Solution

  • SDK 의존성을 제거하고 HTTP 표준 프로토콜 기반의 직접 통신 구조로 전환
  • openssl dgst -sha256 -sign 활용을 통한 Google 서비스 계정 JWT 생성 로직 구현
  • curl을 통한 액세스 토큰 교환 및 IndexNow API POST 요청으로 통신 단순화
  • jq를 이용한 최소한의 JSON 파싱으로 데이터 처리 파이프라인 구축
  • 외부 라이브러리 및 런타임 패치 제거를 통한 Attack Surface 최소화 설계
  • 표준 출력 기반의 HTTP 상태 코드 로그 확인으로 디버깅 가시성 확보

- 상태 관리(Stateful) 및 복잡한 분기 처리가 없는 I/O-bound 작업인지 확인 - Unit Test 요구사항이 낮고 단일 목적의 안정적인 스케줄링 작업인지 검토 - 외부 SDK의 추상화 계층이 불필요한 유지보수 비용을 발생시키는지 분석 - 복잡한 데이터 파싱이나 정규 표현식 사용 빈도가 낮은지 확인

원문 읽기