방치돼 있던 블로그를 AI와 함께 되살렸다 — 진짜 문제는 따로 있었다
안녕하세요. 임상 데이터와 유전체학, 머신러닝 사이를 오가며 일하는 바이오인포매틱스 연구자 김가경입니다. 이 블로그는 몇 달 전에 만들어 글 몇 개를 올리다가 조용히 멈춰 있었습니다. 쓸 거리가 없어서가 아니라, 빌드도 배포도 도무지 안 됐기 때문이에요. 손댈 때마다 GitHub에는 빨간 X와, 들여다볼 엄두가 안 나는 에러 메시지만 쌓였습니다.
이번엔 접근을 바꿔봤습니다. AI 코딩 에이전트를 옆에 두고, 망가진 블로그를 ‘귀찮은 숙제’가 아니라 ‘디버깅 한 판’으로 다뤄본 거죠. 몇 시간 뒤, 블로그는 이중언어에 제대로 된 테마까지 얹고 되살아났습니다. 그런데 진짜 원인은 제가 짐작하던 것과 완전히 달랐어요.
증상 1. 테마가 다운로드되지 않는다
로컬에서 빌드하면 이 에러로 곧장 죽었습니다.
SSL_connect ... certificate verify failed (unable to get certificate CRL)
처음엔 “루비가 꼬였나” 싶어서, 별 근거도 없이 cacert.pem 파일을 repo에 넣어두기까지 했습니다. 그런데 원인은 훨씬 단순했어요. 설정에 remote_theme가 걸려 있어서 빌드할 때마다 GitHub에서 테마를 내려받는데, 제 로컬 루비의 OpenSSL이 그 연결을 거부하고 있었던 거죠.
해법은 인증서와 씨름하는 게 아니었습니다. 아예 테마를 안 받아오면 됐어요. 같은 테마가 gem(minimal-mistakes-jekyll)으로도 배포되거든요. _config.yml 한 줄 바꾸니 그 네트워크 요청 자체가 사라졌습니다. 교훈: 뭔가 실패하면 일단 “이게 지금 뭘 하려는 거지?” 부터 묻자. 제 경우엔 필요도 없는 다운로드였습니다.
증상 2. CI가 9초 만에 죽는다
GitHub Actions가 9초쯤에 실패했습니다. 실제로 빌드가 돌았다기엔 너무 빨랐죠. 당시 로그는 이미 만료돼서 원본 에러를 볼 수 없었습니다. 그래서 추측하는 대신, 로컬에서 빌드가 초록불이 될 때까지 맞춰놓고 워크플로를 다시 봤어요.
범인은 예전에 넣어둔 단계 하나였습니다. 락파일이 기대하는 버전 위에 굳이 옛날 Bundler를 강제로 깔던 단계였죠. 이미 루비 셋업 액션이 의존성을 처리하고 있어서 필요도 없었고, 버전이 어긋나면서 지뢰가 됐습니다. 그 단계를 지우니 워크플로는 더 단순해지고 동시에 제대로 돌았어요. 교훈: “혹시 몰라서” 끼워 넣은 단계는 공짜가 아니다. 단계 하나하나가 다 실패 지점이니까요.
증상 3. 글이 통째로 사라진다
제일 황당했던 건 이거였습니다. 테마를 고치니 사이트는 빌드됐는데, 정작 제가 쓴 글들이 결과물에서 사라져 있었어요. 홈이 텅 비어 있었죠.
원인은 한국어·영어 버전을 만들려고 넣어둔 오래된 다국어 플러그인이었습니다. 요즘 버전의 Jekyll에선 이 플러그인이 글을 전부 소리 없이 떨궈버리고 URL 구조까지 헝클어뜨렸어요. 취약한 의존성을 붙잡고 달래는 대신, 그냥 걷어내고 순정 Jekyll만으로 이중언어를 다시 짰습니다. 글마다 lang 값을 달고, 언어별 홈이 각자 자기 언어 글만 걸러서 보여주도록요. 부품 수는 줄었고, 이제 URL이 어떻게 만들어지는지 제 입으로 설명할 수 있게 됐습니다.
AI와 페어로 일해보고 느낀 것
과정 자체에서 의외였던 점이 몇 가지 있어요.
- 제가 그냥 넘겼을 로그를 읽었다. 저는 일단 아무거나 고쳐보는 쪽이었는데, 에이전트는 항상 “재현하고 진짜 에러부터 읽기”로 시작하더군요. 제 ‘미스터리’ 실패들은 대부분 원인이 거기 그대로 찍혀 있었습니다.
- 가이드를 그대로 믿지 않았고, 실제로 가이드가 틀렸다. 설정 안내 하나가 이제는 존재하지도 않는 패키지를 가리키고 있었어요. 자신 있게 틀린 안내 한 줄이 저를 몇 달이나 막고 있었던 셈입니다.
- 끝까지 검증을 고집했다. 로컬에서도, CI에서도 초록불이 뜨기 전엔 “고쳤다”고 말하지 않았습니다. “되는 걸 보여달라”는 그 태도야말로 제가 혼자선 자꾸 건너뛰던 부분이었어요.
사실 이 중에 AI라서 특별한 건 없습니다. 그냥 좋은 엔지니어링 습관인데, 빨간 X 앞에서 혼자 지칠 때 제일 먼저 놓치는 것들이죠. AI가 보탠 건 결국 인내심, 그리고 함부로 추측하지 않는 태도였습니다.
세 줄 정리
- 깃허브 블로그를 몇 달째 올리지 못한 채 방치하고 있었다 — 소재가 없어서가 아니라 빌드가 계속 실패해서.
- AI 에이전트와 같이 들여다보니 원인은 의외로 평범했다 — SSL 연결이 막혀 테마가 안 받아지고, CI엔 불필요한 단계가 있었고, 낡은 플러그인이 글을 통째로 떨구고 있었다.
- 고친 방법은 전부 “덜 하기”(gem 테마 쓰기, 단계 지우기, 플러그인 빼기)였고, 교훈은 결국 기본기 — 로그부터 읽고, 가이드를 의심하고, 될 때까지 검증하기.
앞으로
이제 블로그는 빌드되고, 배포되고, 두 언어로 말합니다. 덕분에 정작 하고 싶던 일 — 글쓰기 — 로 돌아갈 수 있게 됐어요. 앞으로는 제가 직접 만드는 프로젝트들과, 머릿속에서 계속 굴리고 있는 생각들을 데이터 과학과 생명과학 그 사이 어딘가에서 풀어볼 생각입니다.
설정에 한 번 지고서 먼지만 쌓여가는 사이드 프로젝트가 있다면, 이 글이 작은 핑계가 되길 바랍니다. 어려운 건 한 번도 글쓰기가 아니었으니까요. 읽어주셔서 고맙습니다.