[ALL-CON] ์ฝ˜์„œํŠธ ์˜ˆ๋งค์ •๋ณด๋ถ€ํ„ฐ ์ฝ˜์„œํŠธ ์นœ๊ตฌ๊นŒ์ง€ ์ฐพ์•„์ฃผ๋Š” ์ฝ˜์„œํŠธ ์ข…ํ•ฉ ์ •๋ณด ํ”Œ๋žซํผ ๐ŸŽŸ

๐Ÿ”ฅ
Project
2022.01.26

๐Ÿ”ฅ

ย ๐Ÿ‘‰ ALL-CON ๋ฐ”๋กœ๊ฐ€๊ธฐย 

ย ๐Ÿ‘‰ Github ๋ฐ”๋กœ๊ฐ€๊ธฐย 

ย ๐Ÿ‘‰ Project ํšŒ๊ณ  ๋ฐ”๋กœ๊ฐ€๊ธฐย 


  • ALL-CON์€ ๊ฐ ์‚ฌ์ดํŠธ๋“ค์˜ ์ฝ˜์„œํŠธ ์ •๋ณด๋ฅผ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ฝ˜์„œํŠธ ์ข…ํ•ฉ ์ •๋ณด ํ”Œ๋žซํผ์ด์—์š”.

  • ๊ฐ ์‚ฌ์ดํŠธ๋“ค์˜ ๋‹จ๋… ํŒ๋งค ์ฝ˜์„œํŠธ๊นŒ์ง€ ํ•œ๋ˆˆ์— ๋ณด๊ณ  ๋น„๊ตํ•ด๋ณด์„ธ์š”!๐Ÿคฉ

  • ์ฝ˜์„œํŠธ๋ฅผ ๊ฐ€๊ณ  ์‹ถ์€๋ฐ ๊ฐ™์ด ์ฆ๊ธธ ์นœ๊ตฌ๊ฐ€ ์—†์–ด ๋ง์„ค์ด์…จ๋‚˜์š”?๐Ÿ˜ข

  • ์ฝ˜์„œํŠธ์˜ ๊ฐ๋™์„ ํ•จ๊ป˜ ๋‚˜๋ˆŒ ์ฝ˜์นœ์„ ์ฐพ์•„ ๋ณด์„ธ์š”!๐Ÿคผโ€โ™‚๏ธ




๐Ÿค” ALL-CON์€ ๋ฌด์Šจ ๋œป์ธ๊ฐ€์š”?


"์ฝ˜์„œํŠธ๊ฐ€ ์—ด๋ฆฌ๋Š” ๋ชจ๋“  ๋‚ ์— ์ฐธ์„ํ•จ"์„ ์˜๋ฏธํ•ด์š”.

ALL-CON๊ณผ ํ•จ๊ป˜ ์˜ฌ์ฝ˜ ์ฐธ์„์— ์„ฑ๊ณตํ•˜์„ธ์š”!๐Ÿƒโ€โ™€๏ธ๐Ÿƒ๐Ÿƒโ€โ™‚๏ธ



๐Ÿค” ALL-CON์—์„œ๋Š” ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?


์ž์„ธํžˆ๋ณด๊ธฐ

๐Ÿ‘‰ ๊ฐ ์‚ฌ์ดํŠธ๋“ค์˜ ์ฝ˜์„œํŠธ ์ •๋ณด(๋‹จ๋… ์ฝ˜์„œํŠธ ํฌํ•จ)๋ฅผ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ ํ˜„์žฌ ์ธ๊ธฐ ๋งŽ์€ ์ฝ˜์„œํŠธ, ์˜คํ”ˆ์ด ์ž„๋ฐ•ํ•œ ์ฝ˜์„œํŠธ, ์ตœ๊ทผ ๋“ฑ๋ก๋œ ์ฝ˜์„œํŠธ ์ •๋ณด๋ฅผ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ ๋ฌธ์ž ์•Œ๋ฆผ ๋˜๋Š” ๋ฉ”์ผ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ฝ˜์„œํŠธ์˜ ์˜ˆ๋งค ์˜คํ”ˆ์‹œ๊ฐ„์„ ๋†“์น˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ ์ฝ˜์„œํŠธ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ด์„œ ์ฝ˜์„œํŠธ์žฅ์˜ ์œ„์น˜์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ ์ฝ˜์นœ ์ธ์ฆ์„ ํ•˜๋ฉด ์ฝ˜์„œํŠธ์— ํ•จ๊ป˜ ๊ฐˆ ์ฝ˜์นœ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ ์ฝ˜์นœ์ด ๋  ์œ ์ €์˜ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ ์ฝ˜์„œํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋Œ€ ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์š”.

