Skip to content

Tech Stack

devminseo edited this page Sep 5, 2021 · 45 revisions

โœจ Visualization

[๊ธฐ์ˆ ์Šคํƒ ์‹œ๊ฐํ™” ์ด๋ฏธ์ง€]

โœจ Backend Tech Stack

OpenJdk 11

Gradle

  • Gradle์€ ๋นŒ๋“œ๋ฅผ xml๋กœ ์ •์˜ํ•˜๋Š” Maven๊ณผ ๋‹ฌ๋ฆฌ Groovy ์–ธ์–ด๋กœ ์ •์˜ํ•˜์—ฌ ๋ฌธ์„œ์˜ ์–‘์ด ์ค„์–ด๋“ค๊ฒŒ ๋˜๊ณ  ๋นŒ๋“œ ์†๋„๋„ Maven๋ณด๋‹ค Gradle์ด ๋” ๋น ๋ฅด๋‹ค. ์ž๋ฐ” ๋นŒ๋“œ๋„๊ตฌ๋กœ Gradle๋ณด๋‹ค Maven์— ๋” ์ต์ˆ™ํ•˜์ง€๋งŒ ์ ์  Gradle๋„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ถ”์„ธ์ด๋ฏ€๋กœ ๋ฐฐ์šฐ๋ฉด์„œ ์ ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

Spring Boot 2.5.3

  • ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ ์ž๋ฐ”์˜ ํŠน์„ฑ์„ ์ž˜ ์‚ด๋ ค์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ tomcat์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๊ณ  ์Šคํ”„๋ง๊ณผ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž๋™์ ์œผ๋กœ ๊ตฌ์„ฑํ•ด์ฃผ๋ฏ€๋กœ ๋ณด๋‹ค ๋น ๋ฅธ ๊ฐœ๋ฐœ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

Spring Rest Docs

  • Swagger๋Š” ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  API๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์„œ๋น„์Šค ์ฝ”๋“œ์— Swagger ๊ด€๋ จ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•˜๊ณ  ๋ฌธ์„œ๋งŒ์œผ๋กœ ์—ฐ๋™ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ธฐ ์–ด๋ ต๋‹ค.
  • ์ด์— ๋ฐ˜ํ•ด Spring Rest Docs๋Š” ์ฒ˜์Œ์—๋Š” ์ ์šฉํ•˜๊ธฐ ์–ด๋ ต๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•˜์ง€๋งŒ, ์„œ๋น„์Šค ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  API๋ฅผ ์ž๋™์œผ๋กœ ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • TDD๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๊ณ„ํš์ด๋ฉฐ ์ž๋™ํ™”๋ฅผ ์ง€ํ–ฅํ•˜๋ฏ€๋กœ Spring Rest Docs๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

