갈피노트
Back to Home
iOS Development • 2026년 2월 8일

개인 블로그 3개월차, 뒤에선 얼마나 많은걸 바꿔왔을까.

#blog #vibecoding

안티그래비티(https://antigravity.google)가 나오고 '블로그 만들어줘' 라는 한 문장으로 시작한 프로젝트가 어느덧 배포 3개월이 다되가고 있다.

구글서치콘솔을 몰라서, 검색에 노출조차 되지 않던 시절부터 시작해, 내 앱소개페이지와, 소소하게 '딸깍' 계산기 프로젝트도 이 공간에 덧붙여 시작하게 되었다.

애드센스(https://accounts.google.com/)는 결국 못붙여서, 대신 카카오 애드핏(https://adfit.kakao.com/)을 사용하게 됐다

님들, 그 adblock 한 번만 꺼주시면... 굽신굽신..

무튼, 애드센스를 못붙이고 왜그런건지 찾다가 결국 발견하긴 했는데, 그걸 또 고치려고 하니 현타가 왔다갔다.

이후 claude에게 이 블로그의 기술적인 수정 사항들을 정리해보라고 해봤다.

난리도 아니네.


appgalpi.com 기술 변천사

> 2025년 10월 ~ 2026년 2월, 약 4개월간의 기록

Phase 1: 정적 HTML (2025년 10월)

프로젝트의 시작. "Hello" 메시지 하나와 Firebase Hosting.

스택: 순수 HTML, Firebase Hosting

초기 init부터 잡아주네.


Phase 2: 바닐라 JS 블로그 (2025년 11월)

프레임워크 없이 HTML/CSS/JS로 블로그 전체를 구현.

- EasyMDE 마크다운 에디터로 관리자 대시보드 구축

- (보안사항으로 삭제)

- Firestore에 포스트 저장, Storage에 이미지 업로드

- Cloud Functions로 AI 대화(Claude API), 댓글(Vertex AI 필터링), Telegram 알림

- 찰칵캘린더 랜딩 페이지 추가

스택: HTML5/CSS3/JS, EasyMDE, Firebase (Firestore, Auth, Storage, Functions)

그냥 마구 만들었다.

되는 대로 만들다보니, 뭘 썼는지도 몰랐다.

"어떤 기술 베이스로 구현했어요?"
"몰라요. A.I.한테 다 맡겨서."

딱 이랬다.


Phase 3: React SPA 마이그레이션 (2025년 12월)

바닐라 JS의 한계를 느끼고 React + Mantine UI로 전면 재작성.

- React 19 + TypeScript 5.9 + Vite 7.2

- Mantine UI 8.3 컴포넌트 라이브러리

- EasyMDE → Tiptap 리치 텍스트 에디터 교체

- 다크 모드 지원

- React Router DOM 7 라우팅

- 인포그래픽 시스템 (iframe HTML 뷰어)

- sitemap.xml 동적 생성 Cloud Function

- React Helmet Async로 SEO 메타 태그

- SnowOnMac 랜딩 페이지 (Canvas 눈 애니메이션)

스택: React 19, Vite 7, Mantine UI 8, Tiptap 3, Firebase

검색이 안되는 이유를 블로그 오픈 한 달만에 알았던가.

그리고 글쓰기 에디터도 너무 별로여서, 결국 안좋아하던, 리치텍스트에디터로 이동.

잡다한 것들을 많이 넣었던 때였다.

DOM이 뭔지도 몰랐었고... 디자인은 저런걸 썼는지도 몰랐네.


Phase 4: SEO와의 전쟁 (2026년 1월)

SPA의 근본적 한계 — 빈 <div id="root"></div>만 있는 HTML.

검색 엔진과 광고 플랫폼이 콘텐츠를 인식하지 못하는 문제 발생.

- 시맨틱 slug 시스템 도입 /post/ios-tips 형태)

- Google AdSense 신청 → 정책 위반으로 거절 (빈 페이지 판정)

- 광고 제거, 스크립트 동적 로딩, 경로 가드 등 수차례 시도

- GitHub Actions CI/CD 파이프라인 구축 (조건부 빌드, Telegram 알림)

스택: 동일 + GitHub Actions

아오... X발 애드센스. 이 때부터 시작이었다. 단순히 블로그에 글이 적어서 안보여주는 줄 알았었다.

여기도 자세히는 확인 안해주는데, gemini가 "이렇게 하면 되요. 저렇게 하면 되요." 라고 제안해주면,

"확실해?" "확실합니다" "진행시켜"

하지만 여전히 정책위반.

(대충 오이형 c8짤)


Phase 5: 계산기 시대 + SSR 시도 (2026년 2월 초)

SEO 문제 해결을 위해 Cloud Function 기반 SSR을 도입하고, 계산기 서비스를 확장.

### 계산기 3종 추가

1. 만나이 계산기 (CALC-001) — 만나이/연나이/세는나이/미미법

2. 퍼센트 만능 계산기 (CALC-003) — 6가지 계산 모드

3. BMI 계산기 (CALC-004) — 비만도 + 건강 지표

### 통합 SSR serveApp)

Cloud Function이 모든 요청을 가로채서:

- Bot(크롤러) → 서버에서 HTML 렌더링 (SSR 템플릿 6개)

- 일반 사용자 → React SPA 제공

이 구조의 문제:

- Cloud Function cold start 2~5초

- Hosting과 Functions 배포 동기화 필수

- 일반 사용자에게는 여전히 빈 HTML

- AdSense 계속 거절 → Kakao AdFit으로 전환

스택: React 19 + Cloud Functions SSR(하이브리드) + Kakao AdFit

그것과는 별개로, 차근차근 하고 싶은거, 어디서 주워들은거 계속 개발해나가고 있었다.

애드센스도 여러번 요청하니, '검토 요청 횟수를 다 소모하였습니다' 라며 일정기간 블럭을 먹이더라는 tmi.


Phase 6: Astro SSR 마이그레이션 (2026년 2월 7일)

근본적 해결 — 프레임워크 레벨에서 SSR을 지원하는 Astro로 전환.

왜 Astro인가

- 모든 방문자에게 완성된 HTML 즉시 서빙 (Bot 감지 불필요)

- React Islands 패턴으로 필요한 곳만 JS 로드

- Firebase App Hosting (Cloud Run) 네이티브 지원

### 아키텍처

```

공개 페이지 (SSR) → Astro 컴포넌트 + Tailwind CSS

댓글 (client:visible) → React Island (4.5KB)

관리자 (client:only) → React + Mantine + Tiptap (706KB, /admin만)

계산기 (client:only) → React + Mantine (71KB)

```

핵심 변화

| 항목 | 이전 (React SPA) | 이후 (Astro SSR) |

|------|------------------|------------------|

| 공개 페이지 JS | ~500KB | < 5KB |

| 초기 HTML | 빈 div | 완성된 콘텐츠 |

| TTFB (cold) | 2~5초 | < 500ms 목표 |

| 광고 인식 | 실패 | <ins> 태그 초기 HTML 포함 |

| 배포 | Functions + Hosting 동기화 | App Hosting 자동 |

| SSR 방식 | Cloud Function 수동 | 프레임워크 네이티브 |

백엔드 정리

- 삭제: serveApp, servePost, serveSitemap, processUserInput, generateBlogPost, templates, SPA shell, A/B 테스트, Claude API 연동

- 유지: submitComment (댓글), Telegram 웹훅, Auth 트리거

스택: Astro 5, React 19 Islands, Tailwind CSS, Firebase App Hosting (Cloud Run)

Astro 처음 들어봤다. claude opus 4.6 나온 후 claude code가 홈페이지 근본적인 문제가 있다며 들고 나온 해결방안.

(문서도 claude에게 맡겨놨더니, 지가 했다고 더 꼼꼼히 썼나보다)

얼마나 많은 삽질을 해왔는지, 삭제된 것도, 새로 집을 지은 것도 모르는 것 투성이다.

하나 하나 만들었다면, 이 모든 변경을 위해 얼마나 많은 리소스와 m/m이 필요했을까.


기술 스택 변천 요약

```

2025.10 HTML

2025.11 HTML/CSS/JS + EasyMDE + Firebase

2025.12 React 19 + Vite + Mantine UI + Tiptap + Firebase

2026.01 + GitHub Actions CI/CD + slug SEO

2026.02 + Cloud Functions SSR + 계산기 3종 + Kakao AdFit

2026.02 Astro 5 SSR + React Islands + Tailwind + App Hosting

위에 서술했듯이, 짧은 기간에 정말 많이도 변경했다.

이 모든게 다 애드센스... 부들부들...

덕분에 재미난 경험을 했다 손 쳐야지 뭐.

결국에 광고는 붙였으니까.

그러니 광고해제좀.. 젭알... 굽신굽신...

Comments