평소 쓰던 블로그에서는 ‘발행’을 누르면 끝이었다. 전에 빌드와 배포가 다른 일이라는 것까지는 알게 됐는데, 이제 그 사이를 어떻게 연결하는지 알아볼 차례였다. 점점 일이 커져간다…이런…

컴퓨터는 내가 어디에서 일하는지도 알아야 했다

터미널에 나오는 말 중에는 cd가 있었다. 사이트를 만드는 대단한 명령인 줄 알았는데, 작업할 폴더로 이동하는 명령이었다. 이름도 change directory, 말 그대로 폴더를 바꾼다는 뜻이다. 컴퓨터에 파일이 많으니 “이걸로 작업해”라고 위치부터 알려줘야 했다. 내가 사이트를 생각하고 있다고 터미널도 같은 폴더를 보고 있는 건 아니었다. cd는 파일을 옮기는 일이 아니라, 앞으로 명령을 실행할 기준 위치를 바꾸는 일이었다.

그 위치에서 만나는 npm run build도 조금씩 읽히기 시작했다. 앞에서 npm은 필요한 소프트웨어를 가져오는 도구라고 이해했는데, 준비된 작업을 실행하는 역할도 했다. 이 명령은 npm에게 “이 프로젝트에 정해둔 build 작업을 실행해줘”라고 요청하는 뜻이었다. 내 프로젝트에서는 그 요청을 받아 Astro가 사이트를 빌드한다.

빌드는 원고를 책으로 만드는 과정이라고 생각하니 이해가 됐다. 글과 화면 구성 파일이 원고와 편집 자료라면, Astro는 그것들을 모아 독자의 브라우저가 보여줄 결과물을 만든다. 기본적으로 그 결과물이 모이는 폴더가 dist다. 다만 책을 만들었다고 독자에게 전달한 것은 아니듯, 빌드했다고 인터넷에 공개된 것은 아니다.

저장하는 곳과 보여주는 곳은 달랐다

그다음에는 GitHub와 Cloudflare를 연결했다.

처음에는 파일을 인터넷에 올리는 서비스가 왜 두 개나 필요한지 궁금했다. 내 사이트에서는 맡은 일이 달랐다. GitHub에는 글과 코드, 그리고 그것들이 바뀐 기록을 보관한다. Cloudflare는 그 파일을 가져와 사이트를 빌드하고, 사람들이 접속할 수 있게 공개한다.

여기서 터미널에 등장하는 이름이 git commit과 git push다. Git은 변경 기록을 관리하는 도구이고, commit은 선택한 변경을 하나의 기록으로 남기는 일이다. 그런데 이 기록은 우선 내 컴퓨터에 생긴다. GitHub에 보내는 일은 push가 맡는다.

파일을 저장하고, 변경을 기록하고, 그 기록을 다른 저장소로 보내는 일이 따로 있었다. 처음에는 저장 한 번 하는데 왜 이렇게 유난인가 싶었다. 하지만 각각의 일이 어디까지 하는 건지 알고 나니 덜 헷갈렸다.

내 사이트에서는 GitHub에 새 변경이 올라오면 Cloudflare가 이어서 빌드하고 배포하도록 연결해뒀다. 내 컴퓨터에서 이해하려고 애썼던 npm run build 같은 작업을 이제 Cloudflare 쪽에서도 실행하는 것이다. 빌드와 배포가 잘 끝나야 독자가 보는 사이트에도 변경이 나타난다.

그렇게 공개된 페이지에 연결한 주소가 ifitallends.com이다. localhost는 내 컴퓨터를 가리켰지만, 이제는 다른 사람도 찾아올 수 있는 주소가 생겼다. 독자에게 페이지를 보여주는 일을 Cloudflare가 맡고 있으니 내가 컴퓨터를 꺼도 사이트는 열려 있다.

명령어를 전부 외운 건 아니다. 여전히 Codex의 도움이 필요하다. 그래도 이제는 화면에 뜬 영어가 조금 다르게 보인다. 어디에서 작업할지, 어떻게 공개할 파일을 만들지, 어떻게 변경을 기록하고 발행할지. 마치 영어 까막눈이던 내가 조금씩 글을 읽어나가는 기분이였다.