이 블로그를 어떻게 설계했나 — 비용 0원, 실수로 공개되지 않게
이 블로그는 FiCl 리뉴얼 프로젝트를 어떻게 진행해 왔는지 나중에 다시 읽고, 같은 일에 관심 있는 분들과도 나누려고 만들었습니다. 첫 글에서는 블로그 자체를 어떻게 설계했는지 적습니다. 코드를 짜기 전에 무엇을 놓고 고민했는지가 이 글의 중심입니다.
먼저 정한 조건 세 가지
- 비용은 0원입니다. 서버를 빌리거나 유료 기능을 쓰지 않습니다.
- 글은 제가 확인한 것만 공개합니다. 초안이 실수로 나가면 되돌리기 어렵기 때문입니다.
- 한국어와 영어를 오갈 수 있어야 합니다.
도구는 공식 문서로 비교했습니다
기억에 기대지 않고 공식 문서를 읽고 비교했습니다. 확인하지 못한 내용은 “확인 못 함”이라고 적어 두었습니다.
| 후보 | 판단 |
|---|---|
| Astro(글을 미리 HTML로 만들어 두는 도구) + Cloudflare Pages | 배포, 사이트맵, RSS가 모두 공식 문서로 확인됨. 글이 마크다운(간단한 서식 문법) 파일이라 나중에 도구를 바꿔도 글은 그대로 가져갈 수 있음 |
| Hugo + Cloudflare Pages | 빠르지만 글이 몇 편 안 되는 이 블로그에서는 이점이 거의 없음 |
| Astro + Cloudflare Workers | 기능은 더 넓지만 정적 블로그에는 필요 없음. 나중에 필요하면 옮기면 됨 |
Cloudflare Pages는 정적 파일 요청이 무료이고 요청 수 제한도 없습니다. 요금이 붙는 쪽은 서버 코드를 돌리는 기능(Functions)이라서, 사이트를 정적 출력만 쓰도록 정했습니다.
주소를 정하다가 막힌 일
처음에는 dev.blog.ficl.kr를 쓰고 싶었습니다. 그런데 Cloudflare의 기본 무료 HTTPS 인증서는 한 단계 서브도메인(blog.ficl.kr)까지만 적용되고, 두 단계(dev.blog.ficl.kr)는 적용되지 않는다고 문서에 나와 있었습니다. 해결하려면 유료 기능이 필요합니다.
그래서 점 대신 하이픈을 써서 dev-blog.ficl.kr 로 정했습니다. 한 단계라서 무료 인증서로 충분하고, “dev”를 넣고 싶은 뜻도 살렸습니다. 주소는 공개한 뒤에는 바꾸기 어렵기 때문에, 코드를 짜기 전에 정했습니다.
실수로 공개되지 않게 하는 장치
- 글 맨 위 정보의
draft를 적지 않으면 비공개입니다. Astro 문서의 예시는draft가true가 아닌 글을 공개하는데, 이러면draft를 깜빡한 글이 공개되어 버립니다. 그래서false라고 분명히 적은 글만 공개하도록 거꾸로 만들었습니다. - 글에 이메일 주소, 토큰, 사설 IP, 내 PC 경로 같은 패턴이 있으면 초안이어도 빌드(사이트를 만드는 과정)가 멈춥니다.
- 다만 회사나 고객 이름은 패턴으로 잡을 수 없습니다. 그래서 마지막 확인은 사람이 합니다.
- PR 미리보기 주소는 기본으로 공개입니다. 머지 전에 글이 보이지 않도록 미리보기를 껐습니다.
한국어·영어 토글
언어마다 별도 주소를 둡니다. 한국어는 /, 영어는 /en/ 아래입니다. Google 문서가 설명하는 방식이 이것이라서 따랐습니다. 영어 게시글은 글마다 선택입니다. 같은 이름의 파일이 양쪽에 있고 둘 다 공개일 때만 토글이 나타나고, 한쪽이 초안이면 토글도 검색용 연결 표시(hreflang)도 만들지 않습니다.
아직 확인하지 못한 것
- 링크를 공유할 때 나오는 미리보기 이미지(
og:image)는 규격상 필수 항목인데, 처음에는 이미지 없이 시작합니다. 이 상태에서 미리보기가 어떻게 보이는지는 확인하지 못했습니다. - Cloudflare 빌드가 실패했을 때 방문자가 보는 화면이 어떤지 문서에 없습니다. 문제가 생기면 이전 배포로 되돌립니다.
배운 점
- 이름이나 주소처럼 공개한 뒤에는 되돌리기 어려운 결정은 코드보다 먼저 정해야 합니다.
- “기본값이 어느 쪽인가”가 안전을 좌우합니다. 깜빡하면 비공개가 되게 만드는 쪽이 낫습니다.
- 문서에서 확인하지 못한 것을 아는 척하지 않고 “확인 못 함”으로 남겨 두면, 나중에 무엇을 다시 봐야 하는지 알 수 있습니다.