Notice
Recent Posts
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ด€๋ฆฌ ๋ฉ”๋‰ด

harry

๐ŸŽฒ ์นด๋“œ๊ฒŒ์ž„ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฐœ๋ฐœ๊ธฐ ๋ณธ๋ฌธ

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

๐ŸŽฒ ์นด๋“œ๊ฒŒ์ž„ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฐœ๋ฐœ๊ธฐ

h0ng.jh 2023. 2. 22. 01:21

๐Ÿ“‚ ๊ฐœ์š”

๋‹น์‹œ์— ์ทจ๋ฏธ๋กœ ํ•˜๋˜ ๊ฒŒ์ž„์˜ ๊ด€๋ จ ์ •๋ณด๋“ค์„ ์•Œ์•„๋ณด๊ธฐ์œ„ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ์ดํŠธ๋“ค์„ ์ข€ ๋‘˜๋Ÿฌ๋ณด๋‹ค ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ์ดํŠธ๊ฐ€ ์—†๋Š”๊ฑธ ์•Œ๊ฒŒ๋๋‹ค.

๋ฌผ๋ก  ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ํ•ด์™ธ ์‚ฌ์ดํŠธ๋ฅผ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ๊ด‘๊ณ ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ณ , ์‚ฌ์ดํŠธ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ ค์„œ ์ด์šฉํ•˜๊ธฐ๊ฐ€ ๋ถˆํŽธํ–ˆ๋‹ค.

์ด๋Ÿฐ์ ๋“ค๊ณผ ๊ณผ๊ฑฐ์— ํ–ˆ๋˜ ๊ฒŒ์ž„๊ด€๋ จ ์›นํ”„๋กœ์ ํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ž์ƒ์ ์œผ๋กœ ํ™๋ณด๋˜์–ด ํ”ผ๋“œ๋ฐฑ์ด๋‚˜, ์˜๊ฒฌ๋“ค์„ ๋“ค์„ ์ˆ˜ ์žˆ๋˜๊ฒƒ์ด ์ƒ๊ฐ๋‚˜ ๋‚ด๊ฐ€ ํ•œ๋ฒˆ ๊ฐœ๋ฐœํ•ด๋ณผ๊นŒ ๋ผ๋Š” ๋งˆ์Œ์œผ๋กœ ์ง„ํ–‰ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

โ“ ๋ญ˜ ๊ฐœ๋ฐœํ–ˆ๋‚˜

๋จผ์ € ์‚ฌ์ดํŠธ๋‚ด์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฐ€์žฅ ํฐ ์ฃผ์ œ์ธ ๋งˆ๋ธ”์Šค๋ƒ…์ด๋ผ๋Š” ์นด๋“œ๊ฒŒ์ž„์—์„œ๋Š” 16์žฅ์˜ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์นด๋“œ๋ฅผ ํ•˜๋‚˜์˜ ๋ฑ(์นด๋“œ๋ญ‰์น˜)์œผ๋กœ ๊ตฌ์„ฑํ•ด ๊ฒฝ์Ÿํ•˜์—ฌ ์Šน๋ถ€ํ•˜๋Š” ๊ฒŒ์ž„์ด๋‹ค.

์‰ฝ๊ฒŒ ๋น„์œ ํ•˜์ž๋ฉด 16๋งˆ๋ฆฌ์˜ ํฌ์ผ“๋ชฌ๋“ค์„ ์นด๋“œ์˜ ํ˜•ํƒœ๋กœ ์ด์šฉํ•ด ์‹ธ์šฐ๋Š” ๊ฒŒ์ž„์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋ ๊ฒƒ๊ฐ™๋‹ค.

์ด๋Ÿฌํ•œ ์นด๋“œ ๊ฒŒ์ž„์˜ ํŠน์ง•์œผ๋กœ๋Š” ์–ด๋–ค 16์žฅ์˜ ์นด๋“œ๋ฅผ ์กฐํ•ฉ ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์ „๋žต์˜ ๋‹ค์–‘์„ฑ์„ ๋Š˜๋ฆฌ๋Š”๋ฐ

