make.ts, 반복적인 쉘 명령어를 효율적으로 관리하는 방법!
반복적인 쉘 명령어(Shell Commands)를 파일에 기록하여 관리하는 make.ts 패턴 소개
2D 텍스트 편집기(2D Text Editor)를 활용하여 명령어 작성 및 수정의 편의성 증대
Deno 및 TypeScript를 사용하여 멀티 프로세스 환경에서의 스크립팅 용이성 강조
커뮤니티에서는 Emacs, Neovim, Org mode 등 다양한 에디터 및 도구 활용 사례 공유
make.ts 패턴의 핵심: 대화형 스크립팅
저자는 반복적인 벤치마크 및 실험을 위해 대화형 스크립팅(Interactive Scripting) 방식을 제안한다. 즉, 터미널에 직접 명령어를 입력하는 대신, make.ts 파일에 명령어를 작성하고 실행하는 방식이다. 이를 통해 명령어의 가독성을 높이고, 2D 텍스트 편집기의 강력한 기능을 활용하여 수정 및 관리를 용이하게 한다. 특히, 여러 명령어를 순차적으로 실행해야 하는 경우, && 연산자를 사용하는 대신 make.ts 파일 내에서 관리함으로써 가독성을 향상시킨다.
Deno 및 TypeScript를 활용한 스크립팅 환경
저자는 Deno와 TypeScript를 스크립팅 언어로 선택하여, 간편한 설정과 멀티 프로세스 지원을 강조한다. Dax 라이브러리를 통해 서브 프로세스(Subprocess)를 쉽게 실행하고, async/await를 사용하여 여러 프로세스를 효율적으로 관리한다. 또한, TypeScript의 구조적 타이핑(Structural Typing)을 통해 코드 완성 및 오류 검사를 지원하면서도, 유연성을 유지하여 문제 해결에 집중할 수 있도록 한다.
실제 사례를 통한 make.ts 적용
저자는 TigerBeetle 클러스터의 장애 복구 벤치마크를 수행하는 과정을 예시로 제시하며, make.ts의 실용성을 보여준다. 크로스 컴파일(Cross-compiling), 파일 동기화, 클러스터 실행, 벤치마크 로드 등의 과정을 스크립트로 작성하여, 반복적인 작업을 자동화하고, 실험 결과를 체계적으로 관리한다. 또한, 쉘 스크립트(Shell Script)를 작성하는 것보다 훨씬 간결하고 유지보수가 용이하다는 점을 강조한다.
커뮤니티의 다양한 스크립팅 접근 방식
커뮤니티에서는 make.ts와 유사한 기능을 제공하는 다양한 도구 및 편집기 활용 사례가 공유되었다. Emacs의 키 바인딩, Neovim의 기능, Org mode의 코드 블록 등, 각자의 작업 환경에 맞는 스크립팅 방식을 소개한다. 또한, `just`와 같은 빌드 도구, `nushell` 또는 Elixir Livebook과 같은 대안, 그리고 `.scratch` 폴더를 활용한 임시 파일 관리 등, 다양한 접근 방식이 논의되었다.