๐Ÿ‘‰ ๋‚ด๊ฐ€ ์ฐพ๋Š” ์ฝ˜์„œํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์–ด์š”.




๐ŸŽฌ ALL-CON ์„œ๋น„์Šค ๊ธฐ๋Šฅ๋ณ„ ์‹œ์—ฐ


  ๋žœ๋”ฉํŽ˜์ด์ง€

  • ๋ฐ์Šคํฌํƒ‘

    landing

  • ๋ชจ๋ฐ”์ผ

    landing(mobile)



  ๋กœ๊ทธ์ธ

  • ๋ฐ์Šคํฌํƒ‘

    login_success

  • ๋ชจ๋ฐ”์ผ

    login_success(mobile)

  ์†Œ์…œ ๋กœ๊ทธ์ธ

  • ๋ฐ์Šคํฌํƒ‘

    social_login_success

  • ๋ชจ๋ฐ”์ผ

    social_login_success(mobile)

  ํšŒ์›๊ฐ€์ž…

  • ๋ฐ์Šคํฌํƒ‘

    signup_success

  • ๋ชจ๋ฐ”์ผ

signup_success(mobile)

  ๋น„๋ฐ€๋ฒˆํ˜ธ ์ดˆ๊ธฐํ™”

  • ๋ฐ์Šคํฌํƒ‘

    password

  • ๋ชจ๋ฐ”์ผ

password(mobile)



  ๋ฉ”์ธํŽ˜์ด์ง€(ํฌ์Šคํ„ฐ์Šฌ๋ผ์ด๋“œ)

  • ๋ฐ์Šคํฌํƒ‘

    main_jumbotron

  • ๋ชจ๋ฐ”์ผ

main_jumbotron(mobile)

  ๋ฉ”์ธํŽ˜์ด์ง€(์ฝ˜์„œํŠธ์ •๋ณด)

  • ๋ฐ์Šคํฌํƒ‘

    main_concert

  • ๋ชจ๋ฐ”์ผ

    main_concert(mobile)

  ๋ฉ”์ธํŽ˜์ด์ง€(๋Œ“๊ธ€)

  • ๋ฐ์Šคํฌํƒ‘

    main_comment

  • ๋ชจ๋ฐ”์ผ

    main_comment(mobile)



  ์ฝ˜์„œํŠธํŽ˜์ด์ง€

  • ๋ฐ์Šคํฌํƒ‘

    concert

  • ๋ชจ๋ฐ”์ผ

concert(mobile)



  ์ฝ˜์นœ์ฐพ๊ธฐํŽ˜์ด์ง€(๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ)

  • ๋ฐ์Šคํฌํƒ‘

    conchin_write

  • ๋ชจ๋ฐ”์ผ

conchin_write(mobile)

  ์ฝ˜์นœ์ฐพ๊ธฐํŽ˜์ด์ง€(๊ฒŒ์‹œ๊ธ€ ๋ ˆ์ด์•„์›ƒ ๋ณ€ํ™”)

  • ๋ฐ์Šคํฌํƒ‘

    conchin_article

  • ๋ชจ๋ฐ”์ผ

conchin_article(mobile)

  ์ฝ˜์นœ์ฐพ๊ธฐํŽ˜์ด์ง€(๊ฒŒ์‹œ๊ธ€ ๋ณด๊ธฐ)

  • ๋ฐ์Šคํฌํƒ‘

    conchin_detail

  • ๋ชจ๋ฐ”์ผ

