์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
BEST

Slack ํด๋ก  ์ฝ”๋”ฉ[๋ฐฑ์—”๋“œ with NestJS + TypeORM]

Node.js์˜ ์Šคํ”„๋ง์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” NestJS๋ฅผ ๋ฐฐ์šฐ๊ณ , Dependency Injection์˜ ํŽธ๋ฆฌํ•จ์„ ๋ง›๋ด…์‹œ๋‹ค. API ๊ฐœ๋ฐœ๋ถ€ํ„ฐ, ์ต์Šคํ”„๋ ˆ์Šค์™€์˜ ๋น„๊ต, ๋ฐฐํฌ, ํ…Œ์ŠคํŒ…๊นŒ์ง€ ๋ชจ๋‘ ๋ฐฐ์›Œ๋ด…์‹œ๋‹ค.

Thumbnail

์ค‘๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ฐฑ์—”๋“œ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • NestJS

  • Express์™€์˜ ๋น„๊ต

  • TypeORM

  • ์œ ๋‹› ํ…Œ์ŠคํŒ…, e2e ํ…Œ์ŠคํŒ…

  • API ์„ค๊ณ„

๋‚ด ์†์œผ๋กœ ๋งŒ๋“œ๋Š” ์ฑ„ํŒ… ์•ฑ, ์„œ๋ฒ„ ๊ฐœ๋ฐœ๊นŒ์ง€!
์š”์ƒˆ ์ œ์ผ ํ•ซํ•œ NestJS๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”.

Express์—์„œ
NestJS๋กœ!

์ €๋Š” ์›๋ž˜ ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋Š” Express๋ฅผ, DB๋กœ๋Š” Sequelize๋ฅผ ํšŒ์‚ฌ์—์„œ ์“ฐ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ•˜๋„ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ NestJS๋ฅผ ๋งŽ์ด ์–ธ๊ธ‰ํ•˜์‹œ๊ธธ๋ž˜ ํ•œ ๋ฒˆ ์จ๋ดค๋”๋‹ˆ... ๋ˆˆ์ด ๋ ์šฉ๐Ÿ‘€! 
๊ทธ ํ›„๋กœ๋Š” ํšŒ์‚ฌ ์„œ๋น„์Šค๋ฅผ ๋ชจ๋‘ NestJS๋กœ ์ „ํ™˜ํ•˜๊ณ , Sequelize๋„ TypeORM์œผ๋กœ ์ „ํ™˜ํ•ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค.

๋…ธ๋“œ๊ณ„์˜ ์Šคํ”„๋ง,
ํ•ซํ•œ NestJS ๐Ÿ”ฅ

Node.js์˜ Spring์ด๋ผ ๋ถˆ๋ฆฌ๋Š” NestJS! ๋…ธ๋“œ๋ฅผ ๋– ๋‚˜ ์Šคํ”„๋ง์„ ํ•˜๋Ÿฌ ๊ฐ€์ถœํ•œ ๊ฐœ๋ฐœ์ž๋“ค๋งˆ์ € NestJS ๋•Œ๋ฌธ์— ๋Œ์•„์˜ค๊ณ  ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋งŽ์ด ์“ฐ๋˜ Express์™€ ๋น„๊ตํ•ด NestJS๋Š” ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅด๊ณ , ์–ผ๋งˆ๋‚˜ ๊ฐ•๋ ฅํ• ๊นŒ์š”? ์ด๋ฒˆ ๊ฐ•์˜์—์„œ๋Š” NestJS์˜ ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. Express๋กœ ๊ตฌ์ถ•ํ•œ ์›น ์„œ๋ฒ„๋ฅผ NestJS๋กœ ์ „ํ™˜ํ•ด ๋ณด๊ณ , ์Šฌ๋ž™(Slack)๊ณผ ์œ ์‚ฌํ•œ ์›น ์•ฑ์˜ ๋ฐฑ์—”๋“œ ํŒŒํŠธ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด ๋ด…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ, NestJS๊ฐ€ ์™œ ๊ทธ๋ฆฌ๋„ ํ•ซํ•œ์ง€ ํ•œ๋ฒˆ ์ง์ ‘ ๋ฐฐ์›Œ๋ณผ๊นŒ์š”?


์ด๋Ÿฐ ๋ถ„๋“ค์—๊ฒŒ ์ถ”์ฒœ๋“œ๋ ค์š”!

NestJS๋กœ Node.js ์„œ๋ฒ„ ๊ฐœ๋ฐœ์— ์ž…๋ฌธํ•˜๊ณ  ์‹ถ์€ ๋ถ„

