Alchemy - 순수 TypeScript로 구현된 임베디드 IaC 라이브러리
(github.com/sam-goodwin)- Terraform처럼 인프라 리소스 생성·변경·삭제를 코드로 관리할 수 있는 IaC(Infrastructure as Code) 라이브러리
- Terraform/Pulumi와 달리 순수 ESM 기반 TypeScript로만 작성됨
- 별도 도구·런타임·의존성 없이 브라우저·서버리스 등 어디서나 리소스 자동 관리를 지원
- 모든 인프라 리소스는 async 함수 한개로 모델링, 복잡한 추상화 없이 JS 코드만으로 CRUD 자동화 가능함
- 제로 의존성/서비스 및 상태 파일 로컬 저장 등으로 단순성과 투명성이 뛰어나며, 코드 구조나 상태 저장 위치에 대한 제한이 거의 없음
- AI 활용을 적극 지원, LLM 기반 코드 생성·수정이 쉬워, 기존 프로바이더 대기 없이 직접 리소스 구현 가능함
- 단순한 워크플로와 높은 이식성 제공
그러게요....
저도 궁금해서 claude 에게 물어본 내용 공유드립니다만... 공감은 잘 안되네요
TypeScript 사용에 대한 장단점을 비판적으로 분석하겠습니다:
장점(Pros):
- 개발 생태계 통합
- 대부분의 예제가 웹 프레임워크(React, Vue, Svelte 등) 중심
- 프론트엔드 개발자들의 진입장벽 최소화
- npm 생태계 활용 가능
- 기술적 이점
- 타입 안전성으로 인프라 구성 오류 사전 방지
- ESM 네이티브 지원으로 모듈 시스템 현대화
- 비동기 처리(async/await) 자연스러운 지원
- 확장성
- "Extensible" 특징 강조 - 함수 기반 리소스 확장 용이
- AI 통합 용이성 ("AI-first" 강조)
- 브라우저부터 서버리스까지 다양한 런타임 지원
단점(Cons):
- 성능 우려
- TypeScript는 컴파일 과정 필요
- 메모리 사용량이 Go나 Rust 같은 시스템 언어보다 높음
- 대규모 인프라 관리 시 성능 병목 가능성
- 보안 리스크
- JavaScript/TypeScript의 동적 특성으로 인한 런타임 오류 가능성
-
eval()
같은 위험한 기능 접근 가능 - 의존성 관리의 복잡성 (비록 "zero dependencies"를 주장하지만, 실제 사용 시 의존성 추가 가능성 높음)
- 기술적 한계
- 저수준 시스템 접근의 제한
- 가비지 컬렉션으로 인한 예측 불가능한 지연
- 네이티브 바이너리 생성의 어려움
- 생태계 우려
- IaC 도구로서는 상대적으로 미성숙
- Terraform, Pulumi 대비 커뮤니티/생태계 규모 작음
- 엔터프라이즈급 지원/검증 부족
- 아키텍처 고려사항
- "No strong opinions"가 오히려 단점이 될 수 있음 (모범 사례 부재)
- 상태 관리의 분산 위험 ("store state anywhere")
- 로컬 상태 파일 관리의 복잡성
결론적으로, TypeScript 선택은 웹 개발자 친화적 환경 구축에는 적합하나, 엔터프라이즈급 IaC 도구로서는 아직 검증이 필요해 보입니다.