MariaDB 10.4.13

  • ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์˜ ํŠน์ง•์ƒ ํ”„๋กœ์ ํŠธ ๊ตฌํ…๋ฒ ๋ฅดํฌ์— ์ƒˆ๋กœ์šด ์ฑ…์ด ์—…๋กœ๋“œ๋  ๋•Œ๋งˆ๋‹ค ์šฐ๋ฆฌ ์ชฝ DB์—๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ ๊ตฌํ…๋ฒ ๋ฅดํฌ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต์—†์ด ํ•œ๋ฒˆ๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” RDBMS๋ฅผ ์„ ํƒํ–ˆ๋‹ค.
  • NoSQL์€ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์˜ ์ฝ๊ธฐ์— ์œ ๋ฆฌํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ ํŠนํžˆ ์ฑ… ๋ฒˆ์—ญ๋ฌธ ํ…Œ์ด๋ธ”์€ ์ˆ˜์ •์ด ์ž์ฃผ ์ผ์–ด๋‚˜๊ณ  ํšŒ์› ํ…Œ์ด๋ธ”, ์ฑ… ์ •๋ณด ํ…Œ์ด๋ธ”, ์ฑ… ์›๋ฌธ ํ…Œ์ด๋ธ”, ์ฑ… ๋ฒˆ์—ญ๋ฌธ ํ…Œ์ด๋ธ” ๋“ฑ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•„์„œ ์กฐ์ธ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•œ RDBMS๊ฐ€ ๋” ์ ํ•ฉํ•˜๋‹ค.
  • PostgreSQL์€ UPDATE๋ฅผ ํ•  ๋•Œ ๊ณผ๊ฑฐ ํ–‰์„ ์‚ญ์ œํ•˜๊ณ  INSERT์ฒ˜๋Ÿผ ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ์ƒˆ๋กœ์šด ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋Š” ํ˜•ํƒœ๋ผ์„œ UPDATE๋ฌธ์ด ๋А๋ฆฌ๋‹ค.
  • ์˜คํ”ˆ์†Œ์Šค RDBMS ์ค‘์—์„œ ๋‹จ์ˆœ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์€ MySQL์ด ๋›ฐ์–ด๋‚˜๋ฉฐ, MariaDB์€ MySQL์—์„œ ํŒŒ์ƒ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฏ€๋กœ ์ „๋ฐ˜์ ์œผ๋กœ MySQL๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ๋˜ ๋™์ผํ•œ ํ•˜๋“œ์›จ์–ด ์‚ฌ์–‘์œผ๋กœ MySQL๋ณด๋‹ค ํ–ฅ์ƒ๋œ ์„ฑ๋Šฅ, ์ข€ ๋” ํ™œ์„ฑํ™”๋œ ์ปค๋ฎค๋‹ˆํ‹ฐ, ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ, ๋‹ค์–‘ํ•œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์ธก๋ฉด์—์„œ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค

Spring Data JPA

  • SQL Mapper๋Š” ์ž๋ฐ” ์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ SQL์„ xml๋กœ ๋ถ„๋ฆฌํ•ด์ค€๋‹ค. SQL๋ฌธ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” ํŽธ๋ฆฌํ•˜์ง€๋งŒ, RDBMS์— ์ข…์†์ ์ด๋ฉฐ ์ž๋ฐ” ํด๋ž˜์Šค์™€ DB ํ…Œ์ด๋ธ”์ด ๊ฐ•ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์„œ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. ๋Œ€ํ‘œ์ ์ธ SQL Mapper๋กœ MyBatis๊ฐ€ ์žˆ๋‹ค.
  • ORM์€ SQL๋ฌธ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  RDBMS๋ฅผ ์กฐ์ž‘ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ๋ณต์žกํ•œ SQL๋ฌธ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์–ด๋ ค์›€์ด ์žˆ์ง€๋งŒ, ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ํŠน์„ฑ์„ ๋ณด๋‹ค ๋” ์‚ด๋ ค์„œ SQL์— ์˜์กด์ ์ธ ๊ฐœ๋ฐœ์„ ๊ทน๋ณตํ•˜๊ฒŒ ํ•ด์ฃผ๊ณ  RDBMS๋กœ๋ถ€ํ„ฐ ๋…๋ฆฝ์ ์ด๋ฉฐ ์œ ์ง€๋ณด์ˆ˜์‹œ ๋ณด๋‹ค ์šฉ์ดํ•˜๋‹ค.
  • ๊ฐ„๋‹จํ•œ CRUD์—๋Š” SQL Mapper๋ณด๋‹ค ORM์ด ์œ ๋ฆฌํ•˜๋ฉฐ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ฟผ๋ฆฌ๋ฌธ์€ ORM์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋˜๋ฏ€๋กœ ORM์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค.
    • ๋”ฐ๋ผ์„œ ์ž๋ฐ” ์ง„์˜์˜ ORM ๊ธฐ์ˆ  ํ‘œ์ค€์ธ JPA๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฉฐ, ์Šคํ”„๋ง์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“ˆ ์ค‘ ํ•˜๋‚˜์ธ Spring Data JPA๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

