4์ฃผ์ฐจ ์ •๋ฆฌ(Docker Compose, Pymongo, MongoDB, SQL, NoSQL)

yeonddoriยท2023๋…„ 3์›” 25์ผ
0

AID_WEB

๋ชฉ๋ก ๋ณด๊ธฐ
2/10

๐Ÿ“ Docker Compose

Docker Compose๋Š” ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ€์ง€๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ฉ์ ์œผ๋กœ Docker ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ , ๋งŒ๋“ค์–ด์ง„ ๊ฐ๊ฐ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ ๋ฐ ์ค‘์ง€ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ๋” ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค.

ํŠน์ง•

  • ์„œ๋น„์Šค๋“ค์„ ์‹œ์ž‘ํ•˜๊ณ  ์ค‘์ง€ํ•˜๊ณ  ์žฌ ๋นŒ๋“œํ•œ๋‹ค.
  • ์‹คํ–‰ ์ค‘์ธ ์„œ๋น„์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ์‹คํ–‰ ์ค‘์ธ ์„œ๋น„์Šค์˜ ๋กœ๊ทธ๋ฅผ ์ŠคํŠธ๋ฆผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์— ์ผํšŒ์„ฑ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

Docker Compose์—๋Š” docker-compose๋ผ๋Š” yamlํŒŒ์ผ์ด ์žˆ์œผ๋ฉฐ, ์ด ํŒŒ์ผ์—์„œ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์„œ๋น„์Šค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ฆฌ์ง€ ๋„คํŠธ์›Œํฌ์™€ ๊ฐ™์€ ์„ค์ •๋„ docker-compose์—์„œ ๋ชจ๋‘ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Redis, Mongo๋Š” ์‹ค์ œ๋กœ ๋Ÿฐํƒ€์ž„ ์ปจํ…Œ์ด๋„ˆ์ผ ๋ฟ์ด์ง€๋งŒ Docker Compose์—์„œ๋Š” ์„œ๋น„์Šค๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

Docker Compose WorkFlow

1. ์„œ๋น„์Šค๋“ค ๋นŒ๋“œํ•˜๊ธฐ

์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋นŒ๋“œ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. DockerํŒŒ์ผ์„ ์„ค์ •ํ•˜๊ณ  docker-compose.ymlํŒŒ์ผ์— ์ •์˜ํ•˜์—ฌ Docker Compose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋นŒ๋“œํ•˜๊ฒŒ ๋˜๋ฉฐ ์ด ๊ณผ์ •์„ ํ†ตํ•ด Docker ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

2. ์„œ๋น„์Šค๋“ค ์‹œ์ž‘ํ•˜๊ธฐ

๊ทธ๋Ÿฐ ๋‹ค์Œ Docker Compose๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜๋ฉฐ ์ด๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๋‹ค์ˆ˜์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ์„œ๋น„์Šค๋“ค ์ •๋ฆฌํ•˜๊ธฐ

์‚ฌ์šฉ์ด ๋๋‚œ ์„œ๋น„์Šค๋ฅผ ํ•ด์ฒดํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘์ง€ํ•˜๋ฉฐ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“ SQL, NoSQL

์ฐธ๊ณ : SQL๊ณผ NOSQL์˜ ์ฐจ์ด

SQL(๊ด€๊ณ„ํ˜• DB)

SQL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ •๋ณด๋ฅผ ํ‘œ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๋ฉฐ, ํ–‰๊ณผ ์—ด์€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ๊ฐ’ ๊ฐ„์˜ ๋‹ค์–‘ํ•œ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. SQL์„ ์‚ฌ์šฉํ•˜๋ฉด RDBMS์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ ๋ฐ ๊ฒ€์ƒ‰ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ง•

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

์žฅ์ 

  • ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋œ ์Šคํ‚ค๋งˆ
  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ
  • ๊ด€๊ณ„๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต์—†์ด ํ•œ๋ฒˆ๋งŒ ์ €์žฅ

SQL ๋‹จ์ 

  • ๋‹ค์†Œ ๋ถ€์กฑํ•œ ์œ ์—ฐ์„ฑ
  • ์‚ฌ์ „์— ๊ณ„ํš๋œ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ
  • ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ๋ฐœ์ƒ
  • ๋Œ€์ฒด๋กœ ์ˆ˜์ง์  ํ™•์žฅ๋งŒ ๊ฐ€๋Šฅ

