Windows에서 개발할 때 고생을 많이했다. 괜히 맥맥맥맥맥 하는게 아니었다. mac 으로 개발해보니 알게되었다. 쾌적하다라는 말은 이럴때 쓰는거였다.
근데 이번 회사에서 제일 좋은 갤럭시북을 줬다. 하하 다시 windows 환경이다.
Path 지옥에서의 탈출 Windows 환경에서 개발할 때 가장 고통스러웠던 건 환경변수 설정.
Node.js, Python, Java 등 여러 개발 도구를 설치하다 보면 Path가 꼬이는 경우가 많았고, 특히 버전 관리가 복잡했음.
# Windows Path 설정 예시
C:\Program Files\nodejs\
C:\Python39\
C:\Program Files\Java\jdk-17\bin
C:\Program Files\Java\jdk-21\bin # 이게 문제의 시작반면 WSL에서는 ~/.bashrc나 ~/.zshrc에서 깔끔하게 관리할 수 있었음
export PATH="$HOME/.nvm/versions/node/v20.0.0/bin:$PATH"
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"Mac에서 Windows로 전환하면서 이전 회사에서 Mac으로 개발하다가 현재 회사에서 Windows를 지급받았음. Mac의 Unix 기반 터미널에 익숙했던 터라 PowerShell이나 CMD는 너무 생소했음. WSL은 거의 완벽한 Linux 환경을 제공해서 전환 비용을 크게 줄여줬음.
상황: 나만 WSL, 팀원들은 모두 Windows
이 차이가 나중에 얼마나 큰 문제를 일으킬지 알지못함.
NextJS 15 프로젝트에서 WSL 환경 실행 시 다음 오류 발생:
Error: Failed to load SWC binary for linux/x64
Platform: linux-x64-gnu
Error: ENOTFOUND github.com팀원들(Windows)은 정상 실행되는데 나(WSL)만 실패했음.
npm install 시 GitHub Release에서 자동 다운로드 package.json에서 디펜던시 옵셔널로 지정 자세한 구현 과정은 별도 블로그 글로 정리 예정
IntelliJ에서 WSL의 Java 프로젝트 실행 시 여러 문제 발생:
java: source value 8 is obsolete and will be removed in a future release
java: pattern matching in instanceof is not supported in -source 81. Java 버전 문제:
Per-module bytecode version에 모듈이 8로 고정되어 있었음 .idea/compiler.xml에 캐시된 설정 잔류 2. Maven Nexus 인증 문제:
~/.m2/settings.xml은 있었지만 Windows로 옮기면서 누락 <!-- settings.xml 필수 -->
<servers>
<server>
<id>nexus</id>
<username>nexus_id</username>
<password>nexus_password</password>
</server>
</servers>3. DB 접근 IP 문제 (가장 치명적):
 사용
10.11.5.168) 사용 10.11.5.168만 화이트리스트에 등록 포트포워딩 시도:
# Windows → WSL 포트포워딩 (인바운드만 가능)
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=10.11.5.168 connectport=8080 connectaddress=172.30.98.229이 방법은 외부에서 WSL로 들어오는 트래픽만 처리 가능. WSL에서 DB로 나가는 트래픽의 발신 IP는 변경 불가. 근본적 해결책 아님.
결국 프로젝트를 Windows(C:\dev)로 이동하고 다음 작업 수행:
~/.m2/settings.xml을 Windows로 복사 .m2/repository/org/springframework 삭제 Per-module bytecode version 제거 # Windows에서 정상 실행 확인
mvn clean install
mvn spring-boot:runWindows IP로 DB 접근이 정상 작동했고, 팀원들과 동일한 환경이 됨.
자세한 링크
Windows로 전환하기 전, 다음과 같은 절충안을 고려했음:
1. 파일 시스템 속도 저하
WSL에서 Windows 파일 시스템(/mnt/c/) 접근 시 I/O 성능 저하:
npm install 약 30초 /mnt/c/): npm install 약 2분 2. Git 줄바꿈 문제 (CRLF vs LF)
# WSL에서 커밋
warning: LF will be replaced by CRLF in src/App.tsx
# Windows에서 풀
modified: src/App.tsx (줄바꿈만 바뀜)팀원들과 불필요한 diff가 계속 발생함.
4. 포트 바인딩 혼선
localhost:3000 localhost:8080 WSL에서 Windows의 localhost:8080에 접근은 가능하지만, 반대는 복잡했음 (포트포워딩 필요).
5. 환경변수 관리 이중화
~/.bashrc (WSL) 두 곳을 따로 관리하다 보니 실수가 잦았음.
고민 끝에 모든 개발 환경을 Windows 네이티브로 통일했음. 이유는:
처음엔 PowerShell이 불편했지만, 지금은 oh-my-posh와 winget으로 어느 정도 만족스러운 환경을 구축했음. 무엇보다 팀원들과 "이거 왜 나만 안 돼?" 같은 대화가 사라진 게 가장 큰 수확이었음.
혼자 개발할 땐 WSL이 답이었지만, 팀으로 일할 땐 통일된 환경이 답.
# oh-my-posh 설치
winget install JanDeDobbeleer.OhMyPosh
# 터미널 테마 적용
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\atomic.omp.json"# winget으로 개발 도구 설치
winget install Git.Git
winget install OpenJS.NodeJS.LTS
winget install Volta.Volta # Node 버전 관리
winget install Microsoft.OpenJDK.21git config --global core.autocrlf true # CRLF 자동 변환
git config --global core.eol lf # 저장소는 LF 유지