AWS (Dev Server)

  • ๋Œ€ํ‘œ์ ์ธ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ์ œ๊ณต์‚ฌ๋กœ AWS, Microsoft Azure, GCP๊ฐ€ ์žˆ๋Š”๋ฐ, ์—…๊ณ„์—์„œ๋Š” AWS๊ฐ€ ๊ฐ€์žฅ ์ ์œ ์œจ์ด ๋†’๋‹ค.
  • AWS๋Š” ์‹ ๊ทœ ๊ณ ๊ฐ์—๊ฒŒ 1๋…„ ๋™์•ˆ ๋ฌด๋ฃŒ๋กœ ํ”„๋ฆฌํ‹ฐ์–ด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ํ˜„์žฌ ์žฌ์ง ์ค‘์ธ ํšŒ์‚ฌ์—์„œ๋„ AWS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์Šค์Šค๋กœ AWS ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์‹ค์Šตํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ์„ ํƒํ–ˆ๋‹ค.

Nginx (Dev Server)

  • ์›น ์„œ๋ฒ„, ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ, ์บ์‹ฑ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋ฐ ๋“ฑ์„ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด
    • ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ : ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๊ณ  ์‹ค์ œ ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋Š” ๋’ท๋‹จ์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋“ค์ด ์ฒ˜๋ฆฌํ•จ
  • ๊ณ ์„ฑ๋Šฅ ์›น์„œ๋ฒ„๋กœ, ์˜ˆ์ „์—๋Š” Apache๊ฐ€ ๋Œ€์„ธ์˜€์œผ๋‚˜ ํ˜„์žฌ๋Š” ๋Œ€๋ถ€๋ถ„ ์„œ๋น„์Šค๋“ค์ด Enginx๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Travis CI (Dev Server)

  • ์˜คํ”ˆ์†Œ์Šค CI/CD ์†”๋ฃจ์…˜์œผ๋กœ Jenkins์™€ Travis CI ์ค‘์—์„œ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ Travis CI๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
    • Jenkins๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ข…๋ฅ˜๊ฐ€ ๋‹ค์–‘ํ•˜๊ณ  ๋ชจ๋“  ๋ถ€๋ถ„์„ ์ง์ ‘ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋ฒ„ ์šด์˜ ๋น„์šฉ์ด ๋”ฐ๋กœ ๋ฐœ์ƒํ•œ๋‹ค.
    • ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” ๊ทœ๋ชจ๊ฐ€ ์ž‘์€ ํ”„๋กœ์ ํŠธ์— ํ•ด๋‹น๋˜๋ฏ€๋กœ Jenkins์— ๋น„ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ ์ข…๋ฅ˜๋Š” ์ ์ง€๋งŒ ์ง์ ‘ ์„œ๋ฒ„๋ฅผ ์šด์˜ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” Travis CI๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

Heroku / Netlify (Prod Server)

  • Heroku
    • AWS ํ”„๋ฆฌํ‹ฐ์–ด๋Š” 1๋…„๊นŒ์ง€๋งŒ ๋ฌด๋ฃŒ์ง€๋งŒ, Heroku๋Š” ํ•œ ๊ณ„์ •๋‹น 5๊ฐœ์˜ ์•ฑ์„ ๋ฌด๋ฃŒ๋กœ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜ธ์ŠคํŒ…์„ ์˜ค๋ž˜ ๋‘๊ณ  ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์„ ๊ฐ์•ˆํ•˜์—ฌ AWS๋Š” ๊ฐœ๋ฐœ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜๊ณ  Heroku๋Š” ์‹ค์ œ ์šด์˜ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
    • AWS EC2๋Š” IaaS์ด์ง€๋งŒ Heroku๋Š” PaaS๋ผ์„œ ๋ฐฐํฌ๊ฐ€ ๋” ๊ฐ„ํŽธํ•˜๋‹ค.
  • Netlify
    • Heroku์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐฐํฌ ์ž๋™ํ™” ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค
    • Heroku๊ฐ€ ์ฃผ๋กœ ์„œ๋ฒ„์ธก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ˜ธ์ŠคํŒ…ํ•œ๋‹ค๋ฉด, Netlify๋Š” ํ”„๋ก ํŠธ์—”๋“œ ์ชฝ ์ •์  ์›น์‚ฌ์ดํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•œ๋‹ค.
    • ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ ์š”์ฒญ์ด ์—†์œผ๋ฉด ์ˆ˜๋ฉด ์ƒํƒœ๋กœ ์ „ํ™˜๋˜์–ด ์ดˆ๊ธฐ ์ ‘์†์ด ๋А๋ ค์ง€๋Š” Heroku์™€ ๋‹ฌ๋ฆฌ ๋ฐ”๋กœ ์ ‘์†์ด ์ž˜ ๋œ๋‹ค.

