๐Ÿก 2์ฐจ ํ”„๋กœ์ ํŠธ - airbnb ํด๋ก  ํ”„๋กœ์ ํŠธ ํšŒ๊ณ 

haejun-kimยท2020๋…„ 9์›” 13์ผ
4
post-thumbnail

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

  • https://www.airbnb.co.kr/
  • ์ „ ์„ธ๊ณ„์— ๋ฐฑ๋งŒ ๋ช…์ด ๋„˜๋Š” ํ˜ธ์ŠคํŠธ์™€ ๊ฒŒ์ŠคํŠธ๊ฐ€ ์ž์‹ ์˜ ๊ณต๊ฐ„์„ ์ž„๋Œ€ํ•˜๊ฑฐ๋‚˜ ๋…ํŠนํ•œ ์ˆ™์†Œ๋ฅผ ์˜ˆ์•ฝ ๋˜๋Š” ์—์–ด๋น„์•ค๋น„ ์ฒดํ—˜ ํ˜ธ์ŠคํŠธ๋Š” ์ž์‹ ์˜ ์ทจ๋ฏธ๋‚˜ ์ „๋ฌธ์ง€์‹์„ ํ˜„์ง€์ธ๊ณผ ์—ฌํ–‰์ž์™€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค
  • ์ง€์—ญ ๊ฒ€์ƒ‰, ์ˆ™์†Œ ๋ฆฌ์ŠคํŠธ, ์ˆ™์†Œ ์˜ˆ์•ฝ์— ๊ด€๋ จ ๋œ ์ „๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„
  • ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ : 2020.08.31~2020.09.11 (์•ฝ 2์ฃผ)
  • ๊ฐœ๋ฐœ ์ธ์› : Front-End 3๋ช…(ํ™ฉ์—ฐ์šฑ, ์ตœ์˜ˆํ , ์ด์กฐ์€), Back-End 2๋ช…(๊น€ํ•ด์ค€, ๊ณ ์ง€์›)
  • Front-End , Back-End Github
    https://github.com/wecode-bootcamp-korea/11-BeerBnB-frontend
    https://github.com/wecode-bootcamp-korea/11-BeerBnB-backend

๋ฐ๋ชจ

์‚ฌ์šฉ ๋œ ๊ธฐ์ˆ 

Front-End

  • JavaScript(+ ES6 syntax)
  • React.js(setting with CRA)
  • Styled-Component
  • react-router-dom
  • Redux
  • Google Social Login
  • react-google-maps
  • react-dates

Back-End

  • Python
  • Django Web Framework
  • CORS headers
  • Selenium
  • MySQL
  • Bcrypt, JWT
  • Google Social Login
  • RESTful API
  • AWS RDS ์—ฐ๋™ ํ›„ Docker container๋ฅผ EC2 Server๋ฅผ ํ†ตํ•œ ๋ฐฐํฌ
  • ๊ฐ ์—”๋“œํฌ์ธํŠธ Unit Test ๊ตฌํ˜„

๊ณตํ†ต

Modeling

  • ํŒŒ๋ž€์ƒ‰ : User์™€ ๊ด€๋ จ ๋œ Table
  • ๋…น์ƒ‰ : Room๊ณผ ๊ด€๋ จ ๋œ Table
  • ์ž์ฃผ์ƒ‰ : Review Table
  • ๊ฐˆ์ƒ‰ : Booking๊ณผ ๊ด€๋ จ ๋œ Table

์ „์ฒด ๊ธฐ๋Šฅ / ๋‚ด๊ฐ€ ๋งก์€ ์—ญํ• , ๋ถ€๋ถ„

