Skip to content

KUALSNS/BE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5103e43 ยท Jan 5, 2024
Sep 15, 2023
Jan 5, 2024
Sep 18, 2023
Sep 26, 2023
Apr 14, 2023
May 8, 2023
Apr 14, 2023
May 25, 2023
Jul 6, 2023
Jul 6, 2023
Jul 31, 2023
Sep 24, 2023
Sep 24, 2023
Aug 1, 2023

Repository files navigation

๐Ÿ’ป ๊ธฐ์ˆ  ์Šคํƒ


๐Ÿ”‘Front-End๐Ÿ”‘ :
Lanuage && Framework
 
Communication Method
 
State Management
 
Build Tool
 

๐Ÿ”“Back-End๐Ÿ”“ :
Lanuage && Framework
 
Infra
 
Monitoring
 
DB
 
API Documentation
 

๐Ÿง‘โ€ ํŒ€์›

ํ—ˆ์—ฐ์šฐ ๋ฐฑ์ฃผ์—ฐ ์ด์Šน๋ ฌ ์ตœํ˜ธ์—ฐ
@chrisheo @juurom @BackEndStory @hoyyChoi
ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ…
DB ์„ค๊ณ„
API ๊ตฌํ˜„
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
ํ”„๋ก ํŠธ ํ™”๋ฉด ๊ตฌํ˜„
์„œ๋ฒ„์™€ api ํ†ต์‹  ์—ฐ๊ฒฐ
๋ฐ˜์‘ํ˜• css ์ ์šฉ
AWS ์„ธํŒ…
DB ์„ค๊ณ„
API ๊ตฌํ˜„
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
ํ”„๋ก ํŠธ ํ™”๋ฉด ๊ตฌํ˜„
์„œ๋ฒ„์™€ api ํ†ต์‹  ์—ฐ๊ฒฐ
๋ฐ˜์‘ํ˜• css ์ ์šฉ

๐Ÿ‘€ ๊ธฐ์ˆ  ์Šคํƒ ์„ ์ • ์ด์œ 


React

  1. ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜
  • ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๊ณ  ์œ ์ง€๋ณด์ˆ˜์— ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.
  1. Virtual DOM
  • Virtual DOM์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ์ค„๊ณ  ์ˆ˜์ • ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์ง€์‹๊ณต์œ 
  • ๊ฐœ๋ฐœ ์ƒํƒœ๊ณ„์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด ๋ฌธ์ œ์ƒํ™ฉ์— ๋Œ€์‘ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

Vite

  1. ์„œ๋ฒ„ ์‹œ์ž‘ ์†๋„
  • ๊ฐœ๋ฐœํ•  ๋•Œ ๋ฒˆ๋“ค๋ง์„ ํ•˜์ง€ ์•Š๊ณ  ESM ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋กœ์ปฌ ์„œ๋ฒ„ ๊ตฌ๋™ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  1. ์—…๋ฐ์ดํŠธ ์†๋„
  • HMR์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ณ€๊ฒฝ๋œ ์ปจํ…์ธ ๋งŒ์„ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Axios

  1. Promise๊ธฐ๋ฐ˜
  • return์„ promise ๊ฐ์ฒด๋กœ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— response ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
  1. ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ
  • ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ตœ์ ํ™”๋กœ ๋ธŒ๋ผ์šฐ์ €(ํŠนํžˆ, ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €)ํ˜ธํ™˜์„ฑ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Recoil

  1. ๋‹จ์ˆœํ•จ
  • ๋‹ค๋ฅธ ์ „์—ญ์ƒํƒœ๊ด€๋ฆฌ(ex. Redux)์— ๋น„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ๊ฐ„ํŽธํ•˜๊ณ , ์ด๋ฅผ ํ™œ์šฉํ•ด ์ฝ”๋“œ์˜ ๋ณต์žก๋„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
  • ์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด Recoil ์ž์ฒด๋งŒ์œผ๋กœ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Node.js

  1. Single-Thread์˜ non-blocking I/O ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜
  • Node.js๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ(Single-Thread)์˜ ๋…ผ ๋ธ”๋กœํ‚น(Non-blocking I/O) ์ด๋ฒคํŠธ ๊ธฐ ๋ฐ˜ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ๋†’์€ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  1. npm(node package manager)์„ ํ†ตํ•œ ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ(ํŒจํ‚ค์ง€) ์ œ๊ณต
  • ๋‚ด์žฅ HTTP ์„œ๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ์›น ์„œ๋ฒ„์—์„œ ์•„ํŒŒ์น˜ ๋“ฑ์˜ ๋ณ„๋„์˜ ์†Œํ”„ ํŠธ์›จ์–ด ์—†์ด ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์›น ์„œ๋ฒ„์˜ ๋™์ž‘์— ์žˆ์–ด ๋” ๋งŽ์€ ํ†ต์ œ ๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•ฉ๋‹ˆ๋‹ค.
  1. ์›น ๊ฐœ๋ฐœ ํ˜ธํ™˜์„ฑ
  • Javascript ์–ธ์–ด๋กœ Front-end ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Back-end ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์ƒ์‚ฐ์„ฑ์ด ๋†’๊ณ  ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.
  1. ๊ฒฝ๋Ÿ‰ ๋ฐ ํšจ์œจ์„ฑ
  • Node.js๋Š” ๋‹ค๋ฅธ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์— ๋น„ํ•ด ์ ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฐ€๋ณ๊ณ  ํšจ์œจ์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋ฏ€๋กœ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

