๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆ์ด ๋ถ™์—ˆ์Šต๋‹ˆ๋‹ค...

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆ์ด ๋ถ™์—ˆ์Šต๋‹ˆ๋‹ค...

๊ธฐ์ˆ ์ ์ธ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๋‚˜ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๋…„ ์ „, ์ €๋Š” ํ˜‘์—… ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ดˆ๊ธฐ React์™€ CouchDB์˜ ์ž ์žฌ๋ ฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•œ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ์‹คํ—˜ ์Šคํƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. JSON์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋™๊ธฐํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. OT. ์ด๋Š” ํšŒ์‚ฌ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์ง€๋งŒ ๋‹ค๋ฅธ ์˜์—ญ์—์„œ์˜ ํญ๋„“์€ ์ ์šฉ ๊ฐ€๋Šฅ์„ฑ๊ณผ ์ž ์žฌ๋ ฅ์€ ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์ˆ ์„ ์ž ์žฌ ๊ณ ๊ฐ์—๊ฒŒ ํŒ๋งคํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์žฅ์• ๋ฌผ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋ชจ ๋น„๋””์˜ค์—์„œ ์šฐ๋ฆฌ์˜ ๊ธฐ์ˆ ์€ ํ›Œ๋ฅญํ•ด ๋ณด์˜€๊ณ  ์ž‘๋™ํ–ˆ์œผ๋ฉฐ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๋„ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์˜์ƒ์€ ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ •ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ฃผ์—ˆ๊ณ  ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฐฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ˜„์‹ค์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ๊ฐํ•ด๋‚ด๊ณ  ์ฝ”๋”ฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆ์ด ๋ถ™์—ˆ์Šต๋‹ˆ๋‹ค...
์‚ฌ์‹ค ์ด๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋๋‹ค. ์šฐ๋ฆฌ์˜ ๋ฐ๋ชจ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•œ ๋ฐฉ์‹๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋Œ€์šฉ๋Ÿ‰ ๋ฏธ๋””์–ด ํŒŒ์ผ์ด๋ผ ํ•˜๋”๋ผ๋„ ์ •๋ณด๊ฐ€ A์—์„œ B๋กœ ์ฆ‰์‹œ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธํ•œ ํ›„ ๊ฐ ์‚ฌ์šฉ์ž๋Š” ์ƒˆ๋กœ์šด ํ•ญ๋ชฉ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋งˆ์„ ์–ด๋”˜๊ฐ€์—์„œ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ์ค‘๋‹จ๋˜๋”๋ผ๋„ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•จ๊ป˜ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” After Effects์˜ ๋ชจ๋“  ์ œํ’ˆ ๋น„๋””์˜ค ์ปท์— ์•”์‹œ์ ์œผ๋กœ ์•”์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘๊ฐ€ ์ƒˆ๋กœ ๊ณ ์นจ ๋ฒ„ํŠผ์˜ ์šฉ๋„๋ฅผ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ, ์šฐ๋ฆฌ์—๊ฒŒ ๋นŒ๋“œํ•˜๋„๋ก ์š”์ฒญํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์ž์ฒด์ ์ธ ์ œํ•œ ์‚ฌํ•ญ์„ ๋”ฐ๋ฅธ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์‹ค์ œ๋กœ ์ดํ•ดํ•œ ์‚ฌ๋žŒ์€ ์•„๋ฌด๋„ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์€ ์™„์ „ํžˆ ๋‹ฌ๋ผ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋Œ€ํ™”ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฉ”๋ชจ๋ฅผ ๋‚จ๊ฒจ์„œ "์ฑ„ํŒ…"ํ•  โ€‹โ€‹์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋Œ€๋ถ€๋ถ„ ์•Œ์•„์ฐจ๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์˜ˆ๋ฅผ ๋“ค์–ด Slack๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ๊ถ๊ธˆํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ํœด!

์ผ์ƒ์ ์ธ ๋™๊ธฐํ™” ๋””์ž์ธ

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