์ง์ ‘ ๊ตฌํ˜„ํ•œ ๋ถ€๋ถ„์€ ์ƒ‰๊น”์„ ์ฃผ์–ด ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๊ตฌ๊ธ€ ์†Œ์…œ ๋กœ๊ทธ์ธ

  • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ
    • email, ๋‚˜์ด 18์„ธ ์ด์ƒ ๋“ฑ ๊ฐ Validation์— ๋Œ€ํ•œ ๋กœ์ง ๊ตฌํ˜„
    • bcrypt, jwt๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ access_token ๋ฐœํ–‰ํ•˜์—ฌ ์ธ์ฆ/์ธ๊ฐ€ ๊ตฌํ˜„
    • Unit Test ๊ตฌํ˜„
    • Login Decorator ๊ตฌํ˜„
  • Google Social Login
    • ๊ตฌ๊ธ€ API๋ฅผ ์—ฐ๋™ํ•˜์—ฌ Google Social Login ๊ตฌํ˜„
    • Unit Test ๊ตฌํ˜„

์ˆ™์†Œ ์ „์ฒด list, ์ˆ™์†Œ ์ƒ์„ธ ํŽ˜์ด์ง€

  • Selenium์„ ํ†ตํ•œ ์ˆ™์†Œ์— ๋Œ€ํ•œ Data Crawling
  • csv file์„ MySQL Database upload script file ์ž‘์„ฑ
  • ์ˆ™์†Œ ์ „์ฒด List View
    • ๊ฒ€์ƒ‰ ๋œ ์ง€์—ญ์— ๋Œ€ํ•ด ์ˆ™์†Œ ํƒ€์ดํ‹€, ์ด๋ฏธ์ง€, ์ •๋ณด, ๊ฐ€๊ฒฉ, ์œ„๋„, ๊ฒฝ๋„ ๋“ฑ์— ๋Œ€ํ•œ ํ•„์š”ํ•œ ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ Json ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜
    • ์ •์ฐธ์กฐ์™€ ์—ญ์ฐธ์กฐ ๊ด€๊ณ„์™€ DB Hit์„ ๊ณ ๋ คํ•œ select_related ๋˜๋Š” prefetch_related๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์„ฑ ๊ณ ๋ ค
    • QueryString์„ ์‚ฌ์šฉํ•˜์—ฌ Pagenation ๊ธฐ๋Šฅ
    • QueryString, Q๊ฐ์ฒด, contains, in ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ filtering ๊ธฐ๋Šฅ ๊ตฌํ˜„
    • ๊ฐ์ข… ์˜ˆ์™ธ์— ๋Œ€ํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ตฌํ˜„
  • ์ˆ™์†Œ ์ƒ์„ธ Page View
    • PathParameter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ˆ™์†Œ์˜์—์„œ Room_id๋กœ ์ˆ™์†Œ ๊ตฌ๋ถ„
    • select_related์™€ prefetch_related๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ๊ณ ๋ คํ•œ ๋กœ์ง ๊ตฌํ˜„
    • List Comprehension์„ ์‚ฌ์šฉํ•œ ์†๋„๋ฅผ ๊ณ ๋ คํ•œ API ์„ค๊ณ„
  • ๊ฐ API์— ๋Œ€ํ•œ Unit Test ์‹ค์‹œ

์ˆ™์†Œ ๋ฆฌ๋ทฐ

  • host๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ์˜ˆ์•ฝ์„ ํ•œ ๋ฐฉ์— ๋Œ€ํ•ด์„œ๋งŒ review ์ž‘์„ฑ ๊ถŒํ•œ์ด ์ฃผ์–ด์ง€๋„๋ก ๊ตฌํ˜„
  • user์˜ name, ์ž‘์„ฑ ์‹œ๊ธฐ, ์ž‘์„ฑ ๋‚ด์šฉ, user profile image๋ฅผ ์ ์–ด์„œ ๋ฐ˜ํ™˜
  • aggregate์˜ Sum, Avg ๊ธฐ๋Šฅ์„ ํ™œ์˜ํ•˜์—ฌ ๊ฐ ํ•ฉ๊ณ„์™€ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฐ˜ํ™˜
  • Unit Test ๊ตฌํ˜„