์ถ”์ฒœ ์ƒํ™ฉ

  • ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ
  • ๋ณ€๊ฒฝ๋  ์—ฌ์ง€๊ฐ€ ์—†๊ณ , ๋ช…ํ™•ํ•œ ์Šคํ‚ค๋งˆ๊ฐ€ ์‚ฌ์šฉ์ž์™€ ๋ฐ์ดํ„ฐ์—๊ฒŒ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ

NoSQL(๋น„๊ด€๊ณ„ํ˜• DB)

NoSQL(Not only SQL)์€ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ํ˜•์„ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ํ…Œ์ด๋ธ”๊ณผ๋Š” ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์–ธ์–ด๋งˆ๋‹ค ๊ด€์Šตํ™”๋œ API, ์„ ์–ธ์  ๊ตฌ์กฐ์˜ ์ฟผ๋ฆฌ ์–ธ์–ด, ์ฟผ๋ฆฌ๋ณ„ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์งˆ์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. NoSQL์—์„œ๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฌธ์„œ(documents)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

ํŠน์ง•

  • ๋‹ค๋ฅธ ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ™์€ ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฌธ์„œ(documents)๋Š” Json๊ณผ ๋น„์Šทํ•œ ํ˜•ํƒœ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋‚˜๋ˆ„์–ด๋‹ด์ง€ ์•Š๊ณ  ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ผํ•œ ์ปฌ๋ ‰์…˜์— ๋„ฃ๋Š”๋‹ค.
  • ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ์กฐ์ธํ•  ํ•„์š”์—†์ด ์ด๋ฏธ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ–์ถ˜ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

NoSQL ์žฅ์ 

  • ๋†’์€ ์œ ์—ฐ์„ฑ
  • ์–ธ์ œ๋“ ์ง€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ•„๋“œ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”๋กœ ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ €์žฅ
  • ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ์†๋„
  • ์ˆ˜์ง ๋ฐ ์ˆ˜ํ‰ ํ™•์žฅ ๊ฐ€๋Šฅ(๋ชจ๋“  ์ฝ๊ธฐ/์“ฐ๊ธฐ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ)

NoSQL ๋‹จ์ 

  • ๊ณ„์†๋˜๋Š” ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์—…๋ฐ์ดํŠธ
  • ์ˆ˜์ • ์‹œ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์—์„œ ์ˆ˜ํ–‰(๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ์ปฌ๋ ‰์…˜์— ์ค‘๋ณต๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ)

์ถ”์ฒœ ์ƒํ™ฉ

  • ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ/ํ™•์žฅ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
  • ์ฝ๊ธฐ๋ฅผ ์ž์ฃผ ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์€ ์ž์ฃผ ์—†๋Š” ๊ฒฝ์šฐ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ˆ˜ํ‰์œผ๋กœ ํ™•์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ๋ง‰๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ์ˆ˜์ง์  ํ™•์žฅ : ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ (ex. CPU ์—…๊ทธ๋ ˆ์ด๋“œ)
  • ์ˆ˜ํ‰์  ํ™•์žฅ : ๋” ๋งŽ์€ ์„œ๋ฒ„๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ „์ฒด์ ์œผ๋กœ ๋ถ„์‚ฐ๋จ์„ ์˜๋ฏธ (ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์—์„œ ์ž‘๋™)

๐Ÿ“ Pymongo

Pymongo๋Š” NoSQL์ธ MongoDB๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ๋” ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ์„œ๋ฒ„์— ์žˆ๋Š” DB๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ํˆด์ด๋‹ค. ์„œ๋ฒ„ DB์—๋Š” ํฌ๊ฒŒ 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • CRUD: Create(Insert): DB์— ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
    ex) ์ƒˆ๋กœ์šด ํšŒ์›์ •๋ณด ์ƒ์„ฑ
  • Read: DB์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์™€์„œ ์ฝ๊ธฐ
    ex) ํšŒ์›์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
  • Update: DB์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ
    ex) ํšŒ์›์ •๋ณด ์ˆ˜์ •
  • Delete: DB์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์‚ญ์ œ
    ex) ํšŒ์›์ •๋ณด ์‚ญ์ œ

