Caddy라는 웹 서버가 있다. 설정 두 줄이면 HTTPS까지 자동으로 처리해주는 도구이다. 소개를 하기 위한 강의 자료를 만들다가 두 가지 버전으로 만들게 되었다. 개발 용어에 익숙한 사람들이 볼 버전과, 비개발자 수준에서도 이해가 갈 버전. 요약본이나 쉬운 버전으로만 바꾸는 수준으로는 비개발자가 이해하기 힘들 것 같았기에 수정을 거듭하다보니, 아예 다른 자료가 되어 버렸다. 이 글은 독자 혹은 수강생의 수준에 따라 어떻게 자료가 바뀌어야 하는지를 생각해본 글이다.
출발점을 바꿨다
개발자에게는 "왜 Nginx 대신 Caddy인가"로 시작해도 된다. 이미 서버를 다뤄봤고, 지금 쓰는 도구와 비교하며 들을 수 있으니까. 비개발자는 그 질문 자체를 알아듣지 못한다. 대신 이들에게는 한 번쯤 해본 경험이 있다 — AI로 챗봇이든 미니앱이든 뭔가 만들어봤는데, 그게 내 컴퓨터에만 잠들어 있다. localhost 링크를 보내봤자 남에게는 안 열린다는 걸 겪어본 사람들이다.
그래서 비개발자편 첫 장은 도구 소개가 아니라 이 문장이다. "만든 것은 있는데, 보여줄 방법이 없다." 문제를 듣는 사람들이 공감할 경험에서 찾으면, 그 뒤에 나오는 모든 내용이 자연스럽게 그 문제의 답이 된다.
비유가 먼저, 원래 용어는 나중
리버스 프록시는 문지기, 포트는 문 번호, 인증서는 신분증, DNS는 주소록. 이 비유들 자체는 흔하다. 내가 신경 쓴 건 순서다. 원래 용어를 먼저 언급하고 비유로 추가 설명하면 늦다. 원래 용어가 나오는 순간 이미 마음이 닫히기 때문이다. 비유로 먼저 이해하고 나서 "이걸 전문 용어로는 리버스 프록시라고 부른다"라고 추가 설명을 해야 한다.
원래 용어를 아예 빼는 것도 옳지 않다. 수강생이 강의장을 나가서 실제로 뭔가 하려면 결국 AI에게 요청하게 될 텐데, 그때 정확한 단어를 알아야 정확한 답을 받는다. 그래서 마지막 슬라이드는 "오늘 배운 용어로 AI에게 정확히 시키는 법"으로 잡았다.
코드는 읽는 것이지, 쓰는 것이 아니다
비개발자편 실습에서 타이핑은 없다. 설정 파일은 화면에 보여주되, 실행은 전부 복사·붙여넣기다. ZIP을 내려받아 압축을 풀고, 명령 한 줄을 붙여넣으면 자기 컴퓨터에 HTTPS 사이트가 뜬다. git도 안 쓴다. Code 버튼에서 ZIP을 받으면 충분하다.
덜어낸 것도 있다. 개발자편에 있던 Nginx·Traefik 비교표는 비개발자에게 알아들을 수 없는 말일 뿐이라 "수동변속기 대 자동변속기" 한 줄로 줄였다. 실습 부분도 다시 짰다. 개발자편의 "내 서버 인벤토리 정리"는 관리하는 서버가 없는 사람에게는 빈 종이가 된다. 비개발자편에서는 "내 결과물 인벤토리" — AI로 만든 것, 남에게 보여주고 싶은 것 — 로 바꿨다.
더 쉬운 길이 있으면 그렇다고 말한다
비개발자용이라 더 신경 쓴 것도 있다. 과대포장하지 않는 것. 개발자는 비교표를 보고 어떤 도구를 쓸지 스스로 판단하지만, 비개발자는 소개하는 사람이 그어주는 경계가 판단의 전부다. 정적인 페이지 하나를 공개하는 거라면 Vercel 같은 배포 서비스가 Caddy보다 쉽다. 이걸 숨기지 않고 슬라이드에 그대로 넣었다. Caddy가 정말 필요해지는 순간은 따로 있다 — 내 컴퓨터에서 계속 돌아야 하는 것을 밖으로 보여줄 때. 도구를 소개할 때는 그 도구를 최고라고 말하는 게 아니라, 언제 필요하고 언제 필요 없는지 경계를 그어주는 것이 옳다고 생각한다.
자료를 공개한다
이 강의는 특정 기관 발주 없이 만든 자체 콘텐츠라, 자료를 통째로 공개할 수 있다.
- 슬라이드·PPT 허브 (비개발자편·개발자편): 260725-caddy-basic.vercel.app
- 복붙 실습 자료 (ZIP 다운로드): github.com/Dami-Shin-01/caddy-basic-demo
Docker Desktop만 설치돼 있으면 강의 없이 혼자서도 실습이 돌아가게 만들어뒀다.