
솔직히 말해서, 요즘 회의실 풍경을 보면 현기증이 납니다. 비즈니스 로직조차 제대로 파악하지 못한 주니어 개발자들이 "팀장님, 저희도 쿠버네티스 도입해야 하는 거 아닙니까?"라며 눈을 반짝일 때마다 속으로 깊은 한숨을 삼킵니다. 도커(Docker)니 MSA니 하는 화려한 기술 스택에 취해 있지만, 정작 그 기반이 되는 컴퓨팅의 본질은 까맣게 잊은 채 껍데기만 핥고 있는 꼴이니까요. 오늘은 여러분이 그토록 찬양하는 컨테이너 기술의 할아버지 격인 VM/370 이야기를 좀 해보려 합니다. "옛날이야기 하지 마세요"라고 귀를 닫는 순간, 당신은 AI에게 대체될 1순위 후보가 된다는 사실만 기억하십시오.
최근 Hacker News에 올라온 'VM/370으로 할 수 있는 재미있는 일들'이라는 문서를 보며 저는 묘한 아이러니를 느꼈습니다. 1970년대에 탄생한 이 고색창연한 메인프레임 OS를 실행하는 가장 쉬운 방법이 무엇인지 아십니까? 바로 도커입니다. docker run -n vm370 한 줄이면 여러분의 최신 맥북 위에 50년 전의 괴물이 소환됩니다. Hercules 에뮬레이터를 직접 설치하고 설정하느라 며칠 밤을 새우던 시절을 생각하면 격세지감을 느끼지만, 한편으론 이 상황이 주는 교훈이 명확합니다. 기술은 돌고 돌며, 근본 원리는 변하지 않는다는 것입니다.
로그인 과정부터 봅시다. 터미널에 logon cmsuser를 입력하고 비밀번호를 칠 때, 화면에는 아무것도 표시되지 않습니다. 빨간색 커서가 깜빡일 뿐이죠. 요즘 UX/UI 관점에서는 최악의 경험이겠지만, 당시에는 보안을 위한 당연한 조치였습니다. 더 충격적인 건 LOGON CMSUSER CMSUSER처럼 아이디 뒤에 비밀번호를 바로 붙여서 로그인하는 방식도 허용된다는 점입니다. 보안 의식이 희박했던 시절의 유물이죠. 이걸 보며 "구리다"고 비웃기 전에, 여러분이 지금 짜고 있는 코드의 하드코딩된 API 키부터 점검해 보시길 바랍니다.
압권은 코딩 환경입니다. EDIT HELLO BASIC을 입력하면 편집기가 열리는데, 이건 우리가 아는 Vim보다 훨씬 불친절합니다. 입력 모드와 명령 모드의 구분은 물론이고, 종료하는 방법조차 직관적이지 않습니다. PA2 키(혹은 Alt-2)를 눌러야 빠져나올 수 있는 이 환경에서 코드를 짜다 보면, Cursor나 Copilot 같은 AI 도구가 얼마나 우리를 나약하게 만들었는지 뼈저리게 느낍니다. 하지만 역설적으로, 이 불편함 속에서 우리는 '파일의 타입'과 '속성'이라는 본질에 집중하게 됩니다. VM/370에서 파일 이름과 타입(BASIC, EXEC, FORTRAN)은 엄격히 구분되며, 이는 오늘날 확장자 개념의 시초이자 더 강력한 메타데이터 시스템이었습니다.
특히 흥미로운 지점은 FORTRAN 프로그램을 컴파일하고 실행할 때 드러나는 입출력 제어 방식입니다. 소스를 컴파일하면 LISTING 파일과 TEXT 파일(Object Code)이 생성됩니다. 이걸 LOAD 명령어로 메모리에 적재하고 START로 실행하면, 결과가 화면에 나오지 않고 FILE FT06F001 같은 이상한 이름의 파일로 떨어집니다. 당황스럽죠? 이때 등장하는 것이 FILEDEF 명령어입니다. FILEDEF 6 TERMINAL이라고 입력해야 비로소 6번 채널의 출력이 파일이 아닌 터미널 화면으로 리디렉션 됩니다.
이 대목에서 무릎을 탁 치지 못했다면, 당신은 아직 멀었습니다. 이 FILEDEF가 바로 오늘날 리눅스 파이프라인(|)과 리디렉션(>), 더 나아가 컨테이너의 표준 입출력(stdout/stderr) 처리의 조상이기 때문입니다. 여러분이 도커 로그를 확인하거나 쿠버네티스 파드(Pod)에서 로그를 수집할 때 사용하는 그 메커니즘이, 이미 50년 전 메인프레임에서 정립되어 있었습니다. "출력의 방향을 추상화하여 제어한다"는 개념을 모른 채 kubectl logs만 치고 있었다면, 반성하십시오.
더 재미있는 건 버그조차 역사를 가진다는 사실입니다. 문서를 보면 터미널로 출력을 돌렸을 때 첫 글자인 'H'가 사라지는 현상이 발생합니다. 저자도, 메인프레임 전문가들도 원인을 모른다고 합니다. 아마도 터미널 제어 문자로 오인되어 삼켜졌을 것이라는 추측만 있을 뿐이죠. 우리가 현업에서 만나는 알 수 없는 인코딩 문제나, 특수 문자로 인해 깨지는 로그 데이터 문제와 놀랍도록 닮아 있지 않습니까? 기술이 발전해도 디버깅의 고통은 영원하다는 사실이 묘한 위로가 되기도 합니다.
결국 제가 하고 싶은 말은 이것입니다. 화려한 신기술 뒤에는 언제나 투박하지만 견고한 레거시(Legacy)의 원리가 숨어 있습니다. VM/370을 장난감처럼 다뤄보면서, 여러분은 단순히 옛날 명령어를 배우는 것이 아니라 가상화, 리소스 할당, 입출력 제어의 본질을 마주하게 됩니다. AI가 코드를 대신 짜주는 시대에, 개발자의 경쟁력은 '어떻게 구현하느냐'가 아니라 '이게 왜 이렇게 작동하느냐'를 아는 것에서 나옵니다. 이번 주말에는 화려한 프레임워크 튜토리얼 대신, 흑백 터미널의 커서와 씨름하며 컴퓨터라는 기계의 맨살을 만져보시기 바랍니다. 그래야 거품이 꺼지고 난 뒤에도 살아남을 수 있습니다.
![[삼성전자/구글] 시니어들이 술자리에서만 말하는 '대기업 생존 매뉴얼' 3가지](/_next/image?url=https%3A%2F%2Fstorage.googleapis.com%2Fpoooling-blog%2Fblog-images%2F2026%2F02%2F05%2F2639_93f92f2c.png&w=3840&q=75)