์ˆ™์†Œ ์˜ˆ์•ฝ

  • QueryString์„ ์‚ฌ์šฉํ•˜์—ฌ Check_in / Check_out / adult / children / infatns ๋“ฑ์˜ ์ •๋ณด๋“ค์„ Getํ•˜์—ฌ ํ•ด๋‹น Data๋ฅผ ๋ฐ›์•„์„œ ์ €์žฅ
  • ์˜ˆ์•ฝ + ๊ฒฐ์ œ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์€ ์›์ž์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ transaction ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— transaction์„ import ํ•˜์—ฌ ๋กœ์ง ๊ตฌํ˜„
  • Login Decorator ์‚ฌ์šฉํ•˜์—ฌ, ์ธ๊ฐ€ ๋œ ํšŒ์›์—๊ฒŒ๋งŒ ์˜ˆ์•ฝ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ์ง ๊ตฌํ˜„
  • ์˜ˆ์•ฝ ์™„๋ฃŒ๋˜๋ฉด, ์˜ˆ์•ฝ ๋Œ€๊ธฐ ์ƒํƒœ์—์„œ ์˜ˆ์•ฝ ์™„๋ฃŒ ์ƒํƒœ๋กœ update
  • Unit Test ๊ตฌํ˜„

ํšŒ๊ณ 

  1. Modeling์„ ํ•  ๋•Œ ๋” ๋„“์€ ์‹œ์•ผ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์‹ค์ œ๋กœ 1์ฐจ ํ”„๋กœ์ ํŠธ์— ๋น„ํ•ด์„œ ์ƒ๊ฐํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ์ •๋ง ๋งŽ์•˜๋‹ค.
    1์ฐจ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ๋Š” ๋ชจ๋ธ๋ง์„ ํ•  ๋•Œ ๊ต‰์žฅํžˆ ์›น์‚ฌ์ดํŠธ์˜ ํŽ˜์ด์ง€ ๊ธฐ์ค€์œผ๋กœ ์ƒ๊ฐํ–ˆ๋‹ค. ์‹ค์ œ ์›น ์‚ฌ์ดํŠธ์—์„œ ์ด๋ ‡๊ฒŒ ๋˜์–ด์žˆ์œผ๋‹ˆ ์šฐ๋ฆฌ๋„ ์ด๋ ‡๊ฒŒ ๋ชจ๋ธ๋งํ•˜์ž. ๋ผ๋Š” ์ƒ๊ฐ.
    ํ•˜์ง€๋งŒ ์ด๋ฒˆ 2์ฐจ๋•Œ๋Š” ํŽ˜์ด์ง€๋ณด๋‹ค๋Š” ์‹ค์ œ ๋‚ด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ ‘๊ทผ์œผ๋กœ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ข‹์€ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
    1์ฐจ ํ”„๋กœ์ ํŠธ๋•Œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์œ ์ €, ์ƒํ’ˆ ๋“ฑ์— ๋Œ€ํ•œ ๋ถ€๋ถ„๋งŒ ์ƒ๊ฐํ–ˆ๋‹ค๋ฉด ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์œ ์ €, ์ˆ™์†Œ, ๋ฆฌ๋ทฐ, ์˜ˆ์•ฝ์— ๋Œ€ํ•ด์„œ๋„ ์ƒ๊ฐํ•ด์•ผํ–ˆ๊ณ , ์œ ์ €์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ๋•Œ๋„, host์ธ์ง€ ๋˜ host์ด๋ฉด์„œ super_host์ธ์ง€๋„ ๊ณ ๋ คํ•ด์•ผํ–ˆ๊ณ , ๊ฐ ์œ ์ €๊ฐ€ ์–ด๋–ค ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์„ฑ๋ณ„์€ ์–ด๋–ค์ง€ ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ํ”Œ๋žซํผ์„ ํ†ตํ•ด์„œ ๋กœ๊ทธ์ธ ํ•˜๋Š”์ง€๋„ ๊ณ ๋ คํ•ด์•ผํ–ˆ๋‹ค.
    ์ˆ™์†Œ์—์„œ๋Š” ๋” ๊ณ ๋ คํ•  ์ ์ด ๋งŽ์•˜๋‹ค. ์ œ๋ชฉ, ์œ„์น˜, ๊ฑด๋ฌผ์˜ ํƒ€์ž…, ํŽธ์˜ ์‹œ์„ค, ์œ„๋„, ๊ฒฝ๋„, ์•Œ์•„๋‘์–ด์•ผ ํ•  ์‚ฌํ•ญ, ๊ทธ๋ฆฌ๊ณ  ์นจ์‹ค์— ๋Œ€ํ•ด์„œ๋„ ์นจ์‹ค ํƒ€์ž…๊ณผ ์นจ์น ์ด ์žˆ์—ˆ๊ณ , ๊ทธ ๊ฐ๊ฐ์˜ ๊ด€๊ณ„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ๋ชจ๋ธ๋ง์„ ์„ค๊ณ„ํ•ด์•ผ ํ•  ์ง€ ๊ต‰์žฅํžˆ ๋งŽ์ด ์ƒ๊ฐํ•˜๊ณ  ํŒ€์›์ธ ์ง€์›๋‹˜๊ณผ ๋งŽ์ด ์ด์•ผ๊ธฐํ–ˆ๋‹ค.
    ๋ฌผ๋ก  ์ฒ˜์Œ๋ถ€ํ„ฐ ์™„๋ฒฝํ•  ์ˆœ ์—†์—ˆ๊ธฐ์— ์ฒ˜์Œ์— ์ž‘์„ฑํ•œ ๋ชจ๋ธ๋ง์„ ํ† ๋Œ€๋กœ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ํ•˜๋ฉด์„œ ์กฐ๊ธˆ์”ฉ ์ž˜๋ชป ๋œ ์ ์„ ์ฐพ์•„๊ฐ€๋ฉฐ ์ˆ˜์ •์„ ํ•˜๊ธด ํ–ˆ์ง€๋งŒ, 1์ฐจ๋•Œ์— ๋น„ํ•ด์„œ ์–ด๋–ป๊ฒŒ ๋ชจ๋ธ๋ง์„ ํ•ด์•ผ ์ข‹์„์ง€์— ๋Œ€ํ•œ ์‹œ์•ผ์™€ ์ƒ๊ฐ์˜ ํญ์ด ๊ต‰์žฅํžˆ ๋„“์–ด์กŒ์Œ์„ ๋Š๊ผˆ๋‹ค.

  2. ํ˜‘์—…
    ๋ฉ˜ํ† ๋‹˜๋“ค๊ป˜์„œ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ํŒ€์„ ๋‚˜๋ˆ„์–ด ์ฃผ์‹  ์ง€๋Š” ์ž˜ ๋ชจ๋ฅธ๋‹ค. ํ•˜์ง€๋งŒ 1์ฐจ๋•Œ๋„ ๊ทธ๋ ‡๊ณ  2์ฐจ๋•Œ๋„ ๊ทธ๋ ‡๊ณ  ํŒ€์˜ ๋ถ„์œ„๊ธฐ๊ฐ€ ์ข‹์•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋„ˆ๋ฌด ์žฌ๋ฐŒ๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.
    ์‚ฌ์‹ค ์ฝ”๋กœ๋‚˜๋กœ ์ธํ•œ ์‚ฌํšŒ์  ๊ฑฐ๋ฆฌ๋‘๊ธฐ๊ฐ€ 2.5๋‹จ๊ณ„๋กœ ๊ฒฉ์ƒ๋˜๋ฉด์„œ ์œ„์ฝ”๋“œ์— ๊ฐˆ ์ˆ˜๊ฐ€ ์—†๊ฒŒ ๋˜์—ˆ๋‹ค. ์˜จ๋ผ์ธ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•ด์•ผํ•˜๋‹ˆ ๋งŽ์ด ๋‹นํ™ฉ์Šค๋Ÿฌ์› ๊ณ , ์–ด๋–ค์‹์œผ๋กœ ์ง„ํ–‰ํ•ด์•ผํ• ์ง€ ํŒ€์›๋“ค๊ณผ zoom๊ณผ google meet์„ ์‚ฌ์šฉํ•˜์—ฌ ์–˜๊ธฐ๋ฅผ ๋‚˜๋ˆ„๊ธด ํ–ˆ์ง€๋งŒ ๊ต‰์žฅํžˆ ๋งŽ์ด ๋ถ€์กฑํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ฒ˜์Œ์—๋Š” ์นดํŽ˜์— ๋ชจ์˜€๋‹ค. ํ•œ ์ดํ‹€์—์„œ ์‚ผ์ผ์ •๋„? ๊ทผ๋ฐ ์ด๊ฑด ์•„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์—์–ด๋น„์—”๋น„๋ฅผ ์‹ค์ œ๋กœ ์ด์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ง์ ‘ ์ด์šฉํ•ด๋ณด์ž. ์ด๊ฒƒ์€ ๋ถ„๋ช… ์ข‹์€ ๊ฒฝํ—˜์ด ๋ ๊ฒƒ์ด๋‹ค! ๋ผ๋Š” ๋ช…๋ชฉ์œผ๋กœ. (๊ทธ๋Ÿด ๋“ฏํ•œ ํ•‘๊ณ„)
    ๊ทธ๋ž˜์„œ 2์ฃผ ์ค‘ ์•ฝ 1์ฃผ์ผ๊ฐ„์€ ๊ฑฐ์˜ ๊ฐ€์กฑ์ฒ˜๋Ÿผ ํ•ฉ์ˆ™ํ•˜๋ฉด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ํ•จ๊ป˜ ๊ณ„์† ์žˆ์œผ๋‹ˆ ๋Œ€ํ™” ํ•  ์‹œ๊ฐ„๋„ ๋งŽ์•˜๊ณ , ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ๊ต‰์žฅํžˆ ์ž˜ ๋๋‹ค. ๋ฉ˜ํ† ๋‹˜๋“ค๋„ ๊ฐ€์กฑ๊ฐ™๋‹ค๊ณ  ๋ง์”€ ํ•ด ์ฃผ์‹ค ์ •๋„๋กœ ๋ถ„์œ„๊ธฐ๊ฐ€ ์ข‹์•„๋ณด์˜€๋‚˜๋ณด๋‹ค.๐Ÿ˜Œ
    ๋‚ด๊ฐ€ ์ž˜ํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ, ํŒ€์› ๋ชจ๋‘๊ฐ€ ์ž˜ ํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜‘์—…์ด ์ž˜๋œ ๊ฒƒ์ด์ง€๋งŒ, ํ˜‘์—…์ด ์ž˜๋๊ธฐ์— ์ด์ •๋„์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋”์šฑ ์„œ๋กœ์— ๋Œ€ํ•ด ์œ ๋Œ€๊ฐ์ด ์ƒ๊ฒผ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋˜ํ•œ ์ž˜ํ•œ์ ์ด ์•„๋‹๊นŒ ์‹ถ๋‹ค.

  3. ํ˜ผ์ž ํ•  ์ˆ˜ ์žˆ์–ด
    ๊ฐœ๋ฐœ์ž๋Š” ํ˜ผ์ž ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๊ธธ๋Ÿฌ์•ผํ•œ๋‹ค. ์–ด๋–ค ๋ฌธ์ œ์— ๋ถ€๋”ชํ˜”์„ ๋•Œ, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋Šฅ๋ ฅ์ด ์ค‘์š”ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ๊ตฌ๊ธ€๋ง์„ ํ•  ๊ฒƒ์ด๋ฉฐ, ๊ณต์‹๋ฌธ์„œ๋“ฑ์„ ๋ณด๋ฉด์„œ ์–ป์€ ์ง€์‹์„ ํ˜„์žฌ ๋‚˜์˜ ๋ฌธ์ œ์™€ ๋‚ด๊ฐ€ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์ƒํ™ฉ์— ๋Œ€์ž…ํ•˜์—ฌ ๊ฐ€์žฅ ์ ์ ˆํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•˜์—ฌ ์„œ๋น„์Šค์— ์ ์šฉ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    ํ•™์›์— ์žˆ์œผ๋ฉด์„œ๋Š” ์กฐ๊ธˆ์”ฉ ๋ง‰ํžˆ๋ฉด ๋งŽ์ด ์ฃผ๋ณ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฌผ์–ด๋ณด๋ฉด์„œ ์˜์ง€ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
    (๋ฌผ๋ก  ํ˜ผ์ž์„œ ๊ณ ๋ฏผํ•˜๋Š” ์‹œ๊ฐ„์ด 2์‹œ๊ฐ„ ์ด์ƒ์ด๋‹ค. ๊ทธ ์ด์ƒ์œผ๋กœ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ๋„ ๋‚˜์—๊ฒŒ ๋„์›€์ด ๋  ํ…Œ์ง€๋งŒ ๋‚˜์—๊ฒŒ ์‹œ๊ฐ„์€ ํ•œ์ •์ ์ด์˜€๊ธฐ์—, ์ฃผ์–ด์ง„ ์‹œ๊ฐ„๋™์•ˆ ๋‚˜์—๊ฒŒ ๋‹ฅ์นœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„ , ๋‚ด๊ฐ€ ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ณ  ์žˆ์„ ๋•Œ ๋ฐฉํ–ฅ์„ ์žก๋Š” ๊ฒƒ๋„ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.)
    ์ด๋ฒˆ์—๋Š” ์˜จ๋ผ์ธ์œผ๋กœ ์ง„ํ–‰ ํ•œ ๋งŒํผ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ฌผ์–ด๋ณด๋Š”๊ฒŒ ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ๋ฌผ๋ก  Vscode์˜ LiveShare ๊ธฐ๋Šฅ๊ณผ, Zoom์ด๋‚˜ Google Meet์˜ ํ™”๋ฉด ๊ณต์œ  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌผ์–ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์˜คํ”„๋ผ์ธ์œผ๋กœ ๋ฌผ์–ด๋ณผ ๋•Œ์˜ ๋Š๋‚Œ์€ ๋ฐ›์„ ์ˆ˜ ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋”๋”์šฑ ๋‚˜ ํ˜ผ์ž ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋…ธ๋ ฅ์„ ๋งŽ์ด ํ–ˆ๋‹ค.
    ์‹ค์ œ๋กœ filtering ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ Q๊ฐ์ฒด์™€ __,__contains, __in ๋“ฑ ๋‚˜์—๊ฒŒ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰๋„ ๊ทธ ์–ด๋–ค๋•Œ๋ณด๋‹ค ๋งŽ์ด ํ•ด๋ณด๊ณ , ์‹œ๊ฐ„์„ ๋“ค์—ฌ์„œ ์˜์–ด๋กœ ๋œ ๊ธ€๋“ค์„ ์ฝ์—ˆ์œผ๋ฉฐ, ๋‚˜์˜ ์ฝ”๋“œ์— ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ช‡๋ฒˆ์˜ ์‹œํ–‰์ฐฉ์˜ค๋“ค๋„ ๊ฒช์—ˆ๋‹ค.
    ์ด ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด์„œ, ์–ด๋–ค์‹์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ•˜๋Š”๊ฒŒ ๋” ๋„์›€์ด ๋˜๋Š”์ง€, ๋˜ ๋‚˜์—๊ฒŒ ๋งž๋Š” ๋ฐฉ๋ฒ•์€ ์–ด๋–ค ๋ฐฉ๋ฒ•์ธ์ง€์— ๋Œ€ํ•œ ๊ฐ์„ ์กฐ๊ธˆ์€ ์žก์€ ๊ฒƒ ๊ฐ™๋‹ค.
    ํ•ญ์ƒ ๋‚˜์—๊ฒŒ ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ฌผ์–ด๋ณผ ์ˆ˜ ์—†๋Š” ํ™˜๊ฒฝ์ด ๋ถ„๋ช…ํžˆ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋Šฅ๋ ฅ์ด ์ง€๋‚œ ํ•œ๋‹ฌ๊ฐ„, ๊ทธ๋ฆฌ๊ณ  1์ฐจ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋™์•ˆ๋ณด๋‹ค ๊ธธ๋Ÿฌ์กŒ๋‹ค๋Š”๊ฑด ๋ถ„๋ช…ํžˆ ๋‚ด๊ฐ€ ์„ฑ์žฅํ–ˆ๋‹ค๋Š” ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹๊นŒ.