์ด์— ๋Œ€ํ•œ ์ „ํ˜•์ ์ธ ์˜ˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ spinner.gif, ์ž‘์—…์ด ์–ธ์ œ ์™„๋ฃŒ๋ ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ gif๊ฐ€ ํ™”๋ฉด์—์„œ ์ ˆ๋Œ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ๊นจ๋‹ฌ์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ์ž‘์—… ์‹คํ–‰์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜์ง€๋งŒ ์ž‘์—… ์ƒํƒœ์™€๋Š” ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์ผ๋ถ€ ๊ธฐ์ˆ  ์ „๋ฌธ๊ฐ€๋Š” ์‚ฌ์šฉ์ž ํ˜ผ๋ž€์˜ ์ •๋„์— ๋†€๋ผ ๋ˆˆ์„ ๊ตด๋ฆฌ๊ณค ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค ์ค‘ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํšŒ์ „ํ•˜๋Š” ์‹œ๊ณ„๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ ๊ทธ๊ฒƒ์ด ์‹ค์ œ๋กœ ์ •์ง€๋˜์–ด ์žˆ๋‹ค๊ณ  ๋งํ•˜๋Š”์ง€ ์ฃผ๋ชฉํ•˜์‹ญ์‹œ์˜ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆ์ด ๋ถ™์—ˆ์Šต๋‹ˆ๋‹ค...
์ด๊ฒƒ์ด ์‹ค์‹œ๊ฐ„ ๊ฐ€์น˜์˜ ๋ณธ์งˆ์ž…๋‹ˆ๋‹ค. ์š”์ฆ˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์•„์ง ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฅผ ์˜์‹ฌ์Šค๋Ÿฝ๊ฒŒ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋Œ€๋ถ€๋ถ„์€ NoSQL ์Šคํƒ€์ผ์— ํฌ๊ฒŒ ์˜์กดํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€์žฅ ์ž˜ ์žŠํ˜€์ง€๋Š” Mongo ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜์—๊ฒŒ ์ด๊ฒƒ์€ CouchDB๋กœ ํŽธ์•ˆํ•˜๊ฒŒ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ผ๋ถ€ ๊ด€๋ฃŒ๋งŒ์ด ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์šธ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์„ ๋” ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์š”.

ํ•˜์ง€๋งŒ ์ด ๊ฒŒ์‹œ๋ฌผ์˜ ์‹ค์ œ ์ฃผ์ œ๋Š” ์ œ๊ฐ€ ์˜ค๋Š˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ ํƒ์— ์˜ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฌด๊ด€์‹ฌํ•˜๊ณ  ๋งน๋ชฉ์ ์œผ๋กœ ์ ์šฉ๋œ ๊ธฐ์—… ์ •์ฑ… ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ €๋Š” ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋œ ๋‘ ๊ฐ€์ง€ Google ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ œํ’ˆ์— ๋Œ€ํ•œ ์™„์ „ํžˆ ๊ณต์ •ํ•˜๊ณ  ํŽธ๊ฒฌ ์—†๋Š” ๋น„๊ต๋ฅผ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆ์ด ๋ถ™์—ˆ์Šต๋‹ˆ๋‹ค...
๋‘˜ ๋‹ค ์ด๋ฆ„์— Fire๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๊ฒŒ ๊ธฐ์–ตํ•˜๋Š” ํ•œ ๊ฐ€์ง€. ๋‘ ๋ฒˆ์งธ๋Š” ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๋ถˆ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์˜ ์ด๋ฆ„์„ ๋งํ•˜๊ธฐ๋ฅผ ์„œ๋‘๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” ์ฒซ ๋ฒˆ์งธ ํฐ ๋ฌธ์ œ์ธ ์ด๋ฆ„์— ์ง๋ฉดํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋Š” Firebase ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ- Firebase ํด๋ผ์šฐ๋“œ Firestore. ๋‘˜ ๋‹ค ํšŒ์‚ฌ ์ œํ’ˆ์ด์—์š” Firebase ์ œํ’ˆ๊ตฐ Google. ํ•ด๋‹น API๋Š” ๊ฐ๊ฐ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. firebase.database(โ€ฆ) ะธ firebase.firestore(โ€ฆ).

์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚œ ์ด์œ ๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - ๊ทธ๋ƒฅ ์›๋ณธ์ด์—์š” ์ค‘ํฌ ๊ธฐ์ง€ 2014๋…„ Google์—์„œ ๊ตฌ๋งคํ•˜๊ธฐ ์ „์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Google์€ ๋ณ‘๋ ฌ ์ œํ’ˆ์œผ๋กœ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณต์‚ฌ ๋น…๋ฐ์ดํ„ฐ ํšŒ์‚ฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Firebase๋ฅผ ํด๋ผ์šฐ๋“œ์™€ ํ•จ๊ป˜ Firestore๋ผ๊ณ  ๋ถˆ๋ €์Šต๋‹ˆ๋‹ค. ์•„์ง ํ˜ผ๋™ํ•˜์ง€ ์•Š์œผ์…จ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„์ง๋„ ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค๋ฉด ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์„ธ์š”. ์ €๋Š” ์ด ๋ถ€๋ถ„์„ XNUMX๋ฒˆ์ด๋‚˜ ๋‹ค์‹œ ์ผ์Šต๋‹ˆ๋‹ค.

