130GB λŒ€μ—­ν­ 폭탄과 Vercel μ •μ§€λΌλŠ” μ§œλ¦Ών•œ μŠ€νŒŒλ§μ„ 치λ₯΄κ³  λ‚˜λ‹ˆ, μ €λŠ” 인프라 λ³΄μ•ˆκΉŒμ§€ λ‹€λ£° 쀄 μ•„λŠ” ν•œ 단계 μ§„ν™”ν•œ λ””μžμΈ μ—”μ§€λ‹ˆμ–΄κ°€ λ˜μ–΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. πŸ§™β€β™‚οΈ

이제 μ„œλΉ„μŠ€λŠ” μ•ˆμ „ν•΄μ‘Œκ³ , 속도도 번개처럼 λΉ¨λΌμ‘ŒμœΌλ‹ˆ λ§ˆμ§€λ§‰ 퍼즐을 맞좜 μ°¨λ‘€μ˜€μŠ΅λ‹ˆλ‹€. λ°”λ‘œ '1인 메이컀가 μ§€μΉ˜μ§€ μ•Šκ³  이 μ„œλΉ„μŠ€λ₯Ό 지속 κ°€λŠ₯ν•˜κ²Œ μš΄μ˜ν•  수 μžˆλŠ” μ‹œμŠ€ν…œ'을 κ΅¬μΆ•ν•˜λŠ” κ²ƒμ΄μ—ˆμ£ .

λ””μžμ΄λ„ˆλ‘œμ„œ μœ μ €λ“€μ΄ μ§€λ£¨ν•΄ν•˜μ§€ μ•Šλ„λ‘ μ‚¬μ΄νŠΈμ— 생동감을 λΆˆμ–΄λ„£λŠ” λ™μ‹œμ—, ν˜Όμžμ„œλ„ λŒ€κΈ°μ—… CS νŒ€μ²˜λŸΌ μ²™μ²™ μš΄μ˜ν•  수 있게 λ§Œλ“  λ§ˆμ§€λ§‰ 여정을 μ†Œκ°œν•©λ‹ˆλ‹€. πŸ› οΈπŸŽ¨

1. 1인 λ©”μ΄μ»€μ˜ κ΅¬μ›νˆ¬μˆ˜: ν…”λ ˆκ·Έλž¨ μ•Œλ¦Όλ΄‡κ³Ό μ–΄λ“œλ―Ό νŽΈμ˜μ„± πŸ€–

μ‚¬μ΄νŠΈ 규λͺ¨κ°€ μ»€μ§€λ©΄μ„œ μœ μ €λ“€μ˜ λΈŒλžœλ“œ μΆ”κ°€ μš”μ²­μ΄λ‚˜ 정보 μ œλ³΄κ°€ ν•˜λ£¨μ—λ„ λͺ‡ 건씩 λ“€μ–΄μ˜€κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ œκ°€ μ˜¨μ’…μΌ μ–΄λ“œλ―Ό λŒ€μ‹œλ³΄λ“œλ§Œ μƒˆλ‘œκ³ μΉ¨ν•˜λ©° 쳐닀보고 μžˆμ„ μˆ˜λŠ” μ—†λŠ” λ…Έλ¦‡μ΄μ—ˆμ£ .

μœ μ €μ˜ λͺ©μ†Œλ¦¬λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μΊμΉ˜ν•˜κΈ° μœ„ν•΄ ν…”λ ˆκ·Έλž¨ μ•Œλ¦Ό APIλ₯Ό μ—°λ™ν–ˆμŠ΅λ‹ˆλ‹€. 이제 μœ μ €κ°€ 제보 폼을 μ œμΆœν•˜λŠ” μˆœκ°„, 제 슀마트폰 ν…”λ ˆκ·Έλž¨μœΌλ‘œ "따릉! μƒˆλ‘œμš΄ λΈŒλžœλ“œ μ œλ³΄κ°€ μ ‘μˆ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€!" ν•˜κ³  μ•Œλ¦Όμ΄ μ¦‰μ‹œ λ‚ μ•„μ˜΅λ‹ˆλ‹€.

