TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 28 READS

‘업데이트하다 망하면 어떡하지?’를 끝내는 법: NixOS가 시스템 변경을 덜 무섭게 만드는 원리

‘업데이트하다 망하면 어떡하지?’를 끝내는 법: NixOS가 시스템 변경을 덜 무섭게 만드는 원리
SOURCE IMAGE · HACKER NEWS
‘업데이트하다 망하면 어떡하지?’를 끝내는 법: NixOS가 시스템 변경을 덜 무섭게 만드는 원리

시스템 건드리기, 솔직히 무섭잖아요

서버 패키지를 업그레이드하거나 개발 PC의 설정 파일을 고칠 때 괜히 손에 땀이 나는 경험, 다들 있으시죠? “이거 올렸다가 부팅 안 되면 어떡하지?”, “지난달에 바꾼 설정이 뭐였더라?” 이런 걱정 때문에 멀쩡히 돌아가는 시스템은 아예 안 건드리는 게 최고라는 말까지 나와요.

한 개발자가 NixOS를 쓰면서 이런 두려움이 점점 줄었다는 글을 썼어요. 핵심 메시지는 단순해요. 실수해도 언제든 되돌릴 수 있다는 확신이 있으면 사람은 훨씬 과감하게 실험할 수 있다는 거예요. 그럼 NixOS는 어떻게 그런 확신을 주는 걸까요?

전통적인 리눅스가 무서운 이유

우분투나 페도라 같은 일반 배포판은 기본적으로 명령형이에요. apt install로 패키지를 깔고, /etc 아래 설정 파일을 직접 고치고, 그 결과가 계속 쌓이는 방식이죠. 시간이 지나면 “이 서버가 왜 이 상태인지” 아무도 설명을 못 하게 돼요. 이런 서버를 업계에서는 ‘눈송이 서버(snowflake server)’라고 불러요. 세상에 하나뿐이라서 똑같이 다시 만들 수 없다는 뜻이에요. 게다가 업그레이드 중에 라이브러리가 덮어쓰이면서 다른 프로그램이 깨지는 일도 생기고요.

NixOS는 뭐가 다를까

NixOS에서는 시스템 전체를 /etc/nixos/configuration.nix 같은 설정 파일에 원하는 최종 상태로 적어요. 예를 들어 services.openssh.enable = true;라고 쓰면 SSH 서버가 켜지고, environment.systemPackages = with pkgs; [ git htop ];라고 쓰면 git과 htop이 설치돼요. 그다음 sudo nixos-rebuild switch를 실행하면 NixOS가 이 설정대로 시스템을 새로 구성해줘요. ‘어떻게 할지’가 아니라 ‘무엇이 되어야 하는지’를 적는 방식이라서 선언적 방식이라고 불러요.

비밀은 Nix 스토어에 있어요. 모든 패키지는 /nix/store/해시-패키지이름 같은 경로에 설치돼요. 이 해시는 소스 코드, 의존성, 빌드 옵션까지 전부 반영해서 계산해요. 그래서 같은 라이브러리의 서로 다른 버전이 충돌 없이 나란히 있을 수 있고, 한 번 설치된 건 절대 덮어쓰지 않아요.

게다가 nixos-rebuild를 실행할 때마다 세대(generation)라는 새 시스템 버전이 만들어지고, 이전 세대는 그대로 남아 있어요. 새 설정이 마음에 안 들면 sudo nixos-rebuild switch --rollback 한 줄로 돌아가면 돼요. 아예 부팅이 안 되더라도 부팅 메뉴에서 이전 세대를 고르면 되고요. 게임으로 치면 매번 자동으로 세이브 포인트가 생기는 셈이에요. 여기에 flakes 기능을 쓰면 flake.lock 파일로 패키지 저장소 버전까지 고정할 수 있어요. 그래서 다른 컴퓨터에서도 똑같은 시스템을 재현할 수 있어요.

단, 롤백되는 건 시스템 구성이지 데이터가 아니라는 점은 꼭 기억하세요. 데이터베이스 내용이나 홈 디렉터리 파일은 세대를 되돌려도 그대로예요.

다른 도구들과 비교하면

Ansible 같은 구성 관리 도구도 ‘원하는 상태’를 적긴 하지만, 기존 시스템 위에 덧칠하는 방식이에요. 설정에서 패키지를 지워도 시스템에서 자동으로 사라지지는 않아요. NixOS는 설정에서 빼면 정말로 사라져요. Docker도 불변 이미지로 비슷한 안정감을 주지만 애플리케이션 단위라서, 호스트 OS 관리는 여전히 숙제로 남아요. Fedora Silverblue 같은 이미지 기반 배포판도 원자적 업데이트와 롤백을 지원해요. 원자적이라는 건 업데이트가 전부 적용되거나 전혀 적용되지 않거나 둘 중 하나라는 뜻이에요. 다만 NixOS보다 쓰기는 쉬운 대신, 세세하게 커스터마이즈할 수 있는 폭은 좁은 편이에요.

물론 단점도 분명해요. Nix 언어가 독특해서 배우기가 쉽지 않고, 문서가 여기저기 흩어져 있어요. 일반 리눅스용으로 빌드된 바이너리는 라이브러리 위치가 달라서 그냥은 실행이 안 되는 경우도 있고요.

한국 개발자에게 주는 시사점

OS를 통째로 바꾸는 게 부담스럽다면 Nix 패키지 매니저만 맥이나 우분투에 설치해서 써보세요. 프로젝트마다 nix develop으로 필요한 언어 버전과 도구가 다 갖춰진 개발 환경을 띄울 수 있어요. “제 컴퓨터에선 되는데요” 문제를 꽤 많이 줄일 수 있죠. 신규 입사자 온보딩이나 CI 환경 재현에도 유용해요. 무엇보다 선언적·불변 인프라라는 사고방식은 쿠버네티스, Terraform과도 통하니까 배워둘 가치가 충분해요.

마무리

NixOS의 진짜 가치는 ‘실수해도 괜찮다’는 안전망이에요. 여러분은 시스템을 바꿀 때 어떤 안전장치를 쓰시나요? NixOS의 가파른 학습 곡선, 감수할 만하다고 보시나요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://entropicthoughts.com/nixos-is-making-me-less-afraid
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...