๊ฒฝ์Ÿ์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋งŒํผ ์–ด๋–ค ๋ฑ(์กฐํ•ฉ)์ด ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ์ง€, ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ๋ฑ์„ ์–ด๋–ป๊ฒŒ ๋Œ€ํ•ญํ•˜๋Š”์ง€๊ฐ€ ๋ˆˆ์น˜์‹ธ์›€์ฒ˜๋Ÿผ ์ด๋ฃจ์–ด์ง„๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์งง๊ฒŒ๋Š” ๋ฉฐ์น ๋‚ด์— ๊ฐ€์žฅ ๊ฐ•ํ•œ๋ฑ์ด ๋ฐ”๋€Œ๊ณ  ์ด๋Ÿฐ ๋™ํ–ฅ๋“ค์„ ์ง€์†์ ์œผ๋กœ ์ฒดํฌํ•ด์•ผ ์กฐ๊ธˆ์ด๋ผ๋„ ๋” ์œ ๋ฆฌํ•œ์ ์ด ์นด๋“œ๊ฒŒ์ž„์˜ ํŠน์ง•์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋ฑ์˜ ์ค‘์š”์„ฑ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ๋ฑ์„ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฑ์ฝ”๋“œ๋ผ๋Š” ์ผ์ •ํ•œ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•˜๋ฉด ๋‹ค๋ฅธ์‚ฌ๋žŒ์˜ ๋ฑ์„ ๋ณต์‚ฌํ•ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋„ ๊ฒŒ์ž„๋‚ด์— ๋งˆ๋ จ๋˜์–ด์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ณต์œ ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์ด ๋ฑ์„ ๊ณต์œ ํ• ๋•Œ ๋ฑ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐ์–ด ์˜ฌ๋ฆฌ๋Š”๊ฒƒ์ด ๋” ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ์œ ์ €๋“ค์€ ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ ์ž์ฃผ ์‚ฌ์šฉํ–ˆ๊ณ 

์ด์šฉํ•˜๋Š” ์ž…์žฅ์—์„œ ๋ฑ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋Š”๊ฒƒ์ด ์•„๋‹Œ ์Šคํฌ๋ฆฐ์ƒท์„ ๋ณด๊ณ  16์žฅ์„ ์ผ์ผํžˆ ์ถ”๊ฐ€ํ•ด ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์—ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํŠธ์˜ ์ปจํ…์ธ ์—์„œ ์ž๋™์œผ๋กœ ๋ฑ์ฝ”๋“œ๋ฅผ generateํ•˜๊ณ  ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋ฐ”๋กœ ๋ณต์‚ฌํ•ด ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด ๋ฑ์„ ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ณต์œ  ํ•  ์ˆ˜์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์—ˆ๋‹ค.


๋‘๋ฒˆ์งธ๋กœ๋Š” ๋ฑ์˜ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์ธ๋ฐ ์•„๋ฌด๋ฆฌ ์ข‹์€ ์นด๋“œ์˜ ๊ตฌ์„ฑ์ด๋ผํ•ด๋„ ๋‚ด๊ฐ€ ๊ฐ–์ง€๋ชปํ•œ ์นด๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ๋‹ค๋ฉด ์“ธ๋ชจ์—†๋Š” ์ •๋ณด์— ๊ฐ€๊นŒ์› ๋‹ค.

๊ฒŒ์ž„๋‚ด์—์„œ ์นด๋“œ๋ฅผ ๊ฐ–๋Š” ๊ณผ์ •์€ ํŠน์ • ๋ ˆ๋ฒจ์— ๋„๋‹ฌํ•˜๊ฑฐ๋‚˜, ๋žœ๋ค์œผ๋กœ ์–ป์–ด์ง€๋Š” ๋ฐฉ์‹์ธ๋ฐ ์ด ๋ถ€๋ถ„์„ ๊ฒŒ์ž„๋‚ด์—์„œ ํ™•์ธํ•˜๊ธฐ๊ฐ€ ๊ต‰์žฅํžˆ ์–ด๋ ค์› ๋‹ค.