여기에 발맞좰 μ–΄λ“œλ―Ό λŒ€μ‹œλ³΄λ“œλ„ λŒ€λŒ€μ μœΌλ‘œ νŠœλ‹ν–ˆμŠ΅λ‹ˆλ‹€.

  • 확인 μ™„λ£Œ 둜직 κ°œμ„ : μ˜ˆμ „μ—λŠ” 제보 처리λ₯Ό ν•˜λ©΄ 데이터가 κ·Έλƒ₯ μ‚­μ œλ˜μ–΄ νžˆμŠ€ν† λ¦¬ 좔적이 μ–΄λ €μ› λŠ”λ°, 이λ₯Ό resolved(해결됨) μƒνƒœκ°’λ§Œ λ³€κ²½λ˜λ„λ‘ μ•„ν‚€ν…μ²˜λ₯Ό λ°”κΏ¨μŠ΅λ‹ˆλ‹€.
  • μž…λ ₯ νŽΈμ˜μ„± κ·ΉλŒ€ν™”: λ””μžμ΄λ„ˆλ“€μ˜ 편의λ₯Ό μœ„ν•΄ λΈŒλžœλ“œ 컬러의 HEX 값을 μž…λ ₯ν•˜λ©΄ RGBλ‚˜ CMYK 값이 μžλ™μœΌλ‘œ κ³„μ‚°λ˜μ–΄ ν‘œμ‹œλ˜λ„λ‘ λ§Œλ“€κ³ , κ°€μ΄λ“œλΌμΈ 제λͺ©λ„ μ•Œμ•„μ„œ λ§€μΉ­λ˜μ–΄ μ±„μ›Œμ§€λŠ” μžμž˜ν•œ 운영 μΉ˜νŠΈν‚€λ“€μ„ ν•œκΊΌλ²ˆμ— μ‹¬μ—ˆμŠ΅λ‹ˆλ‹€.

덕뢄에 퇴근 ν›„ μΉ¨λŒ€μ— λˆ„μ›Œμ„œλ„ 슀마트폰 ν•˜λ‚˜λ‘œ μœ μ €λ“€μ˜ 제보λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ λͺ¨λ‹ˆν„°λ§ν•˜κ³  μ²΄κ³„μ μœΌλ‘œ 검증할 수 μžˆλŠ” μ™„λ²½ν•œ 1인 운영 ν™˜κ²½μ΄ κ°–μΆ°μ‘ŒμŠ΅λ‹ˆλ‹€. πŸ“±βœ¨

2. μ‚¬μ΄νŠΈμ— 생동감 λΆˆμ–΄λ„£κΈ°: κ°€λ‘œ λ§ˆν€΄(Marquee) λ°°λ„ˆμ™€ μ—…λ°μ΄νŠΈ 둜그 🎒

μœ μ €κ°€ μ‚¬μ΄νŠΈμ— 듀어왔을 λ•Œ, "μ—¬κΈ°λŠ” λ©ˆμΆ°μžˆλŠ” μ‚¬μ΄νŠΈκ°€ μ•„λ‹ˆλΌ μ§€κΈˆ 이 μˆœκ°„μ—λ„ μ‚΄μ•„ 숨 μ‰¬λŠ” ν”Œλž«νΌμ΄κ΅¬λ‚˜!"λΌλŠ” 인상을 μ£Όκ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. λ””μžμ΄λ„ˆλ‘œμ„œ μ‚¬μ΄νŠΈμ˜ 첫인상과 리듬감을 μ œμ–΄ν•˜κ³  μ‹Άμ—ˆλ˜ 것이죠.

ν™ˆ ν™”λ©΄ 헀더 μš°μΈ‘μ— '졜근 μΆ”κ°€/μˆ˜μ •λœ λΈŒλžœλ“œ'κ°€ μ‹€μ‹œκ°„μœΌλ‘œ ν˜λŸ¬κ°€λŠ” κ°€λ‘œ λ§ˆν€΄(Marquee) λ°°λ„ˆλ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. μœ μ €λ“€μ€ μ‚¬μ΄νŠΈμ— μ ‘μ†ν•˜μžλ§ˆμž μ–΄λ–€ λΈŒλžœλ“œμ˜ λ‘œκ³ κ°€ μƒˆλ‘œ μ—…λ°μ΄νŠΈλ˜μ—ˆλŠ”μ§€ μ‹œκ°μ μœΌλ‘œ λ°”λ‘œ μΈμ§€ν•˜κ²Œ λ©λ‹ˆλ‹€.