Express ๊ธฐ๋Šฅ์— ๋ถ€์กฑํ•จ์„ ๋Š๋ผ๊ณ  ๋Œ€์ฒด์žฌ๋ฅผ ์ฐพ๋Š” ๋ถ„

ํด๋ก ์ฝ”๋”ฉ์„ ํ†ตํ•ด ๋ฐฑ์—”๋“œ ํŒŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ์‹ถ์€ ๋ถ„


์ œ๋กœ์ดˆ ์Šฌ๋ž™ ํด๋ก  ์ฝ”๋”ฉ,
๋ฐฑ์—”๋“œ ๊ณ ๋ฏผ ์™„๋ฒฝ ํ•ด๊ฒฐ!

  • ์Šฌ๋ž™(Slack)๊ณผ ์œ ์‚ฌํ•œ ์›น ์•ฑ์˜ ๋ฐฑ์—”๋“œ ํŒŒํŠธ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด ๋ณผ ๊ฑฐ์˜ˆ์š”.
  • NestJS์˜ ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœํ•˜๊ณ , Express ์„œ๋ฒ„๋ฅผ NestJS๋กœ ์ „ํ™˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.
  • Express์—์„œ ๋ฒ—์–ด๋‚˜ NestJS์˜ ์žฅ์ ์„ ์ดํ•ดํ•˜๊ณ , NestJS ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์‹ค๋ฌด์—์„œ ๋ฐ”๋กœ ์ ์šฉ ๊ฐ€๋Šฅ!

  • NestJS ๊ณต์‹ ๋ฌธ์„œ ์ฝ๋Š” ๋ฒ•, ERD ๊ทธ๋ฆฌ๋Š” ๋ฒ•, API ๋ฌธ์„œ ๋งŒ๋“œ๋Š” ๋ฒ• ๋“ฑ ํšŒ์‚ฌ์—์„œ 1๋…„๊ฐ„ NestJS๋ฅผ ์ง์ ‘ ์“ฐ๋ฉด์„œ ๋Š๊ผˆ๋˜ ํŒ์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  • ๋ณด๋„ˆ์Šค๋กœ, ์›น ์†Œ์ผ“๊ณผ ํ…Œ์ŠคํŒ…ํ•˜๋Š” ๋ฒ•๊นŒ์ง€ OK!

์ˆ˜๊ฐ• ์ „ ํ™•์ธํ•ด์ฃผ์„ธ์š”!

  • ์ด ๊ฐ•์˜๋Š” [Slack ํด๋ก  ์ฝ”๋”ฉ] ๊ฐ•์˜์˜ ๋ฐฑ์—”๋“œ ํŒŒํŠธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ด์ „ ๊ณผ์ •์ธ ํ”„๋ก ํŠธ ํŒŒํŠธ๋ฅผ ๋“ฃ์ง€ ์•Š์•„๋„ ์ˆ˜๊ฐ•ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฒ•์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์ด์ „ ๊ฐ•์˜๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”.

์ด๋Ÿฐ ์Šคํ‚ฌ์„ ๋ฐฐ์›Œ์š”.

Nest.js

NestJS

ํƒ€์ž…ORM

TypeORM

์†Œ์ผ“io

Socket.io

๋…ธ๋“œjs

Node.js


์ง์ ‘ ๋งŒ๋“ค์–ด๋ด…๋‹ˆ๋‹ค!

์Šฌ๋ž™ ํด๋ก  ์ฝ”๋”ฉ - ๋ฐฑ์—”๋“œ ํŒŒํŠธ ๊ฐœ๋ฐœ
์š”์ฒญ ๋ฐธ๋ฆฌ๋ฐ์ด์…˜ ๋ฐ ์‘๋‹ต ํ‘œ์ค€ํ™”
NestJS๋ฅผ ํ†ตํ•œ Swagger ๋ฌธ์„œ ์ž๋™ ์ƒ์„ฑ
ERD ์„ค๊ณ„ ๋ฐ TypeORM ์‚ฌ์šฉ

์‹ค์ œ ๋ฐฐํฌ๋œ ์„œ๋น„์Šค๊ฐ€
๊ถ๊ธˆํ•˜์‹œ๋‚˜์š”?

https://sleact.nodebird.com (๋ฐ”๋กœ๊ฐ€๊ธฐ)

๊ฐ•์˜๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๋ณผ ์ˆ˜ ์žˆ์–ด์š” :)