์ด๋Ÿฌํ•œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ๋‚ด ์นด๋“œ ๋ณด์œ  ํ˜„ํ™ฉ์„ ํ•œ๋ˆˆ์— ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๊ฐœ๋ฐœ์„ ์™„๋ฃŒํ–ˆ๊ณ , ๊ทธ๋กœ ๋งŒ๋“ค์ˆ˜ ์žˆ๋Š” ๋ฑ๋“ค์„ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์ค‘์ด๋‹ค.

์ด ๊ณผ์ •์—์„œ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋“ค์ค‘ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์„ ์ƒ๊ฐํ•ด๋ดค๋Š”๋ฐ electron ๊ธฐ๋ฐ˜์˜ ๊ฐ„๋‹จํ•œ ๋ฐ์Šคํฌํƒ‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด

๋กœ๊ทธํŒŒ์ผ์„ ์ฝ์–ด ๊ณ„์ •๊ณผ ์—ฐ๋™ํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ๊ฐ™์ด ๋งŒ๋“ค์–ด ์ œ๊ณตํ–ˆ๋‹ค.

electron์€ ์‚ฌ์‹ค ์ „ํ˜€ ํ•ด๋ณด์งˆ ์•Š์•„ ์ƒ๊ฐ๋ณด๋‹ค ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋์—ˆ๋Š”๋ฐ, ๊ทธ๋ž˜๋„ ์žˆ์œผ๋ฉด ๋„ˆ๋ฌด ์ข‹์€ ๊ธฐ๋Šฅ์ผ๊ฒƒ๊ฐ™์•„ github์— ์˜ฌ๋ผ์™€์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค๋“ค์„ ์ฐธ๊ณ ํ•ด๊ฐ€๋ฉฐ ๋งŒ๋“ค์—ˆ์—ˆ๋‹ค.

๐Ÿงญํ”„๋กœ์ ํŠธ ์„ค๊ณ„

๋ฐฑ์—”๋“œ๋Š” ๊ธฐ์กด์— ์‚ฌ์šฉํ–ˆ๋˜ express๋กœ ์ง„ํ–‰ํ•˜๋ ค ํ–ˆ์ง€๋งŒ ๊ฐœ๋ฐœ ๊ด€๋ จ ์œ ํŠœ๋ธŒ๋ฅผ ๋ณด๋‹ค ์•„๋ž˜ ์˜์ƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

pocketbase

Pocket Base ์— ๊ด€ํ•ด ์„ค๋ช…ํ•˜๋Š” ์˜์ƒ์ธ๋ฐ, ๊ฐ„๋‹จํžˆ ๋งํ•ด Go๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“  Sqlite๋ฅผ ์ด์šฉํ•œ ๋ฐฑ์—”๋“œ ํ”Œ๋žซํผ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์–ด๋“œ๋ฏผ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๊ณ  ํ…Œ์ด๋ธ”์˜ ํ˜•ํƒœ์— ๋”ฐ๋ผ API๋„ ์ž๋™์ƒ์„ฑํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ฝค ํŽธ๋ฆฌํ•ด๋ณด์—ฌ ์ด์šฉํ•ด๋ดค๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ๋Š” Next.js๋ฅผ ์ด์šฉํ–ˆ๋Š”๋ฐ pocketbase์—์„œ ์ƒ์„ฑ๋œ API๋‚˜ ์ฝ”๋“œ๋ฅผ Next์˜ Serverless function์—์„œ callํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„ํ–ˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” ์•„๋ฌด๋ž˜๋„ pocketbase๋ฅผ ์ด์šฉํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์›Œ๋‚™ ๊ธฐ์กด์˜ fetch, axios์™€๋Š” ์ด์งˆ์ ์ธ ๊ตฌ์กฐ์˜€๊ณ  pocketbase๋ฅผ ์ด์šฉํ•˜๋Š” ๋ถ€๋ถ„์„ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ์—์„œ