여기에 μΉ΄λ“œ κ·Έλ¦¬λ“œ ν˜•νƒœμ˜ /updates νŽ˜μ΄μ§€λ₯Ό μ‹ μ„€ν•˜μ—¬, 둜고착착의 κΈ°λŠ₯ κ°œμ„  사항과 λΈŒλžœλ“œ μΆ”κ°€ νžˆμŠ€ν† λ¦¬λ₯Ό 투λͺ…ν•˜κ²Œ κ³΅κ°œν–ˆμŠ΅λ‹ˆλ‹€. λ¬Όλ‘  이 νŽ˜μ΄μ§€ μ—­μ‹œ 검색엔진이 κΈμ–΄κ°ˆ 수 μžˆλ„λ‘ sitemap.ts에 κΌΌκΌΌν•˜κ²Œ 포함해 λ‘μ—ˆμ£ ! κ°±μ‹  μ£ΌκΈ°(Change Frequency)와 μš°μ„ μˆœμœ„(Priority)κΉŒμ§€ μ •λ ¬ν•΄ ꡬ글 λ΄‡μ—κ²Œ λ˜μ Έμ£Όμ—ˆμŠ΅λ‹ˆλ‹€. πŸ•΅οΈβ€β™‚οΈ

πŸ“ λŒ€μž₯정을 마치며: λ””μžμΈ μ—”μ§€λ‹ˆμ–΄ 올리브의 사후 회고 πŸ’‘

'둜고착착' ν”„λ‘œμ νŠΈλŠ” μ €μ—κ²Œ λ‹¨μˆœν•œ μ‚¬μ΄λ“œ ν”„λ‘œμ νŠΈ κ·Έ μ΄μƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. μ½”λ“œλ₯Ό λ§Œμ§€λŠ” λ””μžμ΄λ„ˆλ‘œμ„œ ν•œ 단계 μ™„μ „νžˆ κ»μ§ˆμ„ κΉ¨κ³  λ‚˜μ˜€λŠ” μ„±μž₯톡 κ°€λ“ν•œ λ¬΄λŒ€μ˜€μ£ . 이 κΈ΄ 여정을 톡해 μ œκ°€ 얻은 κ°’μ§„ μΈμ‚¬μ΄νŠΈλ“€μ„ κ³΅μœ ν•©λ‹ˆλ‹€.

1️⃣ 단일 μ†ŒμŠ€ 원칙(Single Source of Truth)의 λ¬΄μ„œμ›€

isPngOnly ν”Œλž˜κ·Έ 버그λ₯Ό 작으며 λΌˆμ €λ¦¬κ²Œ λŠκΌˆμŠ΅λ‹ˆλ‹€. ν”„λ‘ νŠΈμ—”λ“œ UIμ—μ„œ λŒ€μΆ© "SVG 파일 μ—†μœΌλ‹ˆκΉŒ PNG μ „μš©μ΄κ² μ§€~" ν•˜κ³  μž„μ‹œλ°©νŽΈμœΌλ‘œ 자체 μΆ”λ‘ ν•˜κ²Œ λ§Œλ“€λ©΄ μ–Έμ  κ°€ 데이터 정합성이 κΉ¨μ§€κ³  λ²„κ·Έμ˜ μ˜¨μƒμ΄ λ©λ‹ˆλ‹€. λͺ¨λ“  UIλŠ” 였직 DB 원본 데이터 ν•˜λ‚˜λ§Œμ„ 바라보고 움직여야 μ½”λ“œκ°€ 깔끔해지고 μœ μ§€λ³΄μˆ˜κ°€ κ°€λŠ₯ν•΄μ§„λ‹€λŠ” 것을 λ°°μ› μŠ΅λ‹ˆλ‹€.

2️⃣ μΊμ‹œ 경계 μ„€κ³„μ˜ μ€‘μš”μ„±

"데이터가 μ™œ μ‹€μ‹œκ°„μœΌλ‘œ μ•ˆ λ°”λ€Œμ§€?"라며 머리λ₯Ό μ₯μ–΄λœ―던 μˆœκ°„ μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μœ μ €μ—κ²Œ λΉ λ₯Έ 화면을 보여주기 μœ„ν•œ ISR 캐싱과, μ–΄λ“œλ―Όμ΄ μ‹€μ‹œκ°„μœΌλ‘œ 데이터λ₯Ό 확인해야 ν•˜λŠ” 동적(Dynamic) 화면은 μ—”λ“œν¬μΈνŠΈ 자체λ₯Ό μ²˜μŒλΆ€ν„° λΆ„λ¦¬ν–ˆμ–΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. 사후에 이 μΊμ‹œ 경계λ₯Ό λ‚˜λˆ„λŠ” λΉ„μš©μ΄ 훨씬 ν¬λ‹€λŠ” 것을 μ•Œμ•˜κΈ°μ—, λ‹€μŒ ν”„λ‘œμ νŠΈλΆ€ν„΄ 섀계 단계뢀터 μΊμ‹œ μ „λž΅μ„ λ‚˜λˆ„μ–΄ 짜기 μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

