Skip to content

๐Ÿ”จ Skill Spec

Jongeun Kim edited this page Mar 15, 2021 · 4 revisions

Skill Spec

back-end

  • NodeJS Web Framework: express
    • ์„ ์ • ์ด์œ : ํ•™์Šต ๊ธฐ๊ฐ„ ์ค‘์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•ด๋ณธ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ์ƒˆ๋กญ๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ธฐ์ˆ ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ชจ๋‘๊ฐ€ ์ต์ˆ™ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ง„ํ–‰ํ•˜๋Š”๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ํŒ๋‹จํ•จ
  • Graphql Server: Apollo Server
  • Database: MongoDB (ODM: mongoose)
    • ์„ ์ • ์ด์œ : ํ”„๋กœ์ ํŠธ ํŠน์„ฑ์ƒ ์ง€๋„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•œ ์‹ค์‹œ๊ฐ„ ์œ„์น˜๊ณต์œ ๊ฐ€ ํ™œ๋ฐœํžˆ ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋Š๋ฆฐ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ณด๋‹ค๋Š” NOSQL์ธ ๋ชฝ๊ณ ๋””๋น„๊ฐ€ ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•จ(?)
  • Auth: passport
  • Node Process Manager: PM2
  • Language: TypeScript
  • Testing: Postman

front-end

  • React Framework : CRA(Create React App)
    • ์„ ์ • ์ด์œ : ์ดˆ๊ธฐ์— ์›นํŒฉ์„ ์ง์ ‘ ์„ค์ •ํ•ด ํ•˜๋‚˜ํ•˜๋‚˜ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ nestjs, cra ์…‹ ์ค‘์— ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ ๋ฐ๋“œ๋ผ์ธ์ด ์žˆ๋Š” ๊ณผ์ œ์ด๋‹ˆ ๋งŒํผ ๋น ๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” cra, nest ์ค‘์— ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ ์ค‘ ssr์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์ธ ์„ค์ •(css-in-js, apollo ๋“ฑ)์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— cra๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋‚˜์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ํŒ๋‹จํ•จ
  • State Management Library: Redux
    • ์„ ์ • ์ด์œ : redux์™€ recoil์ค‘ ๊ณ ๋ฏผํ–ˆ๋Š”๋ฐ fluxํŒจํ„ด์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ถ€ํ„ฐ ์‚ฌ์šฉํ•ด๋ณด๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ํŒ๋‹จํ•จ
  • Map : Google Map
  • UI Component Library: Ant Design Mobile
    • ์„ ์ • ์ด์œ : css๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•ด ๋ชจ๋“  UI๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ๋“ค์„ ์™„์„ฑํ•˜๋Š” ๊ฒƒ์ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค๊ณ  ํŒ๋‹จํ•ด UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ž๊ณ  ๊ฒฐ์ • ํ–ˆ๋Š”๋ฐ ๊ทธ ๊ณผ์ •์—์„œ ๋„ค์ด๋ฒ„ ๋น„์ฆˆ๋‹ˆ์Šค ํŒ€์—์„œ ์‹ค์ œ ์‚ฌ์šฉ์ค‘์ธ Ant Design Mobile์„ ๊ฒฝํ—˜ํ•ด ๋ณด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํŒ๋‹จํ•จ
  • Graphql Client : Apollo Client
  • Language: TypeScript
  • Testing Tool: jest, msw, cypress(option)
    • ์„ ์ • ์ด์œ :

detail

๊ณตํ†ต

  • Testing tool

    • jest
    • cypress
  • eslint, prettier

    • eslint
      • code ์ปจ๋ฒค์…˜ ๋ฐ ๊ทœ์น™ ์„ค์ •
    • prettier
      • code ์ปจ๋ฒค์…˜ ๋ฐ ์Šคํƒ€์ผ ์„ค์ •