โœจ Frontend Tech Stack

React.js 17.0.2

Node.js 14.17.1

  • Node.js๋Š” ํ™•์žฅ์„ฑ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ์œผ๋กœ, ์ž‘์„ฑ ์–ธ์–ด๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ฉฐ ๋…ผ๋ธ”๋กœํ‚น(Non-blocking) I/O์™€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ํ†ตํ•œ ๋†’์€ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ๋‚ด์žฅ HTTP ์„œ๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ์›น ์„œ๋ฒ„์—์„œ ์•„ํŒŒ์น˜ ๋“ฑ์˜ ๋ณ„๋„์˜ ์†Œํ”„ํŠธ์›จ์–ด ์—†์ด ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์›น ์„œ๋ฒ„์˜ ๋™์ž‘์— ์žˆ์–ด ๋” ๋งŽ์€ ํ†ต์ œ๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•œ๋‹ค. ํŒŒ์ด์ฌ์œผ๋กœ ๋งŒ๋“  ํŠธ์œ„์Šคํ‹ฐ๋“œ, ํŽ„๋กœ ๋งŒ๋“  ํŽ„ ๊ฐ์ฒด ํ™˜๊ฒฝ, ๋ฃจ๋น„๋กœ ๋งŒ๋“  ์ด๋ฒคํŠธ ๋จธ์‹ ๊ณผ ๊ทธ ์šฉ๋„๊ฐ€ ๋น„์Šทํ•˜๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ์„œ๋ฒ„ ์ธก์—์„œ ์‹คํ–‰๋œ๋‹ค.

npm 6.14.13

  • npm (๋…ธ๋“œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €/Node Package Manager)์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์œ„ํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ด๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ Node.js์˜ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ด๋‹ค.
  • ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ๋˜๋ฉฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€๋“ค์€ npm ์›น์‚ฌ์ดํŠธ๋ฅผ ํ†ตํ•ด ์ฐพ์•„๋ณด๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฐธ๊ณ : npm ์›น์‚ฌ์ดํŠธ
    • ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์™€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” npm์‚ฌ์— ์˜ํ•ด ๊ด€๋ฆฌ๋œ๋‹ค.

yarn

  • ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์ง€๋งŒ npm๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ด๋‹ค. yarn์€ npm์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋กœ npm๋ณด๋‹ค ๋” ๋น ๋ฅด๋ฉฐ ํšจ์œจ์ ์ธ ์บ์‹œ ์‹œ์Šคํ…œ๊ณผ ๊ธฐํƒ€ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

create-react-app 4.0.3

  • ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•„์š”ํ•œ Webpack, Babel ์„ค์น˜ ๋ฐ ์„ค์ • ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ  ๋ฐ”๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ ์ž‘์—… ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ด ์ฃผ๋Š” ๋„๊ตฌ๋กœ, ์ถ”ํ›„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์œผ๋กœ ์„ค์ •์„ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

