커맨드라인에서 자주 보는 작은 명령어들 뒤에는 생각보다 오래된 설계와 철학이 숨어 있습니다. 이 시리즈는 2>&1, 파이프, 리디렉션, 파일 디스크립터 같은 익숙한 문법을 출발점으로 Unix의 입출력 모델과 시스템 설계 이야기를 풀어봅니다. 우리가 매일 사용하는 명령어 속에 담긴 Unix의 아이디어를 따라가는 글입니다.
Docker와 Kubernetes 환경에서 애플리케이션 로그는 왜 파일이 아니라 stdout으로 출력해야 할까? 컨테이너 로그 구조를 따라가 보면 결국 Unix의 오래된 설계로 돌아가게 된다. stdout과 stderr로 분리된 I/O 모델이 어떻게 현대 클라우드 인프라의 로그 시스템까지 이어졌는지 살펴본다.
Unix에는 “Everything is a file”이라는 유명한 철학이 있다. 디스크 파일뿐 아니라 터미널, 파이프, 네트워크 소켓까지 모두 같은 방식으로 다루는 이 단순한 설계는 Unix 시스템 전체의 구조를 결정지었다. 이 글에서는 왜 Unix가 세상을 파일로 표현하려 했는지, 그리고 그 선택이 오늘날의 소프트웨어 구조에 어떤 영향을 남겼는지를 살펴본다.