#1
์†Œ์Šค ์ฝ”๋“œ๋ฅผ
์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

https://github.com/zerocho/sleact (๋ฐ”๋กœ๊ฐ€๊ธฐ)

NestJS + TypeORM ์†Œ์Šค ์ฝ”๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ,
ํ•ด๋‹น ์ฝ”๋“œ์— ๋Œ€์‘ํ•˜๋Š” Express + Sequelize ์†Œ์Šค ์ฝ”๋“œ๊นŒ์ง€ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

#2
์งˆ๋ฌธ์— ๋น ๋ฅด๊ฒŒ
๋Œ€๋‹ตํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

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


์ง€์‹๊ณต์œ ์ž๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

์›น๊ฐœ๋ฐœ ๋ฒ ์ŠคํŠธ์…€๋Ÿฌ
<Node.js ๊ต๊ณผ์„œ> ์ €์ž

์ฃผ์‹ํšŒ์‚ฌ ์˜ค๋Š˜์˜ํ”ฝ์—…
CTO


์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ ๐Ÿ’ฌ

Q. Slack ํด๋ก  ์ฝ”๋”ฉ - [์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… with React!] ๊ฐ•์˜๋„ ๋“ค์–ด์•ผ ํ•˜๋‚˜์š”? ์ €๋Š” ํ”„๋ก ํŠธ์—๋Š” ๊ด€์‹ฌ์ด ์—†์–ด์š”.

์„œ๋ฒ„ ๊ฐœ๋ฐœ์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๋ถ„๋“ค์ด๋ผ๋ฉด ์ด ๊ฐ•์˜๋งŒ ๋“ค์œผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋ฐฑ์—”๋“œ ์ฝ”๋”ฉ์„ ํ•  ๋•Œ ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ์žˆ์–ด์•ผ ๋ฐฑ์—”๋“œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด์ฃ ? ๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ํ”„๋ก ํŠธ ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ๋Š” ๊ทธ์ € ์‹คํ–‰๋งŒ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ ํ™”๋ฉด์„ ์‚ฌ์šฉํ•ด ๋ฐฑ์—”๋“œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด์„ธ์š”.

Q. Express๋ฅผ ์•Œ์•„์•ผ ํ•˜๋‚˜์š”? Express๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  NestJS๋งŒ ํ•˜๊ณ  ์‹ถ์–ด์š”.

Express(์ต์Šคํ”„๋ ˆ์Šค)๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค๊ฑฐ๋‚˜ Express์™€์˜ ์ฐจ์ด์ ์„ ๋น„๊ตํ•˜๋Š” ๋ถ€๋ถ„์ด ๊ฐ•์˜์— ์ข…์ข… ๋‚˜์˜ต๋‹ˆ๋‹ค. ์–ด๋Š ์ •๋„ Express ์ฝ”๋“œ๋ฅผ ์ฝ์œผ์‹ค ์ˆ˜ ์žˆ์–ด์•ผ ์ˆ˜๊ฐ•์ด ์›ํ™œํ•ฉ๋‹ˆ๋‹ค. NestJS๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ Express๋ฅผ ์“ฐ๋Š” ๋งŒํผ Express์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๊ถŒ์žฅํ•˜๋Š” ๋ฐ”์ž…๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!

  • Nest.js๋Š” 8๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์ขŒ๋Š” 7๋ฒ„์ „์ด๋‚˜ 8๋ฒ„์ „์œผ๋กœ ํ•˜์‹œ๋Š” ๊ฒŒ ๋” ์›ํ™œํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์ œ ๋ฐฐํฌ๋œ ์„œ๋น„์Šค๋Š” sleact.nodebird.com ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ•์˜ ๊ต์•ˆ์€ ์—ฌ๊ธฐ ์— ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ์€ FAQ๋กœ ์ •๋ฆฌํ•ด์„œ ์ธํ”„๋Ÿฐ ๋ธ”๋กœ๊ทธ์— ์˜ฌ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ์˜์ƒ์ด๋‚˜ ๋‚ด์šฉ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฌธ์˜ํ•˜์‹œ๋ฉด ์žฌํŽธ์ง‘ํ•ด์„œ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.
  • ๊ฐ•์˜์— ์—†๋Š”๋ฐ ๊ตฌํ˜„์ด ๊ถ๊ธˆํ•˜์‹  ๊ฒƒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋งŽ์€ ๋ถ„๋“ค์ด ์งˆ๋ฌธํ•˜์‹œ๋ฉด ๋ณด๋„ˆ์Šค ์˜์ƒ์„ ์ œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ณ„ ๊ฐ•์˜๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