๋งˆ์น˜๋ฉฐ

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

ํ”„๋กœ์ ํŠธ ๋๋‚˜๊ณ  ์ฃผ๋ง์˜ ์ดํ‹€๋™์•ˆ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ณ  ๊ทธ์ € ์‰ฌ์—ˆ๋‹ค. ๋ฌด์–ธ๊ฐ€ ์ž๋„์ž๋„ ์ž ์ด ํ”ผ๋กœ๊ฐ€ ํ’€๋ฆฌ์ง€ ์•Š์•˜๊ณ  ๊ทธ ์–ด๋–ค๊ฒƒ๋„ ํ•˜๊ณ ์‹ถ์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ ํ›„๊ธฐ ๊ธ€๋„ ์กฐ๊ธˆ ๋Šฆ๊ฒŒ ์˜ฌ๋ฆฐ ๊ฐ์ด ์—†์ง€ ์•Š์•„ ์žˆ๊ณ , ๊ธ€๋„ ๋งŽ์€ ์ƒ๊ฐ์„ ํ•˜์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ์ง€ ๊ทธ๋ ‡๊ฒŒ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋™์•ˆ ์ž ๋„ ์•ˆ์ž๊ณ  ์—ด์‹ฌํžˆ ๋‹ฌ๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ •๋„์˜ ํœด์‹์€ ๋ฒˆ์•„์›ƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ข‹์€ ํœด์‹์ด์˜€๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์‰ฌ์—ˆ์œผ๋‹ˆ ์ด์ œ ๋‹ค์‹œ ๋‹ฌ๋ฆด ์ฐจ๋ก€์ด๋‹ค. ํ•œ๋‹ฌ๊ฐ„์˜ ๊ธฐ์—… ํ˜‘์—…๋„ ํž˜๋‚ด๋„๋ก ํ•˜์ž!
ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„๋™์•ˆ ๋ฐ”์˜๋‹ค๋Š” ํ•‘๊ณ„๋กœ ๋ฏธ๋ค„๋‘์—ˆ๋˜ ๋ธ”๋กœ๊น…๋„ ์ด์ œ๋Š” ์‹œ๊ฐ„๋‚ด์„œ ํ•˜๋‚˜ํ•˜๋‚˜์”ฉ ๊ณ„์† ์ž‘์„ฑํ•ด ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.

์Šค์Šค๋กœ์™€ ํƒ€ํ˜‘ํ•˜์ง€ ๋ง๊ฒƒ.
๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ๋‹ค๋ผ๊ณ  ๋งˆ์Œ์„ ๋จน์€ ๊ทธ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์ •ํ•ด์ ธ ์žˆ๋˜ '๋‚ด๊ฐ€ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋‹ค๊ฐ€๊ฐ€์„œ ๊ฐ™์ด ์ผํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๋งํ•˜๋Š”๊ฒŒ ์•„๋‹Œ, ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‚˜์—๊ฒŒ ๋จผ์ € ๋‹ค๊ฐ€์™€ ๊ฐ™์ด ์ผ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ผ๋Š” ๋ง์„ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์ž' ๋ผ๋Š” ๋ชฉํ‘œ๋ฅผ ํ–ฅํ•ด ํž˜์ฐจ๊ฒŒ ๋‹ค๊ฐ€๊ฐˆ ๊ฒƒ.

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