๐Ÿ“ MongoDB

MongoDB๋Š” ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)์œผ๋กœ ํ…Œ์ด๋ธ” ๋ฐ ํ–‰ ๋Œ€์‹  ์œ ์—ฐํ•œ ๋ฌธ์„œ๋ฅผ ํ™œ์šฉํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค.

ํŠน์ง•

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

์žฅ์ 

  • Schema-less ๊ตฌ์กฐ
  • ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์œ ์—ฐํ•œ ๋ณ€ํ™” ๊ฐ€๋Šฅ(๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋ณ€๊ฒฝ, ํ•„๋“œ ํ™•์žฅ ์šฉ์ด)
  • ๋›ฐ์–ด๋‚œ Read/Write ์„ฑ๋Šฅ
  • Scale Out ๊ตฌ์กฐ
  • ๋งŽ์€ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ฐ€๋Šฅ
  • ๊ฐ„๋‹จํ•œ ์žฅ๋น„ ํ™•์žฅ
  • JSON ๊ตฌ์กฐ(๋ฐ์ดํ„ฐ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ด ๊ฐ€๋Šฅ)

๋‹จ์ 

  • ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ์ค‘ ์žฅ์•  ๋ฐœ์ƒ ์‹œ, ๋ฐ์ดํ„ฐ ์†์‹ค ๊ฐ€๋Šฅ
  • ๋งŽ์€ ์ธ๋ฑ์Šค ์‚ฌ์šฉ ์‹œ, ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด ํ•„์š”
  • RDBMS์— ๋น„ํ•ด ๋งŽ์€ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„ ์†Œ๋ชจ(๋น„ํšจ์œจ์ ์ธ Key ์ค‘๋ณต ์ž…๋ ฅ)
  • ๋ณต์žกํ•œ JOIN ์‚ฌ์šฉ์‹œ ์„ฑ๋Šฅ ์ œ์•ฝ์ด ๋”ฐ๋ฆ„
  • RDBMS ๋Œ€๋น„ ๋ฏธ์•ฝํ•œ ํŠธ๋žœ์žญ์…˜ ์ง€์›
  • ์ œ๊ณต๋˜๋Š” MapReduce ์ž‘์—…์ด Hadoop์— ๋น„ํ•ด ๋–จ์–ด์ง€๋Š” ์„ฑ๋Šฅ

ํƒ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๊ต

MongoDB Vs MySQL

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

MySQL์€ ๊ณ ์œ ์˜ ์—„๊ฒฉํ•œ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด, ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ฐ ๊ฒฉ๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ ์ธ ์ƒํ™ฉ์ด๋ผ๋ฉด MongoDB๋ณด๋‹ค ์„ ํ˜ธ๋  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ MongoDB๋Š” ๋ณด๋‹ค ๋œ ์ œํ•œ์ ์ธ ํ˜•์‹๊ณผ ๋ณด๋‹ค ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์–ด, ํŠน๋ณ„ํžˆ ๊ฐ€์šฉ์„ฑ๊ณผ ์†๋„๋ฅผ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๋ณด๋‹ค ๋‚˜์€ ์„ ํƒ์ด ๋  ๊ฒƒ์ด๋‹ค.

MongoDB์™€ Cassandra

Cassandra์™€ MongoDB๋Š” ๋‘˜ ๋‹ค NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๊ฐ„์ฃผ๋˜์ง€๋งŒ, ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Cassandra๋Š” ํ–‰๊ณผ ์—ด์„ ๊ฐ–์ถ˜ ๊ธฐ์กด ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ ์ „ ํ˜•์‹์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ๊ท ์ผ์„ฑ๊ณผ ๋‚ด๊ตฌ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