๋ถ„๋ฆฌํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋„๋ก ์œ„ํ•จ์ด์—ˆ๋‹ค.

์š”์•ฝํ•ด๋ณด์ž๋ฉด Serverless function์—์„œ pocketbase๋ฅผ ์ด์šฉํ•˜๊ฒŒ๋‘๊ณ  SSR๊ณผ CSR์—์„œ ์ด์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ fetching ์ž‘์—…์€

serverless function์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ๊ฐ์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ํ–ˆ๋‹ค.


์ปดํฌ๋„ŒํŠธ ํด๋” ๊ตฌ์กฐ๋Š” ํšŒ์‚ฌ์—์„œ ๋‹ค๋ค˜๋˜ ํ”„๋กœ์ ํŠธ๋‚˜ ๊ธฐ์กด์— ์ง„ํ–‰ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ๋ฅผ atomic ํŒจํ„ด์œผ๋กœ ๋‚˜๋ˆด์—ˆ๋Š”๋ฐ

Molecules๊ณผ Organism์˜ ๊ตฌ๋ถ„์ด ์ปดํฌ๋„ŒํŠธ ์ž‘์„ฑ๋งˆ๋‹ค ๊ณ ๋ฏผ๋˜๋Š” ์ˆœ๊ฐ„๋“ค์ด ๊ต‰์žฅํžˆ ๋งŽ์•˜์—ˆ๋‹ค.

๋˜ํ•œ Atom๊ณผ Molecules๋„ ์ด๊ฑธ "๊ฐ€์žฅ์ž‘์€ ๋‹จ์œ„๋กœ ๋ด์•ผํ•˜๋‚˜?" ๋ผ๋Š” ์ƒ๊ฐ๊ณผ "๋‘๊ฐœ ์ด์ƒ์˜ atom๋“ค์ด ํ•ฉ์ณ์ ธ ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ" ์ธ๋ฐ ์ดํ›„์— ๋ณ€๊ฒฝ๋˜์–ด Organism์œผ๋กœ

์˜ฎ๊ฒจ์ง€๋Š”๋“ฑ์˜ ์ˆ˜์ •์‚ฌํ•ญ์ด ์ƒ๊ธด๋‹ค๋ฉด ์ „์ฒด์ ์ธ ๊ตฌ์กฐ๊ฐ€ ํํŠธ๋Ÿฌ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ๋‚˜๋ฆ„๋Œ€๋กœ ๊ธฐ์ค€์„ ๋‹ค์‹œ ์žก์•„ ์ง„ํ–‰ํ•ด๋ดค๋‹ค.

๋ฌผ๋ก  ํšŒ์‚ฌ์—์„œ ๋‹ค๋ฃจ๋˜ ์ฝ”๋“œ์— ๋น„ํ•ด์„œ ์ž‘์€ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ์˜€๋‹ค๋Š” ์ ๋„ ํด๋” ๊ตฌ์กฐ ์„ค๊ณ„์— ํฐ ์˜ํ–ฅ์„ ๋ผ์ณค๋‹ค

๋‚ด๊ฐ€ ์žก์€ ๊ธฐ์ค€์„ ์งง๊ฒŒ ์„ค๋ช…ํ•ด๋ณด์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

  • @atoms : ๊ธฐ์ดˆ์ ์ธ UI ๊ตฌ์„ฑ์˜ ๋‹จ์œ„
    • atoms ๋Š” ๊ธฐ์กด์˜ atomic ํŒจํ„ด์—์„œ์˜ atoms์™€ ๊ฐ™์€ ์—ญํ• 
  • @molecules : atomic๋“ค์˜ ์ง‘ํ•ฉ์ด๋ผ๋ฉด ๋ฌด์กฐ๊ฑด ์—ฌ๊ธฐ์— ํ•ด๋‹น
    • ์‚ฌ์‹ค์ƒ ๊ธฐ์กด์˜ Molecules๊ณผ Organism์— ํ•ด๋‹น ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ชจ๋‘ ํ•ฉ์ณ ๊ด€๋ฆฌํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
  • @template : Page ๋‹จ๊ณ„ ์ด์ „์˜ ๊ฐ€์žฅ ์ƒ๋‹จ์— ์œ„์น˜ํ•˜๋Š” ๊ตฌ์กฐ๋กœ, Page์—์„œ ์ด์šฉ๋˜๋Š” ๋ ˆ์ด์•„์›ƒ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ฐ€์žฅ ํฌ๊ฒŒ ๊ตฌ๋ณ„๋˜๋Š” ๋‹จ์œ„
  • @page : ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€, next์˜ pages ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜ํ•œ๋‹ค