Next.js

  • Next.js ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ  ๋ฐฑ์—”๋“œ API์™€ ๋…๋ฆฝ์ ์ธ ํšจ์œจ์ ์ธ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ—ˆ์šฉํ•˜๋Š” JAMstack์•„ํ‚คํ…์ฒ˜๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
    • JAMstack : ํด๋ผ์ด์–ธํŠธ ์ธก JavaScript ์ฝ”๋“œ, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ API ๋ฐ ๋งˆํฌ์—… ์ฝ˜ํ…์ธ ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์›น๊ฐœ๋ฐœ ์•„ํ‚คํ…์ฒ˜
  • ๊ณตํ†ต CSS์™€ ์‚ฌ์ „ ์ปดํŒŒ์ผ๋œ Scss ๋ฐ Sass, CSS-in-JS ๋ฐ ์Šคํƒ€์ผ์ด ์ง€์ •๋œ JSX๋ฅผ ์ง€์›ํ•˜๋ฉฐ, TypeScript ์ง€์› ๋ฐ ์Šค๋งˆํŠธ ๋ฒˆ๋“ค๋ง์œผ๋กœ ๋นŒ๋“œ๋œ๋‹ค.
    • ์Šค๋งˆํŠธ ๋ฒˆ๋“ค๋ง : ๋ ˆ๊ฑฐ์‹œ ๋ธŒ๋ผ์šฐ์ €์—๋งŒ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•
  • Next.js์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๋ถ€๋‹ด์„ ์ค„์ด๊ณ  ํ–ฅ์ƒ๋œ ๋ณด์•ˆ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์ด๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  ๋ถ€๋ถ„ ๋˜๋Š” ์ „์ฒด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฝ˜ํ…์ธ ๊ฐ€ ํ’๋ถ€ํ•œ ํŽ˜์ด์ง€๋ฅผ ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์„ ์œ„ํ•ด ์„ ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐœ๋ฐœ์ž ํŽธ์˜๋ฅผ ์œ„ํ•ด ํŽ˜์ด์ง€ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๋™์  ๋ผ์šฐํŒ… ์ง€์›์„ ํฌํ•จํ•œ๋‹ค.

Webpack

  • ์˜์กด ๊ด€๊ณ„์— ์žˆ๋Š” ๋ชจ๋“ˆ๋“ค์„ ํ•˜๋‚˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋งํ•˜๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์ด๋‹ค. Webpack์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜์กด ๋ชจ๋“ˆ์ด ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋ง๋˜๋ฏ€๋กœ ๋ณ„๋„์˜ ๋ชจ๋“ˆ ๋กœ๋”๊ฐ€ ํ•„์š”์—†๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์ˆ˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋งํ•˜๋ฏ€๋กœ html ํŒŒ์ผ์—์„œ script ํƒœ๊ทธ๋กœ ๋‹ค์ˆ˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€๋„ ์‚ฌ๋ผ์ง„๋‹ค.

Babel

  • ์ตœ์‹  ์‚ฌ์–‘์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ IE๋‚˜ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๋™์ž‘ํ•˜๋Š” ES5 ์ดํ•˜์˜ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜(ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง)ํ•  ์ˆ˜ ์žˆ๋‹ค.

ESLint

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ• ๋ฐ ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ๊ฒ€์‚ฌํ•ด ์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค.
  • ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์‹ค์ˆ˜๋ฅผ ํ•˜๋ฉด ์—๋Ÿฌ ํ˜น์€ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ VS Code ์—๋””ํ„ฐ์—์„œ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

Reactjs Code Snippets

  • ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๋ฐ ๋ผ์ดํ”„์‚ฌ์ดํด ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋‹จ์ถ• ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ์Šค๋‹ˆํŽซ ๋ชจ์Œ์ด๋‹ค.

Prettier-Code formatter

  • ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•ด ์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค.
  • ์ฝ”๋”ฉ ๊ด€์Šต์˜ ์ฐจ์ด๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ์ž์˜ ๋‹ค์–‘ํ•œ ์Šคํƒ€์ผ์„ ์‰ฝ๊ฒŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

Redux

  • ์ถ”ํ›„^^

TypeScript

  • ์ •์  ํƒ€์ž… ์–ธ์–ด(์ž๋ฐ”, C, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ) vs ๋™์  ํƒ€์ž… ์–ธ์–ด(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ํŒŒ์ด์ฌ)

Clone this wiki locally