3️⃣ 인프라와 λ³΄μ•ˆκΉŒμ§€ μ±…μž„μ§€λŠ” λ©”μ΄μ»€μ˜ μžμ„Έ

130GB λŒ€μ—­ν­ 폭탄을 맞고 계정이 μ •μ§€λ˜μ—ˆμ„ λ•Œ, λ§Œμ•½ μ œκ°€ 껍데기 λ””μžμΈλ§Œ ν•  쀄 μ•„λŠ” λ””μžμ΄λ„ˆμ˜€λ‹€λ©΄ λ°±μ—”λ“œ κ°œλ°œμžλ‚˜ 인프라 λ‹΄λ‹Ήμžμ—κ²Œ 발만 동동 ꡬλ₯΄λ©° μš”μ²­ν–ˆμ„ κ²λ‹ˆλ‹€. ν•˜μ§€λ§Œ 미듀웨어λ₯Ό 직접 μ—΄μ–΄ Referer 도메인을 κ²€μ¦ν•˜κ³ , next.config.ts 헀더λ₯Ό μˆ˜μ •ν•΄ λ‹€μΈ΅ 방어선을 λ‚΄ μ†μœΌλ‘œ ꡬ좕해 λ‚΄λ©΄μ„œ, "λ‚΄κ°€ κ·Έλ¦° 화면이 μ‚¬μš©μžμ—κ²Œ μ „λ‹¬λ˜λŠ” 전체 νŒŒμ΄ν”„λΌμΈκ³Ό λΉ„μš©κΉŒμ§€ μ±…μž„μ§€λŠ” 것"이 μ§„μ •ν•œ ν’€μŠ€νƒ λ””μžμΈ μ—”μ§€λ‹ˆμ–΄μ˜ κ°€μΉ˜μž„μ„ 증λͺ…ν•΄ λƒˆμŠ΅λ‹ˆλ‹€. 😎

🎯 Epilogue: 둜고착착이 증λͺ…ν•˜λŠ” λ‚˜μ˜ κ°€μΉ˜

이제 둜고착착(logochakchak.site)은 싀무 λ””μžμ΄λ„ˆμ™€ λ§ˆμΌ€ν„°λ“€μ΄ μ–Έμ œλ“  찾아와 λΈŒλžœλ“œ μžμ‚°μ„ 1초 λ§Œμ— μŠ€μΊ”ν•  수 μžˆλŠ” λ‹¨λ‹¨ν•˜κ³  μ•ˆμ „ν•œ ν”Œλž«νΌμœΌλ‘œ 자리 μž‘μ•˜μŠ΅λ‹ˆλ‹€.

아이디어가 슀치자마자 Figma λŒ€μ‹  에디터λ₯Ό 켜고 Vibe Coding으둜 ν”„λ‘œν† νƒ€μž…μ„ 2일 λ§Œμ— λ½‘μ•„λ‚΄λ˜ μ§œλ¦Ών•œ 속도감뢀터, ꡬ글 λ΄‡κ³Όμ˜ 심리전을 ν†΅ν•œ Soft 404 ν•΄μ†Œ, Notionμ—μ„œ Supabase둜의 κ³Όκ°ν•œ μ•„ν‚€ν…μ²˜ 이전, 그리고 λŒ€μ—­ν­ 폭탄을 막아낸 미듀웨어 λ°©μ–΄μ„ κΉŒμ§€!

μ•„λ¦„λ‹€μš΄ 화면을 κ·Έλ¦¬λŠ” 것에 λ©ˆμΆ”μ§€ μ•Šκ³ , ν”„λ‘œλ•νŠΈμ˜ λΉ„μ¦ˆλ‹ˆμŠ€μ™€ 인프라, 그리고 운영의 지속 κ°€λŠ₯μ„±κΉŒμ§€ μ—”μ§€λ‹ˆμ–΄λ§μœΌλ‘œ ν•΄κ²°ν•΄ λ‚΄λŠ” 메이컀. 그게 λ°”λ‘œ μ € λ””μžμΈ μ—”μ§€λ‹ˆμ–΄ μ˜¬λ¦¬λΈŒμž…λ‹ˆλ‹€. πŸš€

κ·Έλ™μ•ˆ '둜고착착'의 μΉ˜μ—΄ν–ˆλ˜ 생쑴기λ₯Ό μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. μ €λŠ” 또 λ‹€μŒ 문제λ₯Ό ν•΄κ²°ν•˜λŸ¬ κ°€λ³Όκ²Œμš”! λŒ€λ‹¨νžˆ κ°μ‚¬ν•©λ‹ˆλ‹€! 🎸✨