애플제품/MacBook

MacBook으로 개발 환경 세팅 1년 — 윈도우와 진짜 다른 점

하늘011 2026. 8. 22. 11:37
 
🍎 Apple 제품 장기 사용기  ·  개발 환경 비교

MacBook으로 개발 환경 세팅 1년 —
윈도우와 진짜 다른 점

Windows에서 3년, MacBook M2 Pro로 넘어와서 1년. "유닉스 기반이라 개발이 편하다"는 말이 맞는지 틀린지, 직접 겪으며 기록했다. 좋은 것만 쓰지 않는다.

🟢 macOS 개발 환경 1년 실사용 🔵 Windows 3년 경험 비교 기준 🟡 Next.js · TypeScript · Node 스택 📅 2023.10 – 2024.10

Windows에서 Next.js 개발을 3년 했다. WSL2, PowerShell, Git Bash를 번갈아 쓰면서 "이게 맞나?" 싶은 순간들이 쌓였다. MacBook M2 Pro로 갈아타고 1년이 지났다. "맥은 개발 환경이 좋다"는 말이 진짜인지, 과장인지, 지금 기억할 수 있는 것들을 다 기록한다.

좋은 것만 쓰지 않는다. 어려웠던 것, 예상과 달랐던 것, 아직도 Windows가 나은 부분도 같이 쓴다.

MacBook으로 개발 환경 세팅 1년
MacBook으로 개발 환경 세팅 1년
3
Mac 이전
Windows 개발 경험
1
MacBook M2 Pro
실사용 기간
M2 Pro
사용 칩셋
12코어 CPU
Next.js
메인 개발
스택 기준

내 개발 스택 — 비교의 기준

이 글의 비교는 내 스택 기준이다. 다른 스택(Python ML, iOS 네이티브, Java 등)은 경험이 없으니 그쪽에 대한 이야기는 하지 않는다.

프레임워크
 
Next.js 14 App Router
 
React 18
 
TypeScript 5
백엔드·DB
 
Supabase (PostgreSQL)
 
Prisma ORM
 
Node.js 20
도구·인프라
 
Vercel (배포)
 
Turborepo
 
Docker (가끔)
에디터·터미널
 
VS Code + Cursor
 
iTerm2 + Zsh + Oh My Zsh
 
GitHub Desktop

첫날 세팅 — Windows와 가장 다른 출발점

MacBook을 처음 켜고 개발 환경을 세팅하는 데 걸린 시간은 약 2시간 반이었다. Windows에서 WSL2 세팅에 반나절을 쓰던 경험과 비교하면 체감이 달랐다. 가장 큰 이유는 Homebrew다.

# 1. Homebrew 설치 — macOS 패키지 매니저
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
==> Installation successful!

# 2. 개발 도구 한 번에 설치
$ brew install git node nvm pnpm wget curl
$ brew install --cask visual-studio-code iterm2 docker

# 3. Oh My Zsh 세팅
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
✓ Oh My Zsh installed!

# Windows WSL2에서 같은 작업을 하면...
# wsl --install, 재부팅, Ubuntu 설정, 권한 문제, PATH 충돌...
# 반나절은 각오해야 한다
💡
Homebrew가 게임 체인저다

macOS에서 Homebrew는 Node.js, Git, Python, Docker 등 거의 모든 개발 도구를 brew install 한 줄로 설치한다. Windows의 winget이 비슷한 역할을 하지만 패키지 수와 안정성에서 아직 차이가 있다. 새 MacBook을 받으면 Brewfile 하나로 전체 환경을 복원할 수 있는 것이 1년 후 가장 만족하는 부분이다.

Mac vs Windows — 개발 환경 항목별 비교