์ƒํƒœ๊ด€๋ฆฌ๋Š” ๊ธฐ์กด์— redux๋ฅผ ์ด์šฉํ–ˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์—๋Š” recoil๊ณผ react-query๋ฅผ ์ด์šฉํ•˜์—ฌ Server State์™€ Client State ๋‚˜๋ˆ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์ด์šฉํ–ˆ๋‹ค.

๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ• ๋•Œ Client State์™€ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋กœ์ง์— ๊ด€ํ•œ ์ฝ”๋“œ์˜ ๊ด€๋ฆฌ๋ฅผ ๊ณ ๋ฏผ์„ ํ–ˆ์—ˆ์„ ๋‹น์‹œ ์ ‘ํ–ˆ๋˜ ์„ธ๋ฏธ๋‚˜๊ฐ€ ์ƒ๊ฐ๋‚˜์„œ ์˜€๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด ๋ถ€๋ถ„๋„ ๊ต‰์žฅํžˆ ๋งŒ์กฑํ–ˆ๋Š”๋ฐ ์šฐ์„  react-query๋ฅผ ์ด์šฉํ•˜๋Š” hook๋“ค์„ ๋”ฐ๋กœ useCardList(), usePostList() ์ฒ˜๋Ÿผ @query ํด๋”์— ๋‚˜๋ˆ„์–ด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋กœ์ง์„r ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ, ์ฒ˜๋ฆฌ ๋กœ์ง์— ๊ด€ํ•œ ์ฝ”๋“œ๋„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. (์บ์‹ฑ๋„ ๋•Œ์—๋”ฐ๋ผ ํšจ๊ณผ์ ์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.)

recoil์€ Server State์™€ ๋ถ„๋ฆฌ๋œ Client๋‚ด์—์„œ ์ด์šฉํ•˜๋Š” State๋“ค๋งŒ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๋Š”์ ์ด ๊ฐ™์ด ์ด์šฉํ•˜๋ฉด์„œ ๋Š๊ผˆ๋˜ ์žฅ์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋œ๋‹ค.

๐Ÿ‘€ ์–ด๋–ค ๊ณผ์ •์„ ๊ฑฐ์ณค๋‚˜

๋ฐฑ์—”๋“œ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋“ค์€ ์ด๋ฏธ ์กด์žฌํ•˜๋˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๋‚˜ ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ puppteer ์ด์šฉํ•ด ๊ธฐ์ดˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ–ˆ๊ณ  ์›Œ๋‚™ pocketbase์—์„œ ์ง€์›ํ•ด์ฃผ๋Š”๊ฒƒ๋“ค์ด ๋งŽ์•„

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จํ•ด์„œ๋Š” ์ˆ˜๊ณ ๋ฅผ ์ข€ ๋œ ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ... ์•„์‰ฌ์› ๋˜ ์ ๋„ ์žˆ์—ˆ๋‹ค. (์•„๋ž˜ ์•„์‰ฌ์› ๋˜์ ์— ํ›„์ˆ )