ํ‘œ์‹œํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘ํฌ ๊ธฐ์ง€ Firebase ์งˆ๋ฌธ์—์„œ ์†Œ๋ฐฉ์„œ Firebase์— ๋Œ€ํ•œ ์งˆ๋ฌธ์—์„œ ์ ์–ด๋„ ๋ช‡ ๋…„ ์ „ Stack Overflow์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด.

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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆ์ด ๋ถ™์—ˆ์Šต๋‹ˆ๋‹ค...

Pyrrhic victory

Firestore๊ฐ€ ๊ต์ฒด Firebase๋Š” ์ฐจ์„ธ๋Œ€ ์ œํ’ˆ์ด์ง€๋งŒ ์ด๋Š” ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Firestore๋Š” Firebase๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํฅ๋ฏธ๋กœ์šด ๋ชจ๋“  ๊ฒƒ์„ ์ž˜๋ผ๋‚ด๊ณ  ๋‚˜๋จธ์ง€ ๋Œ€๋ถ€๋ถ„์„ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ˜ผ๋™ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‘ ์ œํ’ˆ์„ ์ž ๊น ์‚ดํŽด๋ณด๋ฉด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผํ•œ API๋ฅผ ํ†ตํ•ด, ์‹ฌ์ง€์–ด ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ธ์…˜์—์„œ๋„ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ฐจ์ด์ ์€ ๋ฏธ๋ฌ˜ํ•˜๋ฉฐ ๊ด‘๋ฒ”์œ„ํ•œ ๋ฌธ์„œ์— ๋Œ€ํ•œ ์‹ ์ค‘ํ•œ ๋น„๊ต ์—ฐ๊ตฌ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค. ๋˜๋Š” Firestore์—์„œ ์ž‘๋™ํ•˜๋„๋ก Firebase์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํฌํŒ…ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋งˆ์šฐ์Šค๋ฅผ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ผœ์ง„๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋†๋‹ด์ด ์•„๋‹™๋‹ˆ๋‹ค.

Firebase ํด๋ผ์ด์–ธํŠธ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฒ„ํผ๋งํ•˜๊ณ  ๋งˆ์ง€๋ง‰ ์“ฐ๊ธฐ ์ž‘์—…์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ์—…๋ฐ์ดํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์žฌ์‹œ๋„ํ•œ๋‹ค๋Š” ์ ์—์„œ ์ •์ค‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Firestore์—๋Š” ๋ฌธ์„œ๋‹น ์‚ฌ์šฉ์ž๋‹น ์ดˆ๋‹น 1ํšŒ์˜ ์“ฐ๊ธฐ ์ž‘์—… ์ œํ•œ์ด ์žˆ์œผ๋ฉฐ ์ด ์ œํ•œ์€ ์„œ๋ฒ„์— ์˜ํ•ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ํ•  ๋•Œ์—๋„ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์—…๋ฐ์ดํŠธ ์†๋„ ์ œํ•œ๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, Firestore๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ€์žฅํ•˜๋Š” ์‹ค์‹œ๊ฐ„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—†๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” Firestore์˜ ์กด์žฌ ์ด์œ ์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ์ง•ํ›„๋ฅผ ๋ณด๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์ด ํ‹€๋ ธ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, Google ๊ฒฝ์˜์ง„์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Firebase๋ฅผ ๊ตฌ๋งคํ•œ ํ›„ ๋ณด๊ณ  ๋‹จ์ˆœํžˆ "์•„๋‹ˆ์š”, ๋ง™์†Œ์‚ฌ, ์•„๋‹ˆ์ฃ . "๋ผ๊ณ  ๋งํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฉ๋‚ฉ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ์ง€๋„ํ•˜์— ์žˆ์ง€ ์•Š์„ ๋ฟ์ด์•ผ."

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆ์ด ๋ถ™์—ˆ์Šต๋‹ˆ๋‹ค...
๊ทธ๋Š” ์ž์‹ ์˜ ๋ฐฉ์—์„œ ๋‚˜ํƒ€๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค.