[๋ฆฌ๋‰ด์–ผ] Node.js ๊ต๊ณผ์„œ -
๊ธฐ๋ณธ๋ถ€ํ„ฐ ํ”„๋กœ์ ํŠธ ์‹ค์Šต๊นŒ์ง€

๋…ธ๋“œ, ๊ธฐ์ดˆ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค๋ฉด?
Express๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด?

Slack ํด๋ก  ์ฝ”๋”ฉ
[์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… with React!]

์Šฌ๋ž™ ํด๋ก  ์ฝ”๋”ฉ,
ํ”„๋ก ํŠธ๊นŒ์ง€ ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด?

[๋ฆฌ๋‰ด์–ผ] React๋กœ
NodeBird SNS ๋งŒ๋“ค๊ธฐ

๋‹ค๋ฅธ ํด๋ก  ๊ฐ•์˜๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด?
22์‹œ๊ฐ„ ํŠธ์œ„ํ„ฐ ํด๋ก !

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • NestJS๋กœ Node.js ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ž…๋ฌธํ•˜๋ ค๊ณ  ํ•˜์‹œ๋Š” ๋ถ„

  • Express์—์„œ NestJS๋กœ ์ „ํ™˜ํ•˜๋ ค๊ณ  ํ•˜์‹œ๋Š” ๋ถ„

  • ์Šคํ”„๋ง์— ์ต์ˆ™ํ•œ๋ฐ ๋…ธ๋“œ์—์„œ๋„ ๋น„์Šทํ•œ ๊ฒƒ์„ ์ฐพ์œผ์‹œ๋Š” ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Node.js ๊ธฐ๋ณธ ์ง€์‹

  • Express, Passport, Sequelize์— ๋Œ€ํ•œ ๊ฒฝํ—˜

  • Typescript ๊ธฐ๋ณธ ์ง€์‹

์•ˆ๋…•ํ•˜์„ธ์š”
์ œ๋กœ์ดˆ(์กฐํ˜„์˜)์ž…๋‹ˆ๋‹ค.

62,418

๋ช…

์ˆ˜๊ฐ•์ƒ

1,441

๊ฐœ

์ˆ˜๊ฐ•ํ‰

9,544

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

21

๊ฐœ

๊ฐ•์˜

์ œ ๊ฐ•์˜์˜ ์žฅ์ ์€ Q&A์ž…๋‹ˆ๋‹ค(์ธํ”„๋Ÿฐ ๋‹ต๋ณ€์™• 2ํšŒ ์ˆ˜์ƒ). 24์‹œ๊ฐ„ ์ด๋‚ด์— ์ตœ๋Œ€ํ•œ ๋‹ต๋ณ€๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๊ฐ™์ด ๊ณ ๋ฏผํ•œ๋‹ค๋Š” ๋Š๋‚Œ์œผ๋กœ ๋‹ต๋ณ€ ๋“œ๋ฆด๊ฒŒ์š”!

https://www.zerocho.com/lecture

์ œ๋กœ์ดˆ ๊ฐ•์˜ ์ „์ฒด ๋กœ๋“œ๋งต

 

โ€“ Node.js๊ต๊ณผ์„œ, ์ฝ”๋”ฉ์ž์œจํ•™์Šต ์ œ๋กœ์ดˆ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, Let's Get IT ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ต๊ณผ์„œ ์ €์ž 
โ€“ ZeroCho.com ์šด์˜์ž
โ€“ ํ˜„) ์œ ํŠœ๋ธŒ์—์„œ ZeroCho TV๋กœ ๊ฐœ๋ฐœ ๊ด€๋ จ ๋ฐฉ์†ก์ค‘ 
โ€“ ํ˜„) ์Šค๋ชจ์–ดํ†ก CTO 
โ€“ ์ „) ์˜ค๋Š˜์˜ํ”ฝ์—… CTO(์นด์นด์˜ค๋ชจ๋นŒ๋ฆฌํ‹ฐ์— ์—‘์‹ฏ ํ›„ ์นด์นด์˜ค๋ชจ๋นŒ๋ฆฌํ‹ฐ ์ตœ์—ฐ์†Œ ๊ฐœ๋ฐœํŒŒํŠธ์žฅ)

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

39๊ฐœ โˆ™ (9์‹œ๊ฐ„ 40๋ถ„)

๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!