์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ, ๋นŒ๋“œ์‹œ๊ฐ„์„ ์ตœ๋Œ€ํ•œ ๋‹จ์ถ•์‹œํ‚ค๊ณ  ์‹ถ์—ˆ๊ณ  ํผํฌ๋จผ์Šค ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ €์žฅํ•ด ๋†“์€ ์ด๋ฏธ์ง€์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ณด์—ฌ์ง€๋Š” UI์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ์›น ํผํฌ๋จผ์Šค ์ตœ์ ํ™”์—์„œ ๋ฐฐ์šด imgix๋กœ ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด๋ดค๋Š”๋ฐ ํ™•์‹คํžˆ light house์—์„œ ๊ฐ์ ๋‹นํ•˜๋Š” ์š”์ธ๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.


ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์ตœ๊ทผ์— ์•„์ดํŒจ๋“œ๋ฅผ ์ƒ€๊ธฐ ๋•Œ๋ฌธ์—(?) ๋ฐ˜์‘ํ˜•๋„ ์ง€์›์„ ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ๋ฐœํ–ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ ํŽ˜์ด์ง€๋งˆ๋‹ค ์ด์šฉ๋˜๋Š” ๋ ˆ์ด์•„์›ƒ์„ ๋ช‡๊ฐœ์ •๋„ ํ”ผ๊ทธ๋งˆ๋‚˜ ์•„์ดํŒจ๋“œ์— ๊ทธ๋ ค๋ณด๋ฉด์„œ ์ตœ๋Œ€ํ•œ css์˜ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋งŒ์œผ๋กœ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„, ๊ตฌํ˜„ํ–ˆ๋‹ค.

next๋ฅผ ์ด์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๊ฒ€์ƒ‰์—”์ง„์— ๋” ์ž˜ ๋…ธ์ถœ๋˜๋„๋ก ํ•˜๊ณ  ์‹ถ์€๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ์ด์œ  ์˜€๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•œ ๋ฉ”ํƒ€ํƒœ๊ทธ์™€ seo๋ฅผ ๋ฐฐ์น˜ํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„œ๋น„์Šค ํŠน์„ฑ์ƒ ํŠน์ • ๊ธฐ๊ฐ„๋™์•ˆ์—๋Š” ์นด๋“œ์˜ ํšจ๊ณผ๋‚˜ ์ŠคํŽ™์ด ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํŽ˜์ด์ง€์˜ cache-control์„ ์•Œ๋งž๊ฒŒ ์ˆ˜์ •ํ–ˆ๊ณ 

hydration ๊ด€๋ จ ํผํฌ๋จผ์Šค ์ด์Šˆ๋ฅผ ์ตœ๋Œ€ํ•œ ์—ด์‹ฌํžˆ ๋””๋ฒ„๊น…ํ•ด๊ฐ€๋ฉฐ ์ดˆ๊ธฐ ๋กœ๋”ฉ์†๋„๋ฅผ ์ตœ๋Œ€ํ•œ ๋น ๋ฅด๊ฒŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.

์•ž์„œ ๋งํ–ˆ๋˜ ๋ฑ๋“ค์„ ๋ณด์—ฌ์ฃผ๋Š” ํŽ˜์ด์ง€์—์„œ๋Š” ์‹œํšจ์„ฑ์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌดํ•œ์Šคํฌ๋กค๋กœ ๊ตฌํ˜„ํ•ด ์ฒซํŽ˜์ด์ง€ ์ง„์ž…์‹œ ๊ฐ€์žฅ ์ตœ์‹ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋„๋กํ–ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฑ์— ๊ด€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ์œ„ํ•ด ๋””ํ…Œ์ผ ํŽ˜์ด์ง€๋กœ ์ง„์ž…ํ•˜๋Š” ๊ฒฝ์šฐ ๋’ค๋กœ๊ฐ€๊ธฐ๋ฅผ ํ–ˆ์„๋•Œ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ณธ ์ง€์ ์œผ๋กœ ๋Œ์•„๊ฐ€์•ผํ•˜๋Š” ์ ๊ณผ ์†Œ์š”์‹œ๊ฐ„์„ ์ค„์ด๋Š”๋ฐ ์‹œ๊ฐ„์„ ๊ต‰์žฅํžˆ ๋งŽ์ด ์Ÿ์•˜๋‹ค.