โ€œํฐ JSON ๋ฌธ์„œ ํ•˜๋‚˜์š”? ์•„๋‹ˆ์š”. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ๊ฐ์˜ ํฌ๊ธฐ๊ฐ€ 1MB ์ดํ•˜์ธ ๋ณ„๋„์˜ ๋ฌธ์„œ๋กœ ๋ถ„ํ• ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.โ€

๊ทธ๋Ÿฌํ•œ ์ œํ•œ์€ ์ถฉ๋ถ„ํžˆ ๋™๊ธฐ๊ฐ€ ๋ถ€์—ฌ๋œ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜๊ณผ์˜ ์ฒซ ๋งŒ๋‚จ์—์„œ ์‚ด์•„๋‚จ์ง€ ๋ชปํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ง์žฅ์—์„œ๋Š” XNUMX๋งŒ ๊ฐœ ์ด์ƒ์˜ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์ด ์žˆ๋Š”๋ฐ ์ด๋Š” ์™„์ „ํžˆ ์ •์ƒ์ ์ธ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ œํ•œ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ํ•˜๋‚˜์˜ "๋ฌธ์„œ"๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ์„œ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฐœ์ฒด์™€ ์œ ์‚ฌํ•˜์ง€ ์•Š๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"๋‹ค๋ฅธ ์š”์†Œ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด์˜ ๋ฐฐ์—ด? ์•„๋‹ˆ์š”. ๋ฐฐ์—ด์—๋Š” ์‹ ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๊ณ ์ • ๊ธธ์ด์˜ ๊ฐ์ฒด๋‚˜ ์ˆซ์ž๋งŒ ํฌํ•จ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค."

๋”ฐ๋ผ์„œ GeoJSON์„ Firestore์— ๋„ฃ์œผ๋ ค๋Š” ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 64์ฐจ์›์ ์ด์ง€ ์•Š์€ ๊ฒƒ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. JSON ๋‚ด์˜ BaseXNUMX ๋ฐ/๋˜๋Š” JSON์ด ๋งˆ์Œ์— ๋“œ์…จ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

โ€œHTTP, ๋ช…๋ น์ค„ ๋„๊ตฌ ๋˜๋Š” ๊ด€๋ฆฌ ํŒจ๋„์„ ํ†ตํ•ด JSON ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ๋‚ด๋ณด๋‚ด๊ธฐ? ์•„๋‹ˆ์š”. Google Cloud Storage๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ทธ๋ ‡๊ฒŒ ๋ถ€๋ฅด๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ๊ทธ๋ฆฌ๊ณ  ์ œ๊ฐ€ "๋‹น์‹ "์ด๋ผ๊ณ  ๋งํ•  ๋•Œ๋Š” ํ”„๋กœ์ ํŠธ ์†Œ์œ ์ž ์ž๊ฒฉ์„ ๊ฐ–์ถ˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋งŒ ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๊ฐ€์„œ ํ‹ฐ์ผ“์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”."

๋ณด์‹œ๋‹ค์‹œํ”ผ FireBase ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์€ ์„ค๋ช…ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” JSON ํ‚ค๋ฅผ URL ๊ฒฝ๋กœ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ JSON ๋ฌธ์„œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์œผ๋กœ ์“ด๋‹ค๋ฉด HTTP PUT ะฒ / FireBase๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{
  "hello": "world"
}

๊ทธ GET /hello ๋Œ์•„์˜ฌ ๊ฒƒ์ด๋‹ค "world". ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ˆ์ƒํ•œ ๋Œ€๋กœ ์ •ํ™•ํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. FireBase ๊ฐ์ฒด ์ปฌ๋ ‰์…˜ /my-collection/:id JSON ์‚ฌ์ „๊ณผ ๋™์ผ {"my-collection": {...}} ๋ฃจํŠธ์—์„œ ๊ทธ ๋‚ด์šฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. /my-collection:

{
  "id1": {...object},
  "id2": {...object},
  "id3": {...object},
  // ...
}