conchin_detail(mobile)



  ๋งˆ์ดํŽ˜์ด์ง€

  • ๋ฐ์Šคํฌํƒ‘

    mypage

  • ๋ชจ๋ฐ”์ผ

    mypage(mobile)

  ๋งˆ์ดํŽ˜์ด์ง€(ํ”„๋กœํ•„ ์ˆ˜์ • ํŽ˜์ด์ง€)

  • ๋ฐ์Šคํฌํƒ‘

    mypage_profile

  • ๋ชจ๋ฐ”์ผ

    mypage_profile(mobile)

  ๋งˆ์ดํŽ˜์ด์ง€(์ฝ˜์นœ์ธ์ฆ ํŽ˜์ด์ง€)

  • ๋ฐ์Šคํฌํƒ‘

    mypage_conchin

  • ๋ชจ๋ฐ”์ผ

    mypage_conchin(mobile)



  ํ—ค๋”

  • ๋ฐ์Šคํฌํƒ‘

    header

  • ๋ชจ๋ฐ”์ผ

    header(mobile)

  ๋กœ๊ทธ์•„์›ƒ

  • ๋ฐ์Šคํฌํƒ‘

    logout

  • ๋ชจ๋ฐ”์ผ

    logout(mobile)



๐ŸŽฅ ALL-CON ์„œ๋น„์Šค ๋ฐœํ‘œ ์˜์ƒ





๐Ÿค” ALL-CON์—์„œ๋Š” ๋ฌด์—‡์„ ๋‹ด๋‹นํ•˜์˜€๋‚˜์š”?


๐Ÿ–ฅ Front-end
TypeScript React Redux Sass

  ๋ฉ”์ธํŽ˜์ด์ง€
  • ์ฝ˜์„œํŠธ ์•Œ๋žŒ ์กฐํšŒ & ์š”์ฒญ ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ์ฝ˜์„œํŠธ ๋Œ“๊ธ€ ์ž‘์„ฑ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ & ์ˆ˜์ • & ์‚ญ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„


  ์ฝ˜์„œํŠธํŽ˜์ด์ง€
  • ์ฝ˜์„œํŠธ ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ ๊ตฌํ˜„

  • ์ฝ˜์„œํŠธ ์กฐํšŒ์ˆ˜์ˆœ & ์ž„๋ฐ•์˜ˆ์ •์ˆœ & ๋“ฑ๋ก์ผ์ˆœ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ์ฝ˜์„œํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„

  • ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์ด์šฉํ•œ ์นด์นด์˜ค๋งต API ๊ธฐ๋Šฅ ๊ตฌํ˜„


  ๋ชจ๋‹ฌ
  • ๋กœ๊ทธ์ธ ๋ชจ๋‹ฌ ์ฐฝ ๊ตฌํ˜„

    • ์ผ๋ฐ˜ ๋กœ๊ทธ์ธ & ๊ตฌ๊ธ€ & ์นด์นด์˜ค ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ํšŒ์›๊ฐ€์ž… ๋ชจ๋‹ฌ ์ฐฝ ๊ตฌํ˜„

    • ํšŒ์›๊ฐ€์ž… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ๋ชจ๋‹ฌ ์ฐฝ ๊ตฌํ˜„

    • ํƒ€์ด๋จธ & SMS ๋ฐœ์†ก ๋ฐ ์ž…๋ ฅ๊ฐ’ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„



โš™๏ธ Back-end
JavaScript Node.js Express MySQL Sequelize

  ๊ตฌ์กฐ ์ž‘์„ฑ
  • ๋ผ์šฐํ„ฐ & ์ปจํŠธ๋กค๋Ÿฌ ๋ผˆ๋Œ€ ๊ตฌ์กฐ ๊ตฌํ˜„

  • Sequelizer ์„ค์ •

    • migrations, models, seeders, associations ์„ค์ •

  ๋ฏผ๊ฐ์ •๋ณด ์•”ํ˜ธํ™”
  • crypto๋ฅผ ์ด์šฉํ•œ ์•”ํ˜ธํ™”

    • ํ•ด์‰ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์†”ํŠธ๋ฅผ ์ด์šฉํ•œ ๋ฏผ๊ฐ์ •๋ณด ์•”ํ˜ธํ™”

  ๋กœ๊ทธ์ธ ์ปจํŠธ๋กค๋Ÿฌ
  • JWT ์ธ์ฆ๋ฐฉ์‹ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ๋‹‰๋„ค์ž„ ์ค‘๋ณต์—†๋Š” OAuth ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„

    • ๊ตฌ๊ธ€ API & ์นด์นด์˜ค API ๋ฅผ ์ด์šฉํ•œ ๋‘๊ฐ€์ง€ ๋กœ๊ทธ์ธ ๋ฐฉ์‹ ์ง€์›

  ๋ฌธ์ž ์ธ์ฆ ์ปจํŠธ๋กค๋Ÿฌ
  • Twillio๋ฅผ ์ด์šฉํ•œ 6์ž๋ฆฌ ๋‚œ์ˆ˜ ์ฝ”๋“œ SMS ์ „์†ก

  ์›น ํฌ๋กค๋ง
  • Cheerio๋ฅผ ์ด์šฉํ•œ ์›น ํฌ๋กค๋Ÿฌ ๊ตฌํ˜„

  • Node Schedule์„ ์ด์šฉํ•œ ํฌ๋กค๋ง ์ž๋™ํ™” ๊ตฌํ˜„