์ด์ ์€ ์–ธ๋œป๋ด์„œ๋Š” ์‚ฌ์†Œํ•ด ๋ณด์ผ ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ ์ด์šฉ์ž์˜ UX๊ฐ€ ๊ต‰์žฅํžˆ ์ €ํ•ด๋˜๊ณ , ์‚ฌ์ดํŠธ๋ฅผ ์ดํƒˆํ•˜๋Š” ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์˜€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฒ˜์Œ ์ƒ๊ฐํ–ˆ๋˜ ๋ฐฉ์‹์€ ๋””ํ…Œ์ผ ํŽ˜์ด์ง€๋กœ ์ด๋™๋˜๊ธฐ์ „์— sessionStorage์— ์Šคํฌ๋กค ์ง€์ ์„ ์ €์žฅํ•˜๊ณ , ๋’ค๋กœ๊ฐ€๊ธฐ๋กœ ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€์— ์ง„์ž…ํ–ˆ์„๋•Œ ์ €์žฅ๋œ ์ง€์ ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ

์ด ๋ฐฉ๋ฒ•์€ ๋””ํ…Œ์ผ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ณ , ๋’ค๋กœ๊ฐ€๊ธฐ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํŽ˜์ด์ง€(home)์œผ๋กœ ์ด๋™ํ–ˆ๋‹ค๊ฐ€ ๋ฆฌ์ŠคํŠธ๋กœ ์ง„์ž…ํ•œ๋‹ค๋ฉด ์Šคํฌ๋กค์ด ๋ณต์›๋œ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์„ ์‹œ๋„ํ•ด๋ณด๋ฉฐ ์ฐพ์€๊ฒƒ์ด ์ธ์Šคํƒ€๊ทธ๋žจ์ด๋‚˜ ํŠธ์œ„ํ„ฐ์—์„œ ์ฃผ๋กœ ์ด์šฉํ•˜๋Š” Route as Modal์ด์—ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์Šคํฌ๋กค ๊ด€๋ จ ์ด์Šˆ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , shallow routing์„ ๋•Œ์—๋”ฐ๋ผ ์ด์šฉํ•˜๋ฉฐ SEO๊ฐ€ ๋ณด์žฅ๋œ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๐Ÿ”ง ์•„์‰ฌ์› ๋˜์ 

pocketbase์—์„œ๋Š” relation ์„ค๊ณ„๊ฐ€ mysql๊ณผ๋Š” ๋‹ค๋ฅธ์ ์ด๋‚˜ n-gram search์„ ๋ชป์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ๋„ ์ข€ ์•„์‰ฌ์› ๊ณ  ์ฟผ๋ฆฌํŠœ๋‹์„ ํ• ๋ ค๋ฉด Go๋ฅผ ์•Œ์•„์•ผํ•˜๋Š”๋ฐ...

๋‚ด๊ฐ€ ๋ณด์œ ํ•œ ์นด๋“œ์˜ ํ˜„ํ™ฉ์— ๋”ฐ๋ผ ๋ฑ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฟผ๋ฆฌํŠœ๋‹์„ ํ•ด์•ผํ• ๊ฒƒ ๊ฐ™์•„ ์ข€ ์•Œ์•„๋ด์•ผํ• ๊ฒƒ ๊ฐ™๋‹ค.

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ฒˆ๋“ค์‚ฌ์ด์ฆˆ๋ฅผ ์ตœ๋Œ€ํ•œ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด ๋””์ž์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ์ง„ํ–‰ํ•ด๋ดค๋Š”๋ฐ

