[๐ก] GitHub Pages ๋ธ๋ก๊ทธ์ ๋ฐฉ๋ฌธ์ ์นด์ดํฐ ๋ถ์ด๊ธฐ
โจ GPT์ ์์ฝ ใ
์ ์ GitHub Pages ๋ธ๋ก๊ทธ์ ๋ฌด๋ฃ ๋ฒ์์ Cloudflare Worker์ D1์ ๋ถ์ฌ, ๊ธฐ์กด GA ๋์ ๊ฐ์ ์ด๋ฆฌ๋ฉด์ ์ค๋ ๋ฐฉ๋ฌธ ์์ ๊ธ๋ณ ์กฐํ์๋ฅผ ๋ณด์ฌ์ฃผ๊ฒ ๋ง๋ ๊ธฐ๋ก.
๋ธ๋ก๊ทธ์ ๋ฐฉ๋ฌธ์ ์นด์ดํฐ๋ฅผ ๋ถ์ด๊ณ ์ถ์ด์ก๋ค.
๊ธฐ๋ฅ ์์ฒด๊ฐ ๋๋จํด์๋ ์๋๋ค. ์คํ๋ ค ๋ฐ๋๋ค. ๋๋ฌด ๋น์ฐํ ๊ธฐ๋ฅ์ฒ๋ผ ๋๊ปด์ง๋๋ฐ, GitHub Pages๋ก ๋ง๋ ์ ์ ๋ธ๋ก๊ทธ์๋ ์์ฐ์ค๋ฝ๊ฒ ๋ถ์ด ์์ง ์์๋ค.
Google Analytics๋ ์ด๋ฏธ ๋ฌ๋ ค ์์๋ค. ์ด์์์ธ ๋๋ GA์ ๋ค์ด๊ฐ๋ฉด ๋ฐฉ๋ฌธ์ ์์ ์กฐํ์๋ฅผ ๋ณผ ์ ์์๋ค. ๊ทธ๋ฐ๋ฐ ๊ทธ๊ฑด ๋ธ๋ก๊ทธ ์์ ๋ณด์ด๋ ์ซ์๊ฐ ์๋์๋ค. ๋ฐฉ๋ฌธ์๋ ์ด ๋ธ๋ก๊ทธ๊ฐ ์ค๋๋ ์ฝํ๋์ง, ์ต๊ทผ ๊ธ์ด ์ด๋ ์ ๋ ์ฝํ๋์ง ์ ์ ์๋ค.
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ์ฒ๋ผ ์ค๋, ๋์ , ๊ธ๋ณ ์กฐํ์๊ฐ ์๊ฒ ๋ณด์ด๋ ๋๋์ ์ํ๋ค. ํ์ธ์ฉ ์ซ์๋ผ๊ธฐ๋ณด๋ค๋, ๋ธ๋ก๊ทธ๊ฐ ์ฃฝ์ ์ ์ ํ์ด์ง๊ฐ ์๋๋ผ ๊ณ์ ์ฝํ๊ณ ์๋ค๋ ์ ํธ์ ๊ฐ๊น์ ๋ค.
์์ ์ Jekyll๊ณผ GitHub Pages๋ก ๋ธ๋ก๊ทธ๋ฅผ ์์ํ๋ ์ด์ผ๊ธฐ๋ฅผ ์ ์ด๋ ์ ์ด ์๋ค. ๊ทธ๋์ ํต์ฌ์ ๋จ์ํ๋ค. GitHub Pages์ Jekyll๋ง์ผ๋ก๋ ๋ธ๋ก๊ทธ๋ฅผ ๋ฌด๋ฃ๋ก ์ด์ํ ์ ์๋ค๋ ๊ฒ.
์ด๋ฒ ๋ฌธ์ ๋ ๊ทธ ๋ค์ ๋จ๊ณ์๋ค.
๋ฌด๋ฃ ์ ์ ๋ธ๋ก๊ทธ์ ์ฅ์ ์ ์ ์งํ๋ฉด์, ๋ฐฉ๋ฌธ ํต๊ณ๋ง ์์ฃผ ์๊ฒ ๋์ ์ผ๋ก ๋ถ์ผ ์ ์์๊น?
์กฐ๊ฑด๋ถํฐ ์ ํ๋ค
๋ฐฉ๋ฌธ์ ์นด์ดํฐ ํ๋ ๋ถ์ด๊ฒ ๋ค๊ณ ๊ตฌ์กฐ๊ฐ ์ปค์ง๋ ๊ฑด ์ซ์๋ค.
์ฒ์๋ถํฐ ์กฐ๊ฑด์ ๋ช ๊ฐ ์ ํ๋ค.
- GitHub Pages์ Jekyll ์์ฑ ํ๋ฆ์ ์ ์งํ๋ค.
- ์ ๋ฃ ์๋ฒ๋ ์ฐ์ง ์๋๋ค.
- Cloudflare๋ Firebase๋ ๋ฌด๋ฃ ๋ฒ์ ์์์ ํด๊ฒฐํ๋ค.
- ํ๋กํ ๊ทผ์ฒ์ ์๊ฒ ๋ถ์ธ๋ค.
- ๋ชจ๋ฐ์ผ์์๋ ์ด์ํ๊ฒ ๊ธธ์ด์ง์ง ์๊ฒ ํ๋ค.
- ๋ธ๋ก๊ทธ ์ ์ฒด ํต๊ณ๋ฟ ์๋๋ผ ๊ธ๋ณ ์กฐํ์๋ ๋ณด์ฌ์ค๋ค.
- ๊ธฐ์กด GA ๋์ ๊ฐ์ ๋ฒ๋ฆฌ์ง ์๋๋ค.
๋ง์ง๋ง ์กฐ๊ฑด์ด ํนํ ์ค์ํ๋ค.
์ ์นด์ดํฐ๋ฅผ ๋ถ์ธ๋ค๊ณ ์กฐํ์๊ฐ 0๋ถํฐ ์์ํ๋ฉด ์ด์ํ๋ค. ๋ธ๋ก๊ทธ๋ ์ด๋ฏธ ์ด์ ์ค์ด์๊ณ , GA์๋ ์์ ๋ถํฐ ์์ธ ์กฐํ์๊ฐ ์์๋ค. ๊ทธ๋ ๋ค๊ณ GA๋ง ๊ณ์ ์ฝ์ผ๋ฉด ๋ด๊ฐ ์ํ๋ ์นด์ดํฐ ๋๋๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ์์๋ค.
GA๋ง ์ฝ์ผ๋ฉด ๋๋ ์ค ์์๋ค
์ฒ์์๋ Google Analytics API๋ฅผ ์ฝ์ผ๋ฉด ๋๋ค๊ณ ์๊ฐํ๋ค.
์ด๋ฏธ GA๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์์ผ๋, Cloudflare Worker ํ๋๊ฐ GA API๋ฅผ ํธ์ถํด์ ์ซ์๋ฅผ ๋ฐํํ๋ฉด ๋ ๊ฒ ๊ฐ์๋ค. ์ค์ ๋ก ์๋น์ค ๊ณ์ ์ ๋ง๋ค๊ณ , GA ์์ฑ์ ๊ถํ์ ๋ถ์ด๊ณ , API ํธ์ถ๊น์ง๋ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ ๋ถ์ฌ๋ณด๋ ๋ด๊ฐ ์ํ ๊ฒ๊ณผ ๋ฌ๋๋ค.
GA๋ ๋ถ์ ๋๊ตฌ๋ค. ์ด์์๊ฐ ๋์ค์ ํ๋ฆ์ ๋ณด๋ ๋ฐ๋ ์ข์ง๋ง, ๋ธ๋ก๊ทธ ํ๋ฉด์์ ๋ฐ๋ก ๋ฐ์ํ๋ ๋ฐฉ๋ฌธ์ ์นด์ดํฐ๋ก ์ฐ๊ธฐ์๋ ์ ๋งคํ๋ค. ํนํ ์ค๋ ์ซ์๊ฐ ๋ฌธ์ ์๋ค. ๋ด๊ฐ ๋ฐฉ๊ธ ๋ค์ด๊ฐ๋๋ฐ๋ ์ค๋ ๊ฐ์ด 0์ผ๋ก ๋ณด์ด๋ฉด, ๋ฐฉ๋ฌธ์ ์
์ฅ์์๋ ๊ทธ๋ฅ ๊ณ ์ฅ๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
๋ ์งํ ์ด๋ฆ๋ ํท๊ฐ๋ ธ๋ค. active users์ page views๋ ์๋ก ๋ค๋ฅธ ๊ฐ์ด๋ค. ๋ฐฉ๋ฌธ์ ์๋ฅผ ์๊ฒฉํ๊ฒ ์ก์ผ๋ ค ํ๋ฉด ์ซ์๊ฐ ๋๋ฌด ๋ณด์์ ์ผ๋ก ๋ณด์ด๊ณ , page view๋ฅผ ์ฐ๋ฉด ์ฒด๊ฐ์ ๋ ์์ฐ์ค๋ฝ์ง๋ง ์ด๋ฆ์ ์กฐ์ฌํด์ผ ํ๋ค.
๊ฒฐ๊ตญ ํ๋จ์ ๋จ์ํ๋ค.
GA๋ ๊ณผ๊ฑฐ ๊ธฐ์ค๊ฐ์ผ๋ก ์ฐ๊ณ , ์ง๊ธ๋ถํฐ ์ฌ๋ผ๊ฐ๋ ์นด์ดํธ๋ ๋ด๊ฐ ์ง์ ์ก์.
baseline๊ณผ ์ฆ๊ฐ๋ถ์ ๋๋ด๋ค
์ต์ข ๊ตฌ์กฐ๋ ์ด๋ ๊ฒ ์ก์๋ค.
๊ณต๊ฐ ์กฐํ์ = GA baseline + Cloudflare D1 ์ฆ๊ฐ๋ถ
GA baseline์ ๊ธฐ์กด์ ์์ธ ์ซ์๋ค. ๊ธฐ์ค์ผ์ ์ ํ๊ณ , ๊ทธ ์์ ๊น์ง์ ์ ์ฒด ์กฐํ์์ ๊ธ๋ณ ์กฐํ์๋ฅผ ์ ์ฅํ๋ค.
๊ทธ ๋ค์๋ถํฐ๋ Cloudflare Worker๊ฐ ์ง์ ์นด์ดํธํ๋ค. ๋ฐฉ๋ฌธ์๊ฐ ๋ธ๋ก๊ทธ์ ๋ค์ด์ค๋ฉด JavaScript๊ฐ Worker๋ฅผ ํธ์ถํ๊ณ , Worker๋ D1์ ์ค๋/์/์ ์ฒด/page path๋ณ ์ฆ๊ฐ๋ถ์ ๊ธฐ๋กํ๋ค.
์ ๋ฆฌํ๋ฉด ์ด๋ ๋ค.
๊ธฐ์กด ๋์ ๊ฐ: Google Analytics baseline
์ ์ฆ๊ฐ๋ถ: Cloudflare Worker + D1
๊ณต๊ฐ API: Cloudflare Worker
๋ธ๋ก๊ทธ ํ์: Jekyll include + JavaScript
์ด ๋ฐฉ์์ด ๋ง์์ ๋ค์๋ ์ด์ ๋ ๋ ๋ค ๋ฒ๋ฆฌ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
GA์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ ์ด๋ฆฐ๋ค. ๋์์ ์์ผ๋ก์ ์นด์ดํธ๋ ๋ธ๋ก๊ทธ ํ๋ฉด์์ ๋ฐ๋ก ๋ฐ์ํ๊ฒ ๋ง๋ ๋ค.
์ Cloudflare Worker์ D1์ด์๋
Firebase๋ ํ๋ณด์๋ค. ํ์ง๋ง ์ด ์ ๋ ๊ธฐ๋ฅ์๋ Cloudflare ์ชฝ์ด ๋ ๋จ์ํ๋ค.
GitHub Pages๋ ์ ์ ์ฌ์ดํธ๋ผ ์๋ฒ ์ฝ๋๋ฅผ ๋ ๊ณณ์ด ์๋ค. Worker๋ ๊ทธ ๋น์๋ฆฌ๋ฅผ ์๊ฒ ์ฑ์์ค๋ค. D1์ SQLite ๊ธฐ๋ฐ์ด๋ผ ๋ฐฉ๋ฌธ์ ์นด์ดํฐ์ฒ๋ผ ๋จ์ํ ์ซ์ ์ ์ฅ์๋ ์ถฉ๋ถํ๋ค.
๋น์ฉ ์กฐ๊ฑด๋ ๋ง์๋ค. ๊ฐ์ธ ๋ธ๋ก๊ทธ ๋ฐฉ๋ฌธ์ ์นด์ดํฐ ์ ๋๋ ๋ฌด๋ฃ ๋ฒ์ ์์์ ์ฒ๋ฆฌํ ์ ์๋ค. ๊ฐ์๊ธฐ ๋ง์ ์ฌ๋์ด ๋ชฐ๋ฆฌ๋ฉด ์นด์ดํธ๊ฐ ์ผ๋ถ ํ๋ค๋ฆด ๊ฐ๋ฅ์ฑ์ ์์ง๋ง, ๊ธ ์์ฒด๊ฐ ๋ง๊ฐ์ง์ง๋ ์๋๋ค. ์ ์ด์ ์ด๊ฑด ๊ฒฐ์ ์์คํ ์ด๋ ๊ธ์ต ์ฅ๋ถ๊ฐ ์๋๋ค.
๋ด๊ฐ ์ํ ๊ฑด ์ ํํ ํ๊ณ๊ฐ ์๋๋ผ, ๋ธ๋ก๊ทธ๊ฐ ์ฝํ๊ณ ์๋ค๋ ํ๋ฆ์ ๋ณด์ฌ์ฃผ๋ ์ชฝ์ด์๋ค.
๋ด๊ณผ ์ค๋ณต ๋ฐฉ๋ฌธ์ ์ ๋นํ ๋ง์๋ค
๊ณต๊ฐ ํ์ด์ง์ ์นด์ดํฐ๋ฅผ ๋ถ์ด๋ฉด ๋ด๋ ์ซ์๋ฅผ ์ฌ๋ฆด ์ ์๋ค.
์๋ฒฝํ๊ฒ ๋ง๊ธฐ๋ ์ด๋ ต๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ฌด ๋นก๋นกํ๊ฒ ๋ง์ผ๋ฉด ์คํ๋ ค ๋ด๊ฐ ์ํ ์นด์ดํฐ์ ๋ฉ์ด์ง๋ค. ๋๋ ๋ค์ด๋ฒ ๋ธ๋ก๊ทธ์ฒ๋ผ ์ด๋ ์ ๋ ๋๋ํ๊ฒ ์กํ๋ ์ชฝ์ ์ํ๋ค.
๊ทธ๋์ Worker์์ ๋ช ๊ฐ์ง ์ ๋๋ง ์ฒ๋ฆฌํ๋ค.
- ๋ช ๋ฐฑํ bot user-agent๋ ์ ์ธํ๋ค.
- ๊ฐ์ ๋ฐฉ๋ฌธ์์ ๊ฐ์ ํ์ด์ง ์กฐํฉ์ ์ผ์ ์๊ฐ ์์ ๋ค์ ์ธ์ง ์๋๋ค.
- ๊ธ๋ณ ์กฐํ์๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก path ๊ธฐ์ค ์ฆ๊ฐ๋ถ์ ์๋๋ค.
์ฆ, ๋๋ฌด ์๊ฒฉํ ๋ถ์ ๋๊ตฌ๊ฐ ์๋๋ผ ๊ณต๊ฐ์ฉ ๋ฐฉ๋ฌธ ์นด์ดํฐ์ ๋ง์ท๋ค.
ํ๋ฉด์๋ ์๊ฒ ๋ถ์๋ค
์ฒ์์๋ ํต๊ณ๋ฅผ ์ฌ๋ฌ ์นธ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ค ํ๋ค. ๊ทธ๋ฐ๋ฐ ํ๋กํ ์์ ๋ค์ด๊ฐ๋ UI๋ ์์์ผ ํ๋ค. ์ซ์๊ฐ ๋ง์์ง๋ฉด ์คํ๋ ค ๋ธ๋ก๊ทธ ์ฒซ ํ๋ฉด์ด ์ง์ ๋ถํด์ก๋ค.
๊ทธ๋์ ๊ฒฐ๊ตญ ๋จ๊ธด ๊ฒ์ ์ธ ๊ฐ์ง๋ค.
์ค๋ / ์ / ์ด
์ค๋์ ์ง๊ธ ๋ธ๋ก๊ทธ๊ฐ ์ฝํ๋ ๋๋์ ์ค๋ค. ์์ ์ต๊ทผ ๊ท๋ชจ๊ฐ์ ๋ณด์ฌ์ค๋ค. ์ด์ ๋ธ๋ก๊ทธ๊ฐ ์์์จ ์๊ฐ์ ๋ณด์ฌ์ค๋ค.
๊ธ ๋ชฉ๋ก์๋ ๊ฐ ๊ธ๋ง๋ค ์กฐํ์๋ฅผ ๋ถ์๋ค.
์กฐํ์ 10ํ
์ด ๊ฐ๋ ์ ์ฒด ํต๊ณ์ ๊ฐ์ ๊ตฌ์กฐ๋ค.
๊ธ๋ณ ์กฐํ์ = GA ๊ธ๋ณ baseline + Cloudflare D1 ๊ธ๋ณ ์ฆ๊ฐ๋ถ
์๋ฅผ ๋ค์ด ์ด๋ค ๊ธ์ด GA ๊ธฐ์ค์ผ๋ก 9ํ ์กฐํ๋ ์ํ์๊ณ , ์ ์นด์ดํฐ ์ ํ ์ดํ 1ํ ๋ ์ฝํ๋ค๋ฉด ํ๋ฉด์๋ 10ํ๋ก ๋ณด์ธ๋ค.
์ด๊ฒ ๊ฐ์ฅ ์์ฐ์ค๋ฌ์ ๋ค. ๊ณผ๊ฑฐ ์กฐํ์๋ ๋ฒ๋ฆฌ์ง ์๊ณ , ์์ผ๋ก์ ์กฐํ์๋ ๋ฐ๋ก ์์ธ๋ค.
๊ฒฐ๊ณผ
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ธ๋ก๊ทธ ํ๋กํ ๊ทผ์ฒ์๋ ์ด๋ฐ ์ซ์๊ฐ ๋ถ์๋ค.
์ค๋ 1 / ์ 66 / ์ด 4,944
๊ทธ๋ฆฌ๊ณ ๊ธ ๋ชฉ๋ก์๋ ์ด๋ฐ ์์ผ๋ก ์กฐํ์๊ฐ ๋ถ๋๋ค.
์กฐํ์ 10ํ
๊ธฐ๋ฅ ํ๋๋ง ๋ณด๋ฉด ์๋ค. ํ์ง๋ง ์ด ์์ ์ ๊ฝค ๋ง์์ ๋ ๋ค.
๋ฌธ์ ๋ ๋ช ํํ๋ค. GitHub Pages ๋ธ๋ก๊ทธ์๋ ๋ฐฉ๋ฌธ์ ์นด์ดํฐ๊ฐ ์์๋ค. GA๋ ์์์ง๋ง ๊ณต๊ฐ ํ๋ฉด์ ์นด์ดํฐ๋ก๋ ๋ถ์กฑํ๋ค. ๊ทธ๋ ๋ค๊ณ ๋ธ๋ก๊ทธ ํ๋ ๋๋ฌธ์ ์๋ฒ๋ฅผ ํฌ๊ฒ ๋ง๋ค๊ณ ์ถ์ง๋ ์์๋ค.
๊ทธ๋์ ๊ธฐ์กด GA ๋ฐ์ดํฐ๋ baseline์ผ๋ก ์ด๋ฆฌ๊ณ , Cloudflare Worker์ D1๋ก ์ดํ ์ฆ๊ฐ๋ถ๋ง ์ง์ ์ธ๋ ๊ตฌ์กฐ๋ฅผ ๋ถ์๋ค.
์ ์ ๋ธ๋ก๊ทธ์ ์ฅ์ ์ ๊ทธ๋๋ก ๋๋ค. Markdown์ผ๋ก ๊ธ์ ์ฐ๊ณ , GitHub Pages๋ก ๋ฐฐํฌํ๊ณ , ์ ์ง๋น๋ ๊ฑฐ์ 0์์ ๊ฐ๊น๋ค. ๋์ ๋ฑ ๋ถ์กฑํ ๋ถ๋ถ์๋ง ์์ ์๋ฒ๋ฆฌ์ค ์กฐ๊ฐ์ ์น์๋ค.
๋์ค์ ์ด ๋ธ๋ก๊ทธ๋ฅผ ํฌํธํด๋ฆฌ์ค์ฒ๋ผ ๋ณด์ฌ์ค ์ผ์ด ์๋ค๋ฉด, ์ด๋ฐ ์์ ์ด ์คํ๋ ค ์ค๋ช ํ๊ธฐ ์ข์ ๊ฒ ๊ฐ๋ค. ๊ฑฐ์ฐฝํ ๊ธฐ๋ฅ์ ์๋์ง๋ง, ์ค์ ๋ถํธํจ์์ ์ถ๋ฐํ๊ณ , ๋น์ฉ๊ณผ ๋ณต์ก๋๋ฅผ ์ ํํ๊ณ , ์ด์ ๊ฐ๋ฅํ ํํ๋ก ๋๊น์ง ๋ถ์์ผ๋๊น.
๋๊ธ ๋จ๊ธฐ๊ธฐ