TypeScript

  1. ์œ ํ˜• ์•ˆ์ „์„ฑ
  • TypeScript๋Š” JavaScript์— ์œ ํ˜• ์•ˆ์ „์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋Ÿฐํƒ€์ž„์ด ์•„๋‹Œ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์˜ค๋ฅ˜๋ฅผ ์žก๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ํ–ฅ์ƒ๋œ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ
  • TypeScript์˜ ๊ฐ•๋ ฅํ•œ ์œ ํ˜• ์ง€์ • ๋ฐ ๋ช…์‹œ์  ์œ ํ˜• ์„ ์–ธ์€ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๊ฐœ์„ ํ•˜๊ณ  ์ดํ•ด ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker

  1. ์ผ๊ด€์„ฑ
  • Docker๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ™˜๊ฒฝ์ด ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„์— ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋„๋ก ํ•˜์—ฌ ์ข…์†์„ฑ ๋˜๋Š” ๊ตฌ์„ฑ์˜ ์ฐจ์ด๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  1. ํšจ์œจ์„ฑ
  • Docker๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ณ„๋„์˜ ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ฒฉ๋ฆฌํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ  ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ Code Convention


๋ณ€์ˆ˜๋ช…
  1. Camel Case ์‚ฌ์šฉ
  • lower Camel Case
  1. ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ๋™์‚ฌ+๋ช…์‚ฌ ์‚ฌ์šฉ
  • ex) getInformation()
  1. flag๋กœ ์‚ฌ์šฉ ๋˜๋Š” ๋ณ€์ˆ˜๋Š” ์กฐ๋™์‚ฌ + flag ์ข…๋ฅ˜๋กœ ๊ตฌ์„ฑ
  • ex) isNum
  1. ์•ฝ์–ด๋Š” ๋˜๋„๋ก ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ถ€๋“์ดํ•˜๊ฒŒ ์•ฝ์–ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ๊ฒฝ์šฐ ํŒ€์›๊ณผ ์ƒ์˜๋ฅผ ๊ฑฐ์นœ๋‹ค.
์ฃผ์„
  1. ํ•œ์ค„ ์ฃผ์„์€ // ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
// ํ•œ์ค„ ์ฃผ์„์ผ ๋•Œ
/**
 * ์—ฌ๋Ÿฌ์ค„
 * ์ฃผ์„์ผ ๋•Œ
 */
  1. ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ฃผ์„
/**
 * @route Method /Route
 * @desc Function Description
 * @access Public
 */
  1. Bracket ์‚ฌ์šฉ ์‹œ ๋‚ด๋ถ€์— ์ฃผ์„์„ ์ž‘์„ฑํ•œ๋‹ค.
if (a == 5) {
  // ์ฃผ์„
}
Bracket
  1. ํ•œ์ค„ if ๋ฌธ์€ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ž‘์„ฑํ•œ๋‹ค.
// ํ•œ์ค„ if ๋ฌธ - ์—ฌ๋Ÿฌ ์ค„๋กœ ์ž‘์„ฑ
if (trigger) {
  return;
}
  1. ๊ด„ํ˜ธ๋Š” ํ•œ์นธ ๋„์šฐ๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.
// ๊ด„ํ˜ธ ์‚ฌ์šฉ ํ•œ์นธ ๋„์šฐ๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.
if (left == true) {
  return;
}
  1. Bracket ์–‘์ชฝ ์‚ฌ์ด๋ฅผ ๋„์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