์ƒ๊ฐ๋ณด๋‹ค ์Šต๊ด€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” css์ฝ”๋“œ๋“ค์˜ ์ค‘๋ณต์ด ๋„ˆ๋ฌด ๋งŽ์•„ ์ด ๋ถ€๋ถ„์€ ์ข€ ์•„์‰ฌ์› ๋˜ ์ ์ด๊ธฐ์— ๋‹ค์Œ๋ฒˆ์—๋Š” ์ž์ฃผ ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„๋“ค์„ ํ† ๋Œ€๋กœ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•ด๋†”์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ๋„ ๋“ค์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„๋ฌด๋ž˜๋„ ํ˜„์žฌ ์‚ฌ์ดํŠธ๋‚ด์˜ ์ปจํ…์ธ ๋ฅผ ์ฑ„์šฐ๋Š” ๊ณผ์ •์ด ๋‚ด๊ฐ€ ๋”ฐ๋กœ ์‹œ๊ฐ„์„ ๋‚ด์„œ ๋ฑ๊ด€๋ จ ์ •๋ณด๋“ค์„ ์ˆ˜์ง‘ํ•˜๊ณ  admin์„ ํ†ตํ•ด ๋“ฑ๋ก์„ ์ผ์ผํžˆ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ข€ ๋ฒˆ๊ฑฐ๋กœ์šด๋ฐ

OpenCV๋ฅผ ํ†ตํ•ด ์Šคํฌ๋ฆฐ์ƒท์„ ์บก์ฒ˜ํ•˜๊ณ  ์–ด๋–ค ์นด๋“œ๋ฅผ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ์•„๋‚ผ์ˆ˜์žˆ๋‹ค๋ฉด ์ฃผ๊ธฐ์ ์œผ๋กœ ์ปจํ…์ธ ๋ฅผ ์ฑ„์›Œ๋„ฃ์„ ์ˆ˜ ์žˆ์„๊ฑฐ๊ฐ™์€๋ฐ ์ด ๋ถ€๋ถ„์ด ์ž๋™ํ™”๊ฐ€ ์•ˆ๋˜์–ด์žˆ๋Š” ์ƒํƒœ๋ผ

์–ด๋–ป๊ฒŒ ํ• ์ง€ ์ข€ ์ƒ๊ฐํ•ด๋ด์•ผํ• ๊ฒƒ๊ฐ™๋‹ค.

๊ทธ๋™์•ˆ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ถ€ํ„ฐ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ํ™•์‹คํžˆ ์–ด์ด์—†๋Š” ์‹ค์ˆ˜๋“ค์ด ๋งŽ์ด ์ค„์–ด๋“ค์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํƒ€์ž…๊ฐ€๋“œ๋‚˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์„ ์ข€ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์ง„ ๋ชปํ•˜๊ณ  ์žˆ๋Š”๊ฑฐ ๊ฐ™์•„ ๋ฆฌํŒฉํ† ๋ง์„ ๋ช‡๋ฒˆ ๊ฑฐ์ณ์•ผ๋ ๊ฒƒ๊ฐ™๋‹ค.

ํ›„๊ธฐ

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ง์žฅ์„ ๋‚˜์™€ ๊ณต๋ถ€ํ•˜๋Š”๋™์•ˆ ์Šต๋“ํ•œ ํผํฌ๋จผ์Šค ์ตœ์ ํ™” ๋ถ€๋ถ„์ด ์ข€ ์œ ํšจํ•˜๊ฒŒ ์ ์šฉ๋œ๊ฒƒ ๊ฐ™์•˜๋‹ค.

ํผํฌ๋จผ์Šค ํŒจ๋„์„ ๋ณด๋ฉฐ ํ–ˆ๋˜ ์ตœ์ €๊ณ ํ•˜ ์ž‘์—…์€ ๊ฐ€์‹œ์ ์ธ ์ง€ํ‘œ๋ฅผ ํ™•์ธํ•ด๊ฐ€๋ฉฐ ์ ์ฐจ ๋‚˜์•„์ง€๋Š” ๋ชจ์Šต์ด ๋‚ด๊ฐ€ ํ•˜๋ฉด์„œ๋„ ์ •๋ง ์‹ ๊ธฐํ–ˆ๊ณ  ์žฌ๋ฐŒ์—ˆ๋‹ค.

๐Ÿงท Link

https://snapsco.net/
https://github.com/jihunhong/marvelsnap-client

Comments