์ด๋Š” ๊ฐ ์‚ฝ์ž…๋ฌผ์— ์ถฉ๋Œ ์—†๋Š” ID๊ฐ€ ์žˆ๊ณ  ์‹œ์Šคํ…œ์— ํ‘œ์ค€ ์†”๋ฃจ์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” 100% JSON(*)๊ณผ ํ˜ธํ™˜๋˜๋ฉฐ CouchDB์™€ ๊ฐ™์€ HTTP์™€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น์†Œ์ผ“, ์ธ์ฆ ๋ฐ ๊ตฌ๋…์„ ์ถ”์ƒํ™”ํ•˜๋Š” ์‹ค์‹œ๊ฐ„ API๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ํŒจ๋„์—๋Š” ์‹ค์‹œ๊ฐ„ ํŽธ์ง‘๊ณผ JSON ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•œ ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ๋ชจ๋‘ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์—์„œ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ํŒจ์น˜ ๋ฐ ์ฐจ์ด์  JSON์ด ์ง€์† ์ƒํƒœ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ผ์ƒ์ ์ธ ์ž‘์—…์˜ 90%๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜๋ฉด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ํŠน์ˆ˜ ์ฝ”๋“œ๊ฐ€ ๋‚ญ๋น„๋˜๋Š”์ง€ ๋†€๋ผ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Firestore ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์€ JSON๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ธก๋ฉด์—์„œ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๋ฏธ ๋ฐฐ์—ด ๋‚ด์— ๋ฐฐ์—ด์ด ๋ถ€์กฑํ•˜๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์œ„ ์ปฌ๋ ‰์…˜ ๋ชจ๋ธ์€ ํ•ด๋‹น ์ปฌ๋ ‰์…˜์ด ํฌํ•จ๋œ JSON ๋ฌธ์„œ์™€ ๋ณ„๊ฐœ๋กœ ์ตœ๊ณ  ์ˆ˜์ค€์˜ ๊ฐœ๋…์ด ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ์ง๋ ฌํ™”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์“ฐ๋ ค๋ฉด ํŠน์ˆ˜ํ•œ ์ฝ”๋“œ ๊ฒฝ๋กœ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž์‹ ์˜ ์ปฌ๋ ‰์…˜์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์ž์‹ ๋งŒ์˜ ์Šคํฌ๋ฆฝํŠธ์™€ ๋„๊ตฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ํŒจ๋„์—์„œ๋Š” ํ•œ ๋ฒˆ์— ํ•œ ํ•„๋“œ์”ฉ๋งŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ€์ ธ์˜ค๊ธฐ/๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ์€ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ์‹ค์‹œ๊ฐ„ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ ธ์™€ ์ž๋™ ์กฐ์ธ๊ณผ ๋ณ„๋„์˜ ๋น„JSON ์—ด์„ ๊ฐ–์ถ˜ ๋Š๋ฆฐ ๋น„SQL๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. GraftQL๊ณผ ๊ฐ™์€ ๊ฒƒ.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆ์ด ๋ถ™์—ˆ์Šต๋‹ˆ๋‹ค...

ํ•ซ ์ž๋ฐ”

Firestore๊ฐ€ ๋” ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์•„์ด๋Ÿฌ๋‹ˆํ•œ ์ ์€ ์ผ๋ฐ˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ FireBase๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋œ ์•ˆ์ •์ ์ธ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Grumpy Database Administrator๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์ข…๋ฅ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด์—๋Š” ์ œํ’ˆ์ด ์ž˜ํ•ด์•ผ ํ•˜๋Š” ํ‹ˆ์ƒˆ ์‹œ์žฅ์— ๋น„ํ•ด ๋น„ํ˜„์‹ค์ ์ธ ์ˆ˜์ค€์˜ ๋…ธ๋ ฅ๊ณผ ์žฌ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์—†์œผ๋ฉด HTML5 Canvas๊ฐ€ Flash๋ฅผ ์ „ํ˜€ ๋Œ€์ฒดํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋”์šฑ์ด Firestore๋Š” ์ผ๋ฐ˜ ๋น„์ฆˆ๋‹ˆ์Šค ์‚ฌ์šฉ์ž์˜ ๋ฐฉ์‹๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์ˆœ์ˆ˜์„ฑ๊ณผ ๋ฌด๊ท  ๊ฒ€์ฆ์— ๋Œ€ํ•œ ์š”๊ตฌ์— ๋น ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค: ๊ทธ์—๊ฒŒ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋๊นŒ์ง€ ๋ชจ๋“  ๊ฒƒ์ด ์ดˆ์•ˆ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