const { userId } = request.user;
๋น„๋™๊ธฐ ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ
  1. async, await ํ•จ์ˆ˜ ์‚ฌ์šฉ์„ ์ง€ํ–ฅํ•œ๋‹ค.
  2. Promise ์‚ฌ์šฉ์€ ์ง€์–‘ํ•œ๋‹ค.
  3. ๋‹ค๋งŒ ๋กœ์ง์„ ์งœ๋Š” ๋ฐ ์žˆ์–ด promise๋ฅผ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ฃผ์„์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  commit์— ๊ทธ ์ด์œ ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

๐Ÿ“Œ Commit Convention


[TAG] ๋ฉ”์‹œ์ง€

ํƒœ๊ทธ ์ด๋ฆ„ ์„ค๋ช…
chore ์ฝ”๋“œ ์ˆ˜์ •, ๋‚ด๋ถ€ ํŒŒ์ผ ์ˆ˜์ •
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ตฌํ˜„
add FEAT ์ด์™ธ์˜ ๋ถ€์ˆ˜์ ์ธ ์ฝ”๋“œ ์ถ”๊ฐ€, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€, ์ƒˆ๋กœ์šด ํŒŒ์ผ ์ƒ์„ฑ
fix ๋ฒ„๊ทธ, ์˜ค๋ฅ˜ ํ•ด๊ฒฐ
style ์ฝ”๋“œ์— ๊ด€๋ จ ์—†๋Š” ์ฃผ์„ ๋‹ฌ๊ธฐ, ์ค„๋ฐ”๊ฟˆ
docs README๋‚˜ WIKI ๋“ฑ์˜ ๋ฌธ์„œ ๊ฐœ์ •

๐Ÿ’ป Branch Strategy


Git Workflow
main โ†’ develop โ†’ feature_# / fix_#
feature, fix ์ดํ•˜ ๋ฒˆํ˜ธ๋Š” issue ๋ฒˆํ˜ธ์— ๋งž๊ฒŒ ์ƒ์„ฑ

Issue ์˜ˆ์‹œ
/-------------------------
Feature/Fix Request
๊ธฐ๋Šฅ ์„ค๋ช… : ์ดˆ๋Œ€์žฅ์„ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.
To-Do List
* ๋‚œ์ˆ˜ ์ƒ์„ฑํ•ด์„œ ์ดˆ๋Œ€์ฝ”๋“œ ๋ณด๋‚ด์ฃผ๊ธฐ
-------------------------/

PR ์˜ˆ์‹œ
/-------------------------
Solved Issue
close/ํ•ด๊ฒฐํ•œ ์ด์Šˆ์˜ ๋งํฌ

Motivation
* ์ดˆ๋Œ€์žฅ ์ƒ์„ฑ api ๊ตฌํ˜„

Key Changes
* ๋‚œ์ˆ˜ ์ƒ์„ฑํ•ด์„œ ์ดˆ๋Œ€์ฝ”๋“œ ์ƒ์„ฑ

To Reviewers
* ๋จธ์ง€ํ•ด์ฃผ์„ธ์š”~~
-------------------------/

1. issue ์ƒ์„ฑ
2. local - feature_# / fix_# ์—์„œ ๊ฐ์ž ๊ธฐ๋Šฅ ์ž‘์—…
3. remote - feature_# / fix_# ์— Push
4. remote - develop ์œผ๋กœ PR
5. ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ›„ Confirm ๋ฐ›๊ณ  remote - develop Merge
6. remote - develop ์— Merge ๋  ๋•Œ ๋งˆ๋‹ค ๋ชจ๋“  ํŒ€์› local - develop pull ๋ฐ›์•„ ์ตœ์‹  ์ƒํƒœ ์œ ์ง€
Branch Name ์„ค๋ช…
main ๋ฐฐํฌ์šฉ ๋ธŒ๋žœ์น˜
develop ๊ตฌํ˜„ ์™„๋ฃŒ ๋ธŒ๋žœ์น˜
feature_/# ์ด์Šˆ ๋ณ„ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ธŒ๋žœ์น˜
fix_/# ์ด์Šˆ ๋ณ„ ํ”ฝ์Šค ๋ธŒ๋žœ์น˜

๐Ÿ“ƒ API Documentation

API๋ช…์„ธ์„œ

โš™๏ธ Software Architecture


Architecture