ํ”„๋ก ํŠธ์—”๋“œ

  • react (CRA-typescript)

    • react-route-dom
  • styled-components

    • javascript ํŒŒ์ผ ๋‚ด์—์„œ ์Šคํƒ€์ผ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (CSS-in-JS)
    • CSS์— props๋ฅผ ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ 
    • CSS๋ฅผ ์ปดํฌ๋„ŒํŠธํ™” ํ•  ์ˆ˜ ์žˆ์–ด ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ CSS๊ฐ€ ๋ณต์žกํ•ด์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐ
  • apollo-client

    • apollo-server์™€ query, mutation, subscription์„ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Redux

    • ๋ฆฌ์—‘ํŠธ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ƒํƒœ๋ฅผ ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Google Map

    • google maps places api (Place Search)
      • ์žฅ์†Œ ๊ฒ€์ƒ‰ (์œ„๋„๊ฒฝ๋„๋กœ ๋ณ€ํ™˜)
    • google maps places api (Place Autocomplete)
      • ๊ฒ€์ƒ‰ ์ž๋™ ์™„์„ฑ
    • google-maps-react
      • ๋ฆฌ์•กํŠธ์—์„œ ๊ตฌ๊ธ€ ์ง€๋„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ชจ๋“ˆ
      • ์ง€๋„ ํ‘œ์‹œ, ๋งˆ์ปค
    • naver-direction-api 5
      • ๊ฒฝ๋กœ ๊ณ„์‚ฐ, ๊ฒฝ์œ ์ง€, ํƒ์‹œ์š”๊ธˆ
  • Antd Mobile

    • UI Components ๊ฐœ๋ฐœ์„ ๋น ๋ฅด๊ฒŒ ๋„์™€์ค„ ์ˆ˜ ์žˆ๋Š” UI ํ”„๋ ˆ์ž„์›Œํฌ
  • testing tool

    • msw
      • ์‚ฌ์šฉํ•  ์„œ๋ฒ„๋ฅผ mockingํ•ด์„œ ๊ฐ€์ƒ์˜ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ดํ•ด์„œ ๊ฐ€์ƒ์˜ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ฐฑ์—”๋“œ

  • express & middlewares

    • express
      • nodejs web framework
      • NodeJS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ํด๋ž˜์Šค์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ง‘ํ•ฉ์ฒด
    • compression
      • express ์••์ถ• ๋ฏธ๋“ค์›จ์–ด
      • ๋ฏธ๋“ค์›จ์–ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด gzip์••์ถ•์„ ์‚ฌ์šฉํ•ด ์‘๋‹ต์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ
    • hpp
      • express ๋ณด์•ˆ ๋ชจ๋“ˆ
    • morgan
      • ๋กœ๊ทธ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฏธ๋“ค์›จ์–ด
      • ํ™˜๊ฒฝ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ์„ค์ •์œผ๋กœ ๋กœ๊ทธ ๊ด€๋ฆฌ๋ฅผ ์ปค์Šคํ…€ ํ•  ์ˆ˜ ์žˆ์Œ
    • helmet
      • express ๋ณด์•ˆ ๋ชจ๋“ˆ
      • HTTP ํ—ค๋”๋ฅผ ์„ค์ •ํ•˜์—ฌ Express ์•ฑ์„ ๋ณดํ˜ธํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค€๋‹ค
      • ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„์˜ ์ค‘์š”ํ•œ ์ •๋ณด๊ฐ€ ์‹ค์ˆ˜๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š๋„๋ก HTTP header๋ฅผ ์ž๋™์œผ๋กœ ์„ค์ •ํ•ด์ค€๋‹ค (์ฝ˜ํ…์ธ  ๋ณด์•ˆ ์ •์ฑ…, XSS ํ•„ํ„ฐ๋ง, HTTP ์—„๊ฒฉํ•œ ์ „์†ก ๋ณด์•ˆ ๋“ฑ)
    • dotenv
      • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
      • ์ „์—ญ์œผ๋กœ ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋“ค, ์™ธ๋ถ€์— ๊ณต๊ฐœํ•˜์ง€ ๋ง์•„์•ผํ•  ๋ฏผ๊ฐํ•œ ์ •๋ณด๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ
    • cors
      • cors ์„ค์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
      • ํ˜„์žฌ ๋„๋ฉ”์ธ๊ณผ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์— ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ
  • apollo-server

    • apollo-server-express
      • apollo-server์™€ express๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ๋ชจ๋“ˆ
    • graphql-subscriptions
      • graphql์˜ subscription์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“ˆ
    • graphql
      • graphql ๋ชจ๋“ˆ
    • graphql-tools
      • graphql ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ • ํˆด ๋ชจ๋“ˆ
      • graphql type, resolvers ๋“ฑ์˜ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ
  • auth

    • jwt
      • ์ธ์ฆ์— ์‚ฌ์šฉํ•˜๋Š” ํ† ํฐ
      • refresh token, access token์œผ๋กœ ๋‚˜๋ˆ ์„œ ๊ด€๋ฆฌ
    • passport
      • Node.js์—์„œ ๋‹ค์–‘ํ•œ ์ „๋žต์„ ํ†ตํ•ด Authentication์„ ์ ์šฉ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
      • ๋‹ค์–‘ํ•œ ์ „๋žต์„ ํ†ตํ•ด ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
  • mongoose

    • MongoDB ODM
  • typescript

    • ts-node
      • typescript๋ฅผ node์—์„œ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๋ชจ๋“ˆ
    • tsconfig-paths
      • typescript ์ ˆ๋Œ€๊ฒฝ๋กœ ์ถ”๊ฐ€ ๋ชจ๋“ˆ
  • @graphql-codegen

    • graphql์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์Šคํ‚ค๋งˆ์™€ ๋ฆฌ์กธ๋ฒ„์— ๋Œ€ํ•œ ํƒ€์ž…์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํˆด
  • nodemon

    • ํ”„๋กœ์ ํŠธ ํด๋”์˜ ํŒŒ์ผ๋“ค์„ ๋ชจ๋‹ˆํ„ฐ๋ง, ํŒŒ์ผ์ด ์ˆ˜์ •๋ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ฐฐํฌ

  • NCP
    • Boostcamp ํ›„์›์‚ฌ๋กœ NCP์—์„œ ์ œ๊ณตํ•œ ํฌ๋ ˆ๋”ง์„ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„ ๊ตฌ์ถ•

๐Ÿ“† Planning

๐Ÿ‘จโ€๐Ÿ’ป Agile Process

Daily Scrum
์ฃผ์ฐจ๋ณ„ ํšŒ๊ณ 
์ฃผ์ฐจ๋ณ„ ํ”ผ์–ด์„ธ์…˜
๊ธฐ์ˆ ๊ด€๋ จ ๋‚ด์šฉ ๋…ผ์˜
๋ฉ˜ํ† ๋‹˜๊ณผ์˜ ๋‘๊ทผ๋‘๊ทผ ๋ฏธํŒ…

๐Ÿ“š Ground Rule

Clone this wiki locally