🖥️ 터미널 경험 Mac 압도적 우위
macOS
기본 터미널도 Unix 셸이고, iTerm2 + Zsh + Oh My Zsh 조합이면 더할 나위 없다. 탭 완성, git 브랜치 자동 표시, 플러그인 생태계가 탄탄하다. 파일 시스템 경로가 직관적이고 Unix 명령어가 그대로 동작한다. ls, grep, sed, awk — 모두 별도 설치 없이 작동한다.
VS
Windows
PowerShell, CMD, Git Bash, WSL2 중 어느 것을 써야 하는지 늘 헷갈렸다. WSL2가 가장 Unix에 가깝지만 파일 시스템 경계(Windows ↔ Linux) 이동이 성능을 잡아먹고, 경로 표기 혼용이 스크립트에서 오류를 만들었다. Windows Terminal은 점점 좋아지고 있다.
📦 Node.js / npm 생태계 Mac 실질 우위
macOS
nvm으로 Node 버전 관리가 깔끔하다. npm install이 Windows보다 빠른 경우가 많다 — 특히 native addon이 포함된 패키지는 차이가 명확하다. node_modules 생성 시 심볼릭 링크 처리가 Windows보다 안정적이다. node-gyp 관련 오류를 Mac에서 한 번도 못 봤다.
VS
Windows
node-gyp, native 바이너리 빌드 오류가 Windows에서 자주 발생했다. Visual C++ Build Tools 설치가 필요한 경우도 있었다. 긴 경로명 제한(MAX_PATH)이 node_modules 중첩에서 오류를 만들기도 했다. nvm-windows는 nvm(Mac/Linux용)과 사용법이 약간 다르다.
🌿 Git 워크플로우 체감 차이 크지 않음
macOS
SSH 키 관리가 Keychain과 통합되어 한 번 등록하면 재입력 없이 영구 유지된다. 줄 바꿈(LF)이 기본이라 팀 협업에서 CRLF 충돌 이슈가 없다. git 명령 자동 완성이 Oh My Zsh 기본 제공이다.
VS
Windows
Git for Windows + Git Bash 조합이면 실제 사용에서 큰 불편은 없었다. 다만 줄 바꿈 CRLF 설정을 팀 전체가 통일하지 않으면 PR에서 의미없는 diff가 생긴다. SSH 에이전트 자동 시작 설정이 복잡했다.
🐳 Docker 환경 Windows WSL2 쪽이 나은 경우도
macOS (Apple Silicon)
Docker Desktop이 macOS에서 잘 동작한다. 하지만 Apple Silicon(ARM64)에서 x86_64 이미지 실행 시 Rosetta 에뮬레이션이 필요하고 성능이 떨어진다. 일부 레거시 이미지는 ARM64를 지원하지 않아 오류가 난다. --platform linux/amd64 플래그가 종종 필요하다.
VS
Windows (WSL2)
x86_64 아키텍처라 레거시 Docker 이미지 호환성이 높다. WSL2 백엔드를 쓰면 Docker 컨테이너가 리눅스 환경에서 직접 실행된다. ARM 이미지 호환성 문제가 없고 x86 전용 이미지를 그냥 쓸 수 있다.
⚡ 빌드·컴파일 속도 (M2 Pro 기준) M2 Pro 압도
MacBook M2 Pro
Next.js 빌드 속도가 이전 Windows 노트북(Intel i7 12세대) 대비 약 2배 빠르다. TypeScript 타입 체킹, ESLint, Prisma generate 등 CPU 집약적 작업이 체감이 다르다. 팬이 거의 돌지 않으면서 이 속도가 나온다는 게 인상적이다.
VS
Windows (Intel i7)
같은 작업에서 MacBook보다 느리고 발열이 더 심했다. TypeScript 대형 프로젝트 타입 체킹에서 팬이 돌면서 배터리가 빠르게 닳았다. WSL2 환경에서는 파일 시스템 접근 오버헤드가 추가로 발생해 체감 속도를 더 낮췄다.
🔋 코딩 중 배터리 지속 시간 MacBook 압도적 우위
MacBook M2 Pro
VS Code + Chrome 여러 탭 + 터미널 여러 개 + Next.js dev 서버 실행 중에도 약 10–12시간 사용 가능하다. 카페에서 충전 없이 하루 작업이 실제로 가능하다. 이것이 프리랜서 입장에서 가장 실질적인 장점이었다.
VS
Windows 노트북
동일한 작업 환경에서 4–5시간이 한계였다. 무거운 빌드 작업 중에는 3시간도 안 됐다. 카페 작업 시 항상 충전기를 챙겨야 했고, 자리 선택에 콘센트 여부가 먼저였다.
📱 iOS 빌드 / Safari 테스트 Mac만 가능
macOS
Xcode 시뮬레이터로 iOS Safari 렌더링을 실기기에 가깝게 테스트할 수 있다. 웹 프론트엔드 개발에서 iOS Safari 전용 버그를 잡을 때 시뮬레이터가 결정적이었다. viewport, safe-area, overflow 스크롤 이슈가 시뮬레이터에서 재현됐다.
VS
Windows
Xcode가 macOS 전용이라 iOS 시뮬레이터를 쓸 방법이 없다. BrowserStack 같은 유료 서비스를 써야 하고, 그마저도 시뮬레이터만큼 빠르지 않다. iOS 전용 버그를 재현하기 어려워서 실기기를 갖고 다녀야 했다.
🔐 환경 변수 관리 둘 다 비슷
macOS
.env 파일이 Unix 경로로 일관되게 동작한다. export로 쉘 환경 변수 설정이 직관적이다. macOS Keychain에 민감한 값을 저장하는 방법도 있지만 복잡해서 그냥 .env를 쓴다.
VS
Windows
PowerShell과 CMD, WSL2에서 환경 변수 설정 방법이 각각 다르다. WSL2에서 Windows 호스트 환경 변수에 접근하는 설정이 복잡했다. 같은 .env 파일이 셸에 따라 다르게 읽히는 경험이 있었다.