FireBase์˜ ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ๋Œ€๋ถ€๋ถ„์˜ ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ถˆ๋ณ€์„ฑ์— ๋Œ€ํ•ด ์•Œ๊ธฐ ์ „์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹œ๋Œ€๋ณด๋‹ค ๋ช‡ ๋…„ ์•ž์„œ ๋งŒ๋“ค์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— FireBase๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ๋ถˆ๋ณ€์„ฑ์„ ํ™œ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์Šค๋ƒ…์ƒท์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋น„๊ต๊ฐ€ ํ›จ์”ฌ ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ฌธ์„œ์˜ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ diff ๊ธฐ๋ฐ˜ ํŠธ๋žœ์žญ์…˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋ถ€์ ์ ˆํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„, ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ WeakMap ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ. ํŽธ์•ˆํ•ด์š”.

๋ฐ์ดํ„ฐ์— ์›ํ•˜๋Š” ๋ชจ์–‘์„ ์ œ๊ณตํ•˜๊ณ  ๋‚˜๋ฌด๋ฅผ ๋„ˆ๋ฌด ํฌ๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์— ๋Œ€ํ•œ ์ง„์ง€ํ•˜๊ณ  ์‹ค์šฉ์ ์ธ ์กฐ์–ธ๊ณผ ํ•จ๊ป˜ ๋ถˆ๋ณ€์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ์ •๋ง ํ›Œ๋ฅญํ•œ ํด๋ผ์ด์–ธํŠธ API๋ฅผ ์ถœ์‹œํ•œ๋‹ค๋ฉด FireBase๊ฐ€ ํ›จ์”ฌ ๋” ํฅ๋ฏธ๋กœ์šธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ทธ๋“ค์€ ๊นจ์ง€์ง€ ์•Š์€ ๊ฒƒ์„ ๊ณ ์น˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ๊ฒƒ ๊ฐ™์•˜๊ณ , ๊ทธ๊ฒƒ์ด ์ƒํ™ฉ์„ ๋”์šฑ ์•…ํ™”์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

Firestore ์ƒ์„ฑ์˜ ๋ชจ๋“  ๋…ผ๋ฆฌ๋ฅผ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ž™๋ฐ•์Šค ๋‚ด๋ถ€์—์„œ ์–ด๋–ค ๋™๊ธฐ๊ฐ€ ์ƒ๊ธธ์ง€ ์ถ”์ธกํ•ด ๋ณด๋Š” ๊ฒƒ๋„ ์žฌ๋ฏธ๋‹ค. ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋น„๊ตํ•  ์ˆ˜ ์—†๋Š” ๋‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณ‘์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋งค์šฐ ๋“œ๋ญ…๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ƒ๊ฐํ•œ ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. "Firebase๋Š” Google Cloud์—์„œ ์—๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.", ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์‹๋ณ„ํ•˜๊ฑฐ๋‚˜ ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋ชจ๋‘ ์ถฉ์กฑํ•˜๋Š” ์œ ์šฉํ•œ ์†”๋ฃจ์…˜์„ ๋งŒ๋“œ๋Š” ๊ฐœ๋…์„ ์•„์ง ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. โ€œ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ฒŒ ํ•ด์ฃผ์„ธ์š”. UI๋งŒ ์•„๋ฆ„๋‹ต๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”... ๋ถˆ์„ ๋” ์ถ”๊ฐ€ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?โ€

๋‚˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€๋ฅผ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ™•์‹คํžˆ "ํ•˜๋‚˜์˜ ํฐ JSON ํŠธ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ" ๊ฐœ๋…์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋Œ€๊ทœ๋ชจ ๊ตฌ์กฐ์˜ ๊ฐ๊ฐ์„ ์ถ”์ƒํ™”ํ•˜๋ ค๋Š” ์‹œ๋„๋กœ ๋ด…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋ชจํ˜ธํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ํ”„๋ž™ํƒˆ์— ๊ฐ„๋‹จํžˆ ๋Œ€์ฒ˜ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์€ ๋ฏธ์นœ ์ง“์ž…๋‹ˆ๋‹ค. ์ƒํ™ฉ์ด ์–ผ๋งˆ๋‚˜ ๋‚˜์ ์ง€ ์ƒ์ƒํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค. ์—„๊ฒฉํ•œ ์ฝ”๋“œ ๊ฐ์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๊ณ  ๋‚˜๋Š” ๋„ˆํฌ๋“ค์ด ๊ฟˆ๋„ ๊พธ์ง€ ๋ชปํ•œ ๊ฒƒ๋“ค์„ ๋ณด์•˜๋‹ค.. ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๋˜ํ•œ ์ข‹์€ ๊ตฌ์กฐ๊ฐ€ ์–ด๋–ค ๊ฒƒ์ธ์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ะธ ์™œ ์ด๋Ÿฐ ์ผ์ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋Š”๊ฐ€?. Firestore๊ฐ€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ณด์ด๊ณ  Firestore๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ๋“ค์ด ํ›Œ๋ฅญํ•œ ์ผ์„ ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์„ธ์ƒ์„ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์ด ์„ธ์ƒ์— ์‚ด๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