Cassandra๋Š” SQL๊ณผ ์œ ์‚ฌํ•œ ๊ตฌ๋ฌธ์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ์–ด, NoSQL ์†”๋ฃจ์…˜์„ ์ฐพ๋Š” ๊ธฐ์—…๋“ค๋„ ๋ณด๋‹ค ์ˆ˜์›”ํ•˜๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋ฉฐ ๋‹ค์ˆ˜์˜ ๊ตฌ์„ฑ ์—†์ด๋„ ๋ฐฐํฌ ๋ฐ ๋ณต์ œ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ •ํ˜• ๋ฐ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์œ ์—ฐ์„ฑ ์ธก๋ฉด์ด๋‚˜ ๋ฏธ์…˜ ํฌ๋ฆฌํ‹ฐ์ปฌ ํด๋ผ์šฐ๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ๋ฐ ์•ˆ์ •์„ฑ์— ์žˆ์–ด์„œ๋Š” MongoDB์— ํ•„์ ํ•  ์ˆ˜ ์—†๋‹ค.

+ Pytest ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

git pull ํ•˜์—ฌ Pytest๋ฅผ ๋Œ๋ ค๋ณด๋ ค๊ณ  ํ•  ๋•Œ ๊ณ„์† ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋–ด์—ˆ๋‹ค. ๋Œ€์ฒด backend ์ด๋ผ๋Š” ๋ชจ๋“ˆ์ด ๋ญ์ง€? ์˜๊ตฌ์‹ฌ์ด ๋“ค๋ฉด์„œ๋„ ๊ทธ๋ƒฅ pip install backend๋ฅผ ํ•ด๋ณด์•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์–ด๋ผ๋ผ ์ง„์งœ ๊ทธ๋Ÿฐ ๋ชจ๋“ˆ์ด ์žˆ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค.. ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋ง‰ ๋‹ค์šด์„ ํ•˜๊ธธ๋ž˜ ์ด์ œ ๋˜๊ฒ ์ง€ ํ•˜๋ฉด์„œ ๋‹ค์‹œ pytest๋ฅผ ๋Œ๋ฆฐ ์ˆœ๊ฐ„

๊ฑฐ์ง“๋ง backend.main ์ด๋ผ๋Š” ๋ชจ๋“ˆ์ด ์–ด๋”จ๋Š”๋ฐ.. ๋ฐ˜์‹ ๋ฐ˜์˜ํ•˜๋ฉฐ pip install backend.main์„ ์ณ๋ดค๋Š”๋ฐ.. ์ณ๋ณด์ง€ ๋ง ๊ฑธ ๊ทธ๋žฌ๋‹ค ^^..

๊ทธ๋ž˜์„œ ์–ด์ฐŒํ•˜์—ฌ ๊ณ ์ณค๋ƒ..

๊ทธ๋ƒฅ test ํด๋”์— __init__.py๋ผ๋Š” ๋นˆ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋Œ๋ฆฌ๋‹ˆ ์ •๋ง ๊ฐ์ชฝ๊ฐ™์ด ์ž˜ ๋Œ์•„๊ฐ”๋‹ค.. ๋‚˜๋งŒ ์™œ ์ € ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์•ผ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์ด์ง€? ๋‹ค๋ฅธ ๋ถ„๋“ค์€ ๊ทธ๋ƒฅ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ๋ชจ๋ฅด๊ฒ ๋‹ค.. ๊ทธ๋ž˜์„œ ์ผ๋‹จ commitํ•  ๋•Œ add ํ•˜์ง€๋Š” ์•Š์•˜๋‹ค.

__init__.py
ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํŒจํ‚ค์ง€์˜ ์ผ๋ถ€์ž„์„ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์ด ์—†๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ํŒจํ‚ค์ง€์— ํฌํ•จ์ด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. Python3.3 ์ดํ›„ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” __init__.py์ด ์—†์–ด๋„ ํŒจํ‚ค์ง€๋กœ ์ธ์‹ํ•˜์ง€๋งŒ, ํ•˜์œ„ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ ์œ„ํ•ด์„œ๋Š” ์ด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

๋ผ๊ณ  ํ•˜๋Š”๋ฐ ๋‚˜๋Š” ํ•˜์œ„ ๋ฒ„์ „์ธ ๊ฑด๊ฐ€..? 3.10.9๋กœ ๋งž์ถฐ์„œ ๋Œ๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ ใ…œใ…œ

0๊ฐœ์˜ ๋Œ“๊ธ€