초기 세팅 순서 — 실제로 진행한 방법

1
30분
Homebrew + 기본 CLI 설치

Homebrew 설치 후 brew install git node nvm pnpm wget curl gh. GitHub CLI(gh)도 이 때 같이 설치했다. Windows에서 각각 개별 설치하던 것이 한 줄로 끝났다.

2
20분
iTerm2 + Oh My Zsh + 플러그인

brew install --cask iterm2 후 Oh My Zsh 설치. zsh-autosuggestions, zsh-syntax-highlighting, git 플러그인 추가. Powerlevel10k 테마 적용. 이후 터미널 자동완성과 컬러링이 작업 속도를 올렸다.

3
15분
SSH 키 생성 + GitHub 연동

ssh-keygen -t ed25519로 키 생성, ssh-add --apple-use-keychain으로 Keychain 등록. gh auth login으로 GitHub CLI 인증 완료. 이후 SSH 비밀번호를 다시 입력한 적이 없다.

4
20분
VS Code + 확장 프로그램 동기화

Settings Sync로 이전 VS Code 설정을 그대로 가져왔다. 확장 프로그램, 키바인딩, 스니펫까지 복원됐다. code . 명령어로 터미널에서 직접 VS Code를 열 수 있게 PATH 설정.

5
25분
Node 버전 관리 + 프로젝트 클론

nvm install 20으로 Node LTS 설치. .nvmrc 파일이 있는 프로젝트는 nvm use로 자동 전환. 프로젝트 클론 후 pnpm install — Windows 대비 native addon 오류 없이 한 번에 완료됐다.

6
10분
macOS 개발자 설정 최적화

Finder에서 숨김 파일 표시(Cmd+Shift+.), 키 반복 속도 최대화(defaults write), Dock 자동 숨기기. 개발 작업에 방해되는 알림 정리. 총 세팅 시간 2시간 반이었다.

실제 쓰는 터미널 명령 — 1년 후 자주 쓰는 것들

# 브랜치 전환 + 의존성 자동 설치 (alias)
$ alias gco='git checkout'
$ alias gcm='git checkout main && pnpm install'

# nvm 버전 자동 전환 (디렉토리 이동 시)
$ echo 'autoload -U add-zsh-hook' >> ~/.zshrc
$ echo 'load-nvmrc() { if [ -f .nvmrc ]; then nvm use; fi }' >> ~/.zshrc
$ echo 'add-zsh-hook chpwd load-nvmrc' >> ~/.zshrc

# Brewfile 로 환경 스냅샷 저장
$ brew bundle dump --file=~/Brewfile
# 새 Mac에서 복원할 때
$ brew bundle install --file=~/Brewfile
==> Installing dependencies from Brewfile

# Supabase 로컬 개발 서버 (Docker 필요)
$ npx supabase start
Started supabase local development setup.
API URL: http://localhost:54321
Studio: http://localhost:54323

예상과 달랐던 것들 — 솔직하게

😤
Apple Silicon ARM64 호환성 — 처음엔 골치아팠다

구형 npm 패키지 중 ARM64 바이너리를 제공하지 않는 것들이 있었다. node-canvas, 일부 이미지 처리 라이브러리가 문제를 일으켰다. --platform linux/amd64로 Docker 이미지를 Rosetta로 돌리거나, arch -x86_64로 명령어를 실행하는 우회책을 쓰기도 했다. 2024년 기준으로는 대부분 해결됐지만, 도입 초기(2023)에는 실제 작업 시간을 잡아먹었다.

⚠️
파일 시스템 대소문자 — 한 번 당하면 기억한다

macOS 기본 파일 시스템은 대소문자를 구분하지 않지만(case-insensitive) Linux 서버는 구분한다. import Button from './button'이 macOS에서는 되고 Vercel 배포 후 Cannot find module './Button' 오류가 났다. 이 문제로 배포 실패를 두 번 겪었다. 파일명 대소문자를 처음부터 일관되게 쓰는 습관이 필수다.

🎮
게임 — 개발 외 용도로 MacBook을 쓰면 안 된다

Steam 게임 상당수가 macOS를 지원하지 않는다. 지원하더라도 Windows 대비 성능이 낮다. 퇴근 후 PC 게임을 MacBook으로 하는 건 포기했다. MacBook은 개발 기기다 — 이걸 처음부터 명확히 하면 실망이 없다. 게임 겸용이 필요하면 Windows 데스크탑을 별도로 두는 게 현실적이다.

스크린샷·녹화 워크플로우 — Windows보다 확실히 낫다

Cmd+Shift+4로 범위 선택 스크린샷, Cmd+Shift+5로 녹화. 기본 도구만으로 PR용 스크린샷, 버그 리포트 녹화를 빠르게 만들었다. Windows의 Snipping Tool이나 Xbox Game Bar보다 훨씬 직관적이었다. 프론트엔드 작업에서 결과물을 자주 공유해야 하는 상황에서 이 차이가 매일 느껴졌다.

프론트엔드 개발 도구 — Mac vs Windows 호환성 요약

도구 / 환경 Mac (M2) Windows 비고
Node.js / npm ◎ 완벽 △ native addon 주의 node-gyp 오류 Mac에서 0회
pnpm / yarn ◎ 완벽 ○ 양호 실질 차이 없음
Docker △ ARM 이미지 주의 ○ x86 호환성 높음 레거시 이미지는 Windows 유리
Git ◎ 완벽 ○ Git Bash로 해결 LF/CRLF 주의 필요
VS Code ◎ 완벽 ◎ 완벽 플랫폼 차이 없음
Xcode 시뮬레이터 ◎ Mac 전용 ✗ 불가 iOS Safari 테스트 필수 도구
터미널 (Zsh) ◎ 기본 제공 △ WSL2 필요 Mac이 압도적으로 편함
Homebrew ◎ 완벽 △ winget으로 일부 대체 Homebrew 생태계가 더 풍부
Figma 데스크탑 ◎ 완벽 ◎ 완벽 차이 없음
Prisma / Supabase CLI ◎ 완벽 △ WSL2 권장 Windows 직접 실행 시 간헐적 오류
스크린샷·녹화 ◎ 기본 도구 탁월 △ 서드파티 권장 Mac 기본 캡처 도구가 훨씬 편함
배터리 (코딩 중) ◎ 10–12시간 ✗ 4–5시간 가장 큰 실용적 차이

항목별 개발 환경 만족도 — 1년 기준

📊 10점 만점 · Next.js 프론트엔드 개발자 기준
터미널·셸 경험
Mac 10/10Win 6/10
Mac
 
Win
 