FireBase์˜ ์ฟผ๋ฆฌ ์ง€์›์€ ์–ด๋–ค ํ‘œ์ค€์—์„œ๋„ ์—ด์•…ํ•˜๋ฉฐ ์‚ฌ์‹ค์ƒ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ๊ฐœ์„ ์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ์ˆ˜์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Firestore๋Š” ์ผ๋ฐ˜ SQL์—์„œ ๋ฐœ๊ฒฌ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ XNUMX์ฐจ์› ์ธ๋ฑ์Šค๋กœ ์ œํ•œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋‹ค์ง€ ๋‚˜์•„์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์‹คํ–‰ํ•˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ „์ฒด ํ…์ŠคํŠธ ๊ฒ€์ƒ‰, ๋‹ค์ค‘ ๋ฒ”์œ„ ํ•„ํ„ฐ ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ ์‚ฌ์šฉ์ž ์ •์˜ ์ˆœ์„œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ์ผ๋ฐ˜ SQL์˜ ๊ธฐ๋Šฅ์€ ๊ทธ ์ž์ฒด๋กœ ๋„ˆ๋ฌด ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ๋žŒ๋“ค์ด ํ”„๋กœ๋•์…˜์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ SQL ์ฟผ๋ฆฌ๋Š” ๋น ๋ฅธ ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์Šค๋งˆํŠธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ˜ ๋งž์ถคํ˜• ์ธ๋ฑ์‹ฑ ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์—๋Š” ์ตœ์†Œํ•œ ์ฆ๋ถ„ ๋งต ์ถ•์†Œ๋‚˜ ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ Google Docs์—์„œ ๊ฒ€์ƒ‰ํ•˜๋ฉด BigTable ๋ฐ BigQuery์™€ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์†”๋ฃจ์…˜์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ๊ธฐ์—… ์˜์—… ์ „๋ฌธ ์šฉ์–ด๊ฐ€ ์ˆ˜๋ฐ˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋นจ๋ฆฌ ๋˜๋Œ์•„๊ฐ€์„œ ๋‹ค๋ฅธ ๊ฒƒ์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ€์žฅ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ๊ด€๋ฆฌ๊ธ‰ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŒ๋“ค๊ณ  ๊ทธ๋“ค์„ ์œ„ํ•ด ๋งŒ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(*) ๋†๋‹ด์ด๊ณ  ๋ณ„๊ฑฐ ์—†์Šต๋‹ˆ๋‹ค 100% JSON ํ˜ธํ™˜.

๊ด‘๊ณ ์˜ ๊ถŒ๋ฆฌ์—

์ฐพ๊ณ ์žˆ๋Š” VDS ํ”„๋กœ์ ํŠธ ๋””๋ฒ„๊น…์„ ์œ„ํ•œ ์„œ๋ฒ„, ๊ฐœ๋ฐœ ๋ฐ ํ˜ธ์ŠคํŒ…์„ ์œ„ํ•œ ์„œ๋ฒ„? ๋‹น์‹ ์€ ํ™•์‹คํžˆ ์šฐ๋ฆฌ์˜ ๊ณ ๊ฐ์ž…๋‹ˆ๋‹ค ๐Ÿ™‚ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์˜ ์„œ๋ฒ„, DDoS ๋ฐฉ์ง€ ๋ฐ Windows ๋ผ์ด์„ผ์Šค์— ๋Œ€ํ•œ ์ผ์ผ ๊ฐ€๊ฒฉ์ด ์ด๋ฏธ ๊ฐ€๊ฒฉ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆ์ด ๋ถ™์—ˆ์Šต๋‹ˆ๋‹ค...

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€