해당 스터디는 90DaysOfDevOps
https://github.com/MichaelCade/90DaysOfDevOps
를 기반으로 진행한 내용입니다.
Day 51 - DevOps on Windows
DevOps 환경은 전통적으로 컨테이너 기술의 특성상 Linux 환경을 우선으로 한다.
그러나 Windows 환경에서 개발하거나 작업해야 하는 경우, WSL (Windows Subsystem for Linux)을 통해 리눅스 환경을 통합하고 모든 데브옵스 도구를 효율적으로 사용할 수 있다.
Windows에서 컨테이너 라이프사이클 툴링을 원활하게 사용하려면 Linux 환경이 필수적이다.
과거 Git Bash와 같은 변환 계층 도구가 있었으나, 이는 Windows 파일 시스템 위에서 리눅스 명령어를 사용하게 해주는 수준이었다.
현재는 WSL2를 통해 Windows와 통합된 가상화된 리눅스 사용자 영역을 확보할 수 있다.
이는 단순한 변환이 아닌 실제 리눅스 환경을 제공한다.
다만, WSL 환경에서 작업할 때, 성능 저하를 피하기 위해 지켜야 하는 원칙이 존재한다.
WSL 파일 시스템에서 작업: Git 클론이나 개발 작업은 반드시 WSL 내부의 파일 시스템 (예: 리눅스 홈 디렉토리)에서 수행해야 한다.
주의 사항: WSL에서 Windows의 C 드라이브( /mnt/c/ 경로)에 접근하여 작업을 수행하면, 파일 시스템 간의 상호 작용으로 인해 심각한 성능 문제가 발생한다.
성공적인 DevOps 환경 구축을 위한 핵심 Windows 네이티브 도구들이다.
Microsoft Terminal은 리눅스나 Mac OS의 최신 터미널과 유사한 기능을 제공하는 오픈 소스 프로젝트이다.
WinGet은 리눅스의 apt나 Mac OS의 brew와 동일한 역할을 하는 Windows의 패키지 관리자이다.
VS Code는 개발자들이 선호하는 IDE이며, 윈도우즈 환경에서 WSL과의 통합이 특징이다.
핵심 확장: WSL 확장, Dev Containers, GitHub Codespaces 등이 있다.
VS Code의 확장 기능을 통해 로컬 Windows 애플리케이션으로 WSL 내부에 있는 파일을 직접 편집하거나, 원격 서버 (SSH) 또는 클라우드 환경 (Codespaces)에 직접 연결하여 개발을 진행할 수 있다.
Git Bash: Windows 파일 시스템 위에서 리눅스 표준 명령어 (예: ls, 파이프, grep)를 사용할 수 있게 해주는 변환 계층이다. 네이티브 Git 애플리케이션이므로 Powershell에서도 Git 명령을 사용할 수 있게 된다.
GitHub Desktop: Git 초보자나 복잡한 명령을 기억하고 싶지 않은 사용자에게 유용한 시각적 도구이다. UI를 통해 Pull, Clone 등의 기본적인 Git 작업을 손쉽게 처리할 수 있다.
컨테이너 환경을 구축하기 위해 여러 가지 선택지가 존재한다.
이들은 기능이 많이 겹치지만, 각자의 강점이 있다. 이 모든 도구들은 백엔드에서 WSL2 배포판을 생성하여 컨테이너 런타임을 구동한다.
| 도구명 | 특징 및 역할 | WSL 통합 |
|---|---|---|
| Docker Desktop | Windows 및 macOS에서 컨테이너 기반 애플리케이션을 쉽게 개발하고 실행할 수 있게 해주는 통합 애플리케이션 | 전용 WSL 배포판 생성 |
| Rancher Desktop | 컨테이너 런타임 외에 Kubernetes 환경을 제공하며, 런타임 유형을 선택할 수 있음 | 전용 WSL 배포판 생성 |
| Podman Desktop | Rancher/Docker와 유사하게 컨테이너 실행을 지원하며, OpenShift와 같은 플러그인 환경도 제공 | 전용 WSL 배포판 생성 |
| Finch | AWS 팀이 개발한 도구로, Lima를 WSL2 드라이버로 포팅하여 사용 | 플랫폼 간 기술 세트 공유를 염두에 둔 설계이며, WSL2 기반 배포판을 생성 |
이러한 도구들은 컨테이너 런타임을 위해 WSL 내부에 독립적인 임시 배포판을 생성하여 사용하며, 이로써 Windows 환경에서도 안정적으로 컨테이너 작업을 수행할 수 있게 된다.
Finch는 컨테이너 환경을 사용자 데스크톱에 빠르고 가볍게 구축하는 것을 목표로 하며, AWS의 주도하에 기존의 Docker Desktop과 같은 도구의 대안으로 등장하였다.

Finch는 여러 CNCF 프로젝트와 오픈 소스 도구를 결합하여 구성되었다.
컨테이너 런타임: ContainerD를 사용하여 컨테이너를 관리
CLI 인터페이스: nerdctl을 사용
(nerdctl: ContainerD를 보다 쉽게 다룰 수 있게 해주는 Docker 호환 CLI)
macOS의 드라이버: macOS 환경에서는 Lima (Linux virtual machines)를 사용하여 경량의 리눅스 가상 머신을 띄움.
Windows의 드라이버: Windows 환경에서는 WSL2를 드라이버로 사용하여 Lima를 포팅하고 전용 리눅스 배포판을 생성

Finch의 특징은 Lima 기술을 중심으로 macOS, Linux, Windows (WSL2) 플랫폼 간의 환경 구축 스킬셋을 공유할 수 있도록 설계되었다.
이는 여러 운영체제를 사용하는 팀 환경에서 개발 환경의 통일성을 높이고, 플랫폼 간의 격차를 줄이는 데 도움을 준다.