๐Ÿ”ง Deployment
Amazon AWS

  ํด๋ผ์ด์–ธํŠธ ๋ฐฐํฌ ์ž๋™ํ™”
  • S3๋ฅผ ์ด์šฉํ•œ ํด๋ผ์ด์–ธํŠธ ๋ฐฐํฌ

  • CloudFront๋ฅผ ์ด์šฉํ•œ ํด๋ผ์ด์–ธํŠธ HTTPS ๋ฐฐํฌ

  • CodePipeLine์„ ์ด์šฉํ•œ ๋ฐฐํฌ ์ž๋™ํ™”

  • Route 53์„ ์ด์šฉํ•œ ๋„๋ฉ”์ธ ์—ฐ๊ฒฐ




๐ŸŽฅ ๊ฐœ์ธ ๊ธฐ์ˆ  ๋ฐœํ‘œ ์˜์ƒ




Q. ์™œ Cheerio๋ฅผ ์‚ฌ์šฉํ–ˆ๋‚˜์š”?

A. HTML / XML ๋ฌธ์„œ๋ฅผ ๋งค์šฐ ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ ๋ฐ ์ถ”์ถœ์€ ๋ฌผ๋ก ์ด๋ฉฐ, ์ •๋ง ๋น ๋ฅธ ์†๋„๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ธฐ์— ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ์†๋„์™€ ๋”๋ถˆ์–ด ์ ์€ ๋ฆฌ์†Œ์Šค๋กœ ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์„ ์ตœ๋Œ€ํ•œ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


Q. ์™œ node-schedule์„ ์‚ฌ์šฉํ–ˆ๋‚˜์š”?

A. ์•ž์„œ ๋ง์”€๋“œ๋ฆฐ๋Œ€๋กœ ๋ฌด๋ถ„๋ณ„ํ•œ ํฌ๋กค๋ง์ด ์•„๋‹Œ, 1์ผ 1ํšŒ์˜ ํฌ๋กค๋ง์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—…์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„ ์ •๊ธฐ์ ๊ฒ€ ์‹œ๊ฐ„์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ •์‹œ๊ฐ„์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

npm compare ์‚ฌ์ดํŠธ๋ฅผ ํ†ตํ•ด ๋Œ€ํ‘œ์ ์ธ ์Šค์ผ€์ฅด๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 3๊ฐ€์ง€๋ฅผ ์„ ์ •ํ•˜์˜€์œผ๋ฉฐ, ๊ทธ์ค‘ Agenda๋Š” mongo DB๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋ฏ€๋กœ ์ œ์™ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.


node Schedule ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฐ€์žฅ ์—ญ์‚ฌ๊ฐ€ ๊ธธ๋ฉฐ ๋‹ค์šด๋กœ๋“œ์ˆ˜๊ฐ€ ๋งŽ์€๊ฑธ ๋ณด์•„ ๋‹ค์–‘ํ•œ ์œ ์ €๋“ค์ด ์‚ฌ์šฉํ•˜์˜€๋‹ค ํŒ๋‹จ๋˜๋ฏ€๋กœ ์—๋Ÿฌํ•ธ๋“ค๋งํ•˜๊ธฐ ๊ฐ€์žฅ ์ง„์ž…์žฅ๋ฒฝ์ด ๋‚ฎ์•„๋ณด์ด๋Š” node-schedule ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.



Footer

Previous
์ฝ”๋“œ์Šคํ…Œ์ด์ธ  Final Project [ALL-CON] ํšŒ๊ณ 
๐Ÿค”Retrospect
2022.01.25
Next
์ฝ”๋“œ์Šคํ…Œ์ด์ธ  34๊ธฐ ์ˆ˜๋ฃŒ
๐Ÿค”Retrospect
2022.01.28