iTerm2 + Zsh + Oh My Zsh 조합이 만들어내는 개발 환경은 WSL2 조합과 비교해도 체감이 다르다. Unix 명령어가 그냥 동작하는 자연스러움이 핵심이다.
빌드 속도 (M2 Pro vs i7 12세대)
Mac 9/10Win 6/10
Mac
 
Win
 
M2 Pro 칩의 성능은 비교 대상 Windows 노트북을 성능·발열·소음 모든 면에서 앞섰다. 팬리스에 가까운 조용함이 집중을 돕는다.
Node.js / npm 패키지 호환성
Mac 9/10Win 7/10
Mac
 
Win
 
대부분의 패키지가 macOS에서 문제없다. ARM64 초기 호환성 이슈가 있었지만 2024년에는 거의 해소됐다.
Docker 환경
Mac 7/10Win 8/10
Mac
 
Win
 
레거시 x86 이미지 호환성에서 Windows가 유리하다. ARM64 이미지가 보편화될수록 이 차이는 줄어들 것이다.
배터리 (코딩 세션)
Mac 10/10Win 4/10
Mac
 
Win
 
이 항목이 프리랜서 입장에서 가장 실질적인 차이다. 10–12시간 코딩 배터리는 충전기 없이 카페 하루 작업을 가능하게 한다.
iOS Safari 테스트 환경
Mac 10/10Win 2/10
Mac
 
Win
 
웹 프론트엔드 개발에서 Xcode 시뮬레이터는 대체 불가다. Windows에서 BrowserStack 유료 서비스를 써야 하는 것과 비교할 수 없다.
게임·엔터테인먼트
Mac 3/10Win 9/10
Mac
 
Win
 
Steam 지원 게임이 적고 성능도 낮다. MacBook을 개발 기기로만 쓰면 문제 없지만, 게임도 하고 싶다면 Windows가 필요하다.
전반 개발 환경 만족도
Mac 9/10Win 6.5/10
Mac
 
Win
 
웹 프론트엔드 개발자에게 MacBook이 더 낫다는 결론이다. 다만 Windows WSL2도 많이 개선됐고, 비용과 게임·엔터테인먼트를 고려하면 답이 달라질 수 있다.

"MacBook이 좋은 이유는 유닉스 기반이 아니다. 유닉스 기반 위에 쌓인 생태계와 통합이 자연스럽기 때문이다."

— 1년 후 macOS 개발 환경 회고, Obsidian 메모

1년 후 솔직한 결론

웹 프론트엔드 개발자에게 MacBook은 확실히 좋은 선택이다. 터미널, Node 생태계, 배터리, iOS 테스트 환경 — 이 네 가지만으로도 전환 비용을 정당화할 수 있었다. 특히 배터리는 숫자로 보이는 생산성 차이였다.

다만 만능은 아니다. Docker 레거시 이미지, 파일 시스템 대소문자 함정, ARM64 초기 호환성 이슈 — 이 세 가지는 실제로 작업 시간을 잡아먹었다. 알고 시작하면 피할 수 있는 것들이라 이 글이 도움이 됐으면 한다.

1년 개발 환경 비교 총평
터미널·배터리·iOS 시뮬레이터 �em>
Brewfile로 환경 스냅샷 관리 — Mac 세팅의 진짜 킬러 기능.
파일 시스템 대소문자·ARM 호환성 — 알고 시작해야 할 함정들.
Docker 레거시 이미지 — 이 영역만큼은 Windows WSL2가 유리하다.
"유닉스 기반이라 개발이 편하다"는 말은 절반은 맞고 절반은 과장이다. 터미널과 패키지 관리에서는 맞다. Docker와 게임은 여전히 Windows가 낫다. 스택과 워크스타일에 따라 답이 달라진다. 내 스택(Next.js·Vercel·Supabase)에서는 MacBook이 옳은 선택이었다.
💻

Mac이나 Windows에서 개발 환경 세팅하면서 겪은 이슈 있으신가요?

특히 ARM64 호환성 이슈, WSL2 vs Mac 터미널 비교 경험, 아니면 "Mac으로 와서 이게 제일 좋았다"는 이야기 모두 댓글로 알려주세요. 비슷한 스택 쓰시는 분들의 경험이 특히 궁금합니다.