새 맥북을 받았을 때 가장 먼저 하는 일
개발자라면 누구나 공감하는 상황이 있어요. 새 노트북을 받거나 OS를 밀고 새로 깔았을 때, 그 끝없는 개발 환경 세팅 말이에요. Homebrew 설치하고, 터미널 설정하고, Git 설정하고, 각종 CLI 도구 깔고, dotfile 심볼릭 링크 걸고… 매번 "이번엔 꼭 자동화해야지" 하면서도 결국 손으로 하나하나 하게 되거든요.
이런 문제를 해결하기 위해 지금까지 다양한 도구들이 나왔는데요. Ansible, chezmoi, Nix 같은 것들이 대표적이에요. 그런데 이런 도구들이 너무 복잡하다고 느끼는 분들을 위해, 아주 심플한 접근법을 제안하는 프로젝트가 등장했어요. 바로 Home Maker인데요, 핵심 아이디어가 기발해요. 우리가 이미 잘 알고 있는 Makefile을 써서 개발 환경을 선언적으로 관리하자는 거예요.
Makefile이 뭔데, 이걸로 환경 세팅을?
Makefile이 뭔지 잠깐 짚고 넘어갈게요. Makefile은 원래 C/C++ 프로그램을 컴파일할 때 쓰던 빌드 자동화 도구예요. "이 파일이 바뀌면 이 명령어를 실행해라"는 규칙을 적어두는 파일인데요. 핵심은 의존성 관리와 멱등성(idempotency)이에요. 멱등성이란, 같은 작업을 여러 번 실행해도 결과가 달라지지 않는다는 뜻이에요. 이미 설치된 도구는 다시 설치하지 않고 넘어가는 거죠.
Home Maker는 이 특성을 환경 세팅에 그대로 활용해요. 예를 들어 이런 식이에요. Makefile에 "vim 설정이 필요하다"고 적으면, make는 해당 설정 파일이 이미 있는지 확인하고, 없으면 설치하고, 있으면 건너뛰는 거예요. 쉘 스크립트처럼 매번 전체를 다시 실행하는 게 아니라, 변경된 부분만 골라서 처리하는 거죠.
어떻게 동작하는지 좀 더 자세히 볼게요
Home Maker의 구조는 정말 단순해요. 홈 디렉토리에 Makefile을 하나 두고, 각 개발 도구나 설정을 하나의 타겟(target)으로 정의하는 방식이에요. 타겟이란 Makefile에서 "하나의 작업 단위"를 말하는 건데요, 예를 들어 neovim, tmux, git-config 같은 이름을 붙이는 거예요.
각 타겟은 자기가 필요로 하는 다른 타겟을 의존성으로 선언할 수 있어요. "neovim 설정을 하려면 먼저 neovim이 설치되어 있어야 한다"는 식으로요. 그러면 make가 알아서 순서를 맞춰서 실행해줘요. 이게 Ansible의 role이나 Nix의 모듈과 비슷한 역할을 하는데, 별도의 문법이나 도구를 배울 필요 없이 Makefile 문법만 알면 되는 거예요.
또 하나 중요한 건, dotfile 관리예요. dotfile이란 .bashrc, .vimrc, .gitconfig 같은 점(.)으로 시작하는 설정 파일들을 말하는데요. 이런 파일들을 Git 저장소에 모아두고, 심볼릭 링크(바로가기 같은 것)로 홈 디렉토리에 연결하는 패턴이 일반적이에요. Home Maker에서는 이 심볼릭 링크 생성도 Makefile 타겟으로 관리해요.
기존 도구들과 비교하면 어떤 차이가 있을까요
개발 환경 자동화 도구는 이미 꽤 많아요. 대표적인 것들을 비교해볼게요.
Ansible은 가장 강력한 선택지 중 하나예요. 서버 프로비저닝용으로 만들어졌지만 로컬 환경 세팅에도 쓸 수 있거든요. 문제는 YAML 플레이북 문법을 배워야 하고, Python 의존성이 있고, 개인 개발 환경 치고는 너무 무겁다는 점이에요.
chezmoi는 dotfile 관리 전용 도구인데, 템플릿 기능이나 시크릿 관리 같은 고급 기능이 있어요. 대신 chezmoi만의 개념과 명령어를 배워야 해요.
Nix는 최근 인기가 폭발적인데요, 완전한 재현 가능성을 보장하는 대신 학습 곡선이 매우 가파르죠. Nix 언어 자체가 하나의 프로그래밍 언어라서 진입 장벽이 높아요.
Home Maker는 이런 도구들에 비해 확실히 기능이 적어요. 하지만 그게 오히려 장점이에요. Makefile은 대부분의 개발자가 이미 알고 있고, macOS나 Linux에 기본으로 포함된 make만 있으면 바로 쓸 수 있거든요. 별도의 도구를 설치할 필요도 없고, 새로운 문법을 배울 필요도 없어요. "닭 잡는 데 소 잡는 칼 쓸 필요 없다"는 철학이죠.
한국 개발자에게 주는 시사점
사실 개발 환경 자동화는 한국 개발 문화에서 좀 과소평가되는 영역이에요. 특히 회사에서 새 입사자 온보딩할 때, "위키에 적힌 대로 따라하세요"라고 하는 곳이 아직도 많거든요. 그 위키가 6개월 전 내용이라 안 되는 것도 많고요.
Home Maker 같은 접근법은 개인용으로 시작하기 딱 좋아요. 자기 dotfile을 Git으로 관리하면서 Makefile 하나에 환경 세팅을 정리해두면, 나중에 맥북을 바꿔도 make all 한 번이면 끝나는 거예요. 팀 차원에서는 프로젝트 저장소에 Makefile.dev 같은 걸 두고, 개발에 필요한 도구 설치를 자동화할 수도 있겠죠.
꼭 Home Maker를 그대로 쓰지 않더라도, "Makefile로 환경을 선언적으로 관리한다"는 아이디어 자체가 가져갈 만한 인사이트예요. 복잡한 도구 없이 이미 알고 있는 기술로 문제를 해결하는 실용적인 접근이니까요.
정리
핵심 한 줄: 개발 환경 세팅, 거창한 도구 없이 Makefile 하나로도 충분히 자동화할 수 있다.
여러분은 개발 환경을 어떻게 관리하고 계세요? 혹시 dotfile을 Git으로 관리하고 계신 분이 있다면, 어떤 방식을 쓰고 계신지 궁금해요.
🔗 출처: Hacker News
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공