Skip to content

Commit

Permalink
Create README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
totobon6125 authored Nov 13, 2023
1 parent 3c8341d commit c9da001
Showing 1 changed file with 162 additions and 0 deletions.
162 changes: 162 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
# Local Mingle
๋กœ์ปฌ๋ฐ๊ธ€์€ ์‚ฌ์šฉ์ž์˜ ์ ‘์† ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ผ์ƒ์˜ ์†Œ๋ชจ์ž„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” SNS ํ˜•์‹์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค.<br>์ด ํ”„๋กœ์ ํŠธ์˜ ์‹œ์ž‘์€ ์‚ฌํšŒ๊ฐ€ ๋ฐ”๋น ์ง์— ๋”ฐ๋ผ ์ด์›ƒ์— ๋ˆ„๊ฐ€ ์‚ฌ๋Š”์ง€ ๋ชจ๋ฅด๋Š” ์ง€๊ธˆ์˜ ์‚ฌํšŒ์—์„œ ์ทจ๋ฏธ๋‚˜ ์ผ์ƒ์˜ ๊ณต์œ  ๋“ฑ ์†Œ๋ชจ์ž„์„ ํ†ตํ•ด ์žŠ์ณ์ ธ ๊ฐ€๋Š” ์ •์„ ํšŒ๋ณตํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ฐ”๋žŒ์œผ๋กœ ์‹œ์ž‘๋œ ํ”„๋กœ์ ํŠธ ์ž…๋‹ˆ๋‹ค.
<br>
<br>
## ๐Ÿ‘ฅ ์ฐธ๊ฐ€ํ•œ ์‚ฌ๋žŒ๋“ค
<table>
<tr>
<th style="width: 300px;">์ด๋ฆ„</th>
<th style="width: 300px;">ํฌ์ง€์…˜</th>
<th style="width: 5px;">์—ญํ• </th>
<th style="width: 200px;">๊นƒํ—ˆ๋ธŒ</th>
<th style="width: 200px;">๋ธ”๋กœ๊ทธ</th>
</tr>
<tr>
<td>์žฅ์†Œ์˜</td>
<td>FE</td>
<td>ํŒ€ ๋ถ€๋ฆฌ๋”<br>๋ฉ”์ธํŽ˜์ด์ง€(์นด๋“œ๋ทฐ, ๊ฒŒ์‹œ๊ธ€ ๊ฒ€์ƒ‰, ๊ฒŒ์‹œ๊ธ€ ์ƒ๋ž™ํ„ฐ ํ•„ํ„ฐ๋ง, ์ธํ”ผ๋‹ˆํ‹ฐ ์Šคํฌ๋กค),<br>๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ๋ฐ ์ˆ˜์ •, 1์ฐจ ๊ฐœ๋ฐœ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ „์ฒดํ™”๋ฉด ํผ๋ธ”๋ฆฌ์‹ฑ,<br>ํ”„๋ก ํŠธ gitHub ๊ด€๋ฆฌ, Figma ๊ด€๋ฆฌ</td>
<td><a href="https://github.com/ddoddiworld">์žฅ์†Œ์˜์˜<br>GitHub</a></td>
<td><a href="https://velog.io/@ddoddiworld">์žฅ์†Œ์˜์˜<br>๋ธ”๋กœ๊ทธ</a></td>
</tr>
<tr>
<td>๊น€ํƒœํ˜„</td>
<td>FE</td>
<td>๋งˆ์ดํŽ˜์ด์ง€(ํšŒ์›์ •๋ณด ์ˆ˜์ •, ์ž‘์„ฑ ์ด๋ฒคํŠธ, ์ฐธ์—ฌ ์ด๋ฒคํŠธ ๊ด€๋ฆฌ, ํšŒ์›ํƒˆํ‡ด),๋‹ค๊ตญ์–ด๊ธฐ๋Šฅ,<br>์ผ๋ฐ˜ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธํŽ˜์ด์ง€, ์†Œ์…œ ๋กœ๊ทธ์ธ, ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…, ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ธ ํŽ˜์ด์ง€</td>
<td><a href="https://github.com/kimtaehyun">๊น€ํƒœํ˜„์˜<br>GitHub</a></td>
<td><a href="https://velog.io/@taehyun729">๊น€ํƒœํ˜„์˜<br>๋ธ”๋กœ๊ทธ</a></td>
</tr>
<tr>
<td>๊น€๋Œ€์šฑ</td>
<td>BE</td>
<td>ํŒ€ ๋ฆฌ๋”, ์ด๋ฌด<br>FE/BE ์„œ๋ฒ„ ์ธํ”„๋ผ ์กฐ์„ฑ(CloudFront, Route53, ACM, CodeDeploy, Ec2, S3),<br> FE/BE CICD ๊ตฌํ˜„, AWS ์‚ฌ์šฉ๋ฒ• ์ž‘์„ฑ, ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ๋ฌธ์„œ ์ž‘์—… </td>
<td><a href="https://github.com/totobon6125">๊น€๋Œ€์šฑ์˜<br>GitHub</a></td>
<td><a href="https://blog.naver.com/ackrima">๊น€๋Œ€์šฑ์˜<br>๋ธ”๋กœ๊ทธ</a></td>
</tr>
<tr>
<td>๊น€์ข…ํ™”</td>
<td>BE</td>
<td>์ด๋ฒคํŠธ CRUD, ์ฐธ๊ฐ€/ ์ทจ์†Œ API ์ž‘์„ฑ, ํŽ˜์ด์ง€๋„ค์ด์…˜, ์บ์‹ฑ ๊ธฐ๋Šฅ ์ ์šฉ,<br>test์ฝ”๋“œ ์ž‘์„ฑ, ํ–‰์ •๊ตฌ์—ญ ๋ฐ์ดํ„ฐ API ์ž‘์„ฑ, ์ง€์—ญ, ์นดํ…Œ๊ณ ๋ฆฌ, ํ‚ค์›Œ๋“œ๋ณ„ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ</td>
<td><a href="https://github.com/kimjonghwa230412">๊น€์ข…ํ™”์˜<br>GitHub</a></td>
<td><a href="https://velog.io/@ehdxka3">๊น€์ข…ํ™”์˜<br>๋ธ”๋กœ๊ทธ</a></td>
</tr>
<tr>
<td>์—๋ฆญํ‚ด</td>
<td>BE</td>
<td>๋งˆ์ด ํŽ˜์ด์ง€ CRUD, ๋‚ด ํ”„๋กœํ•„ ์กฐํšŒ, ๋‹‰๋„ค์ž„/ํ•œ์ค„ ์ž๊ธฐ์†Œ๊ฐœ/๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ •,<br>๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ ๋ชฉ๋ก ์กฐํšŒ/์ˆ˜์ •/์‚ญ์ œ, ๋‚ด๊ฐ€ ์ฐธ๊ฐ€ํ•œ ๋ชฉ๋ก ์กฐํšŒ/์ทจ์†Œ,<br>ํšŒ์›ํƒˆํ‡ด(soft delete), ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ</td>
<td><a href="https://github.com/erickimme/">์—๋ฆญํ‚ด์˜<br>GitHub</a></td>
<td><a href="https://everyonehasadream.tistory.com/">์—๋ฆญํ‚ด์˜<br>๋ธ”๋กœ๊ทธ</a></td>
</tr>
<tr>
<td>์–‘ํฌ์šฉ</td>
<td>BE</td>
<td>์†Œ์…œ๋กœ๊ทธ์ธ ๊ตฌํ˜„(์นด์นด์˜ค,๋„ค์ด๋ฒ„,๊ตฌ๊ธ€), ์ผ๋ฐ˜ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„(์ด๋ฉ”์ผ ์ธ์ฆ, ๋‹‰๋„ค์ž„ ์ค‘๋ณต๊ฒ€์‚ฌ),<br>์‹ค์‹œ๊ฐ„์ฑ„ํŒ…(์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ, ์œ ์ €๋ฆฌ์ŠคํŠธ, ์ž…์žฅ, ํ‡ด์žฅ), ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์ฑ„ํŒ… ์ด๋ ฅ ์ •๋ฆฌ</td>
<td><a href="https://github.com/HeeDragoN1123">์–‘ํฌ์šฉ์˜<br>GitHub</a></td>
<td><a href="https://yhy7952.tistory.com/">์–‘ํฌ์šฉ์˜<br>๋ธ”๋กœ๊ทธ</a></td>
</tr>
<tr>
<td>๋ฐ•์ƒํ˜„</td>
<td>Design</td>
<td>ํŽ˜์ด์ง€ ์ „์ฒด ๋””์ž์ธ</td>
<td>์—†์Œ</td>
<td><a href="https://www.behance.net/289871a1">๋ฐ•์ƒํ˜„์˜<br>๋ธ”๋กœ๊ทธ</a></td>
</tr>
</table>
<br><br>

## ๐Ÿ”Ž ์ฃผ์š” ๊ธฐ๋Šฅ

- ๋ฉ”์ธ (์ด๋ฒคํŠธ ๋ฆฌ์ŠคํŠธ) ํŽ˜์ด์ง€
- ์ „์ฒด ์ด๋ฒคํŠธ ์กฐํšŒ
- ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์ด๋ฒคํŠธ ๊ฒ€์ƒ‰
- ํ•„ํ„ฐ (์ด๋ฒคํŠธ ํƒ€์ž…, ์œ„์น˜, ์นดํ…Œ๊ณ ๋ฆฌ) ๊ธฐ๋ฐ˜ ์ด๋ฒคํŠธ ํ•„ํ„ฐ
- ๋‹ค๊ตญ์–ด (ํ•œ๊ตญ์–ด, ์˜์–ด, ์ผ๋ณธ์–ด) ์ง€์›
- ๋ฉ”์ธ ํŽ˜์ด์ง€์— ๋ฌดํ•œ ์Šคํฌ๋กค ๊ธฐ๋Šฅ (Infinite Scroll)
- ์ด๋ฒคํŠธ ์ƒ์„ธ ์กฐํšŒ
- ๋ชจ์ž„์ผ, ์ฐธ๊ฐ€ ์‹ ์ฒญ ๊ธฐ๊ฐ„, ๋ชจ์ž„ ์žฅ์†Œ, ๋ชจ์ง‘์ธ์›, ์ฐธ๊ฐ€์ž ํ”„๋กœํ•„์„ ํ™•์ธ ๊ฐ€๋Šฅ
- ์ฐธ๊ฐ€์ž์˜ ๊ฒฝ์šฐ ์ฐธ๊ฐ€์‹ ์ฒญ์„ ํ•˜๋ฉด `์ฐธ๊ฐ€์™„๋ฃŒ` ํƒœ๊ทธ๊ฐ€ ์ œ๋ชฉ ์˜†์— ์ƒ๊ฒจ ์ฐธ๊ฐ€์—ฌ๋ถ€๋ฅผ ํ™•์ธ ๊ฐ€๋Šฅ
- ์ด๋ฒคํŠธ ์ฐธ๊ฐ€์ž ๊ฐ„ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…๊ธฐ๋Šฅ + ์ฑ„ํŒ… ์ฐธ๊ฐ€์ž ์กฐํšŒ
- ๋งˆ์ดํŽ˜์ด์ง€
- ๋‚ด ํ”„๋กœํ•„ ์กฐํšŒ, ๋‹‰๋„ค์ž„/ํ•œ์ค„ ์ž๊ธฐ์†Œ๊ฐœ/๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ •
- ๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ ๋ชฉ๋ก ์กฐํšŒ, ์ˆ˜์ • / ์‚ญ์ œ
- ๋‚ด๊ฐ€ ์ฐธ๊ฐ€ํ•œ ๋ชฉ๋ก ์กฐํšŒ, ์ฐธ๊ฐ€ ์ทจ์†Œ
- ํšŒ์›ํƒˆํ‡ด
- ํšŒ์› ๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ / ์†Œ์…œ ๋กœ๊ทธ์ธ
- ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์™€ ์œ ์ € ์„œ๋ฒ„์˜ ์ด์›ํ™”
<br><br>

## ๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์•„ํ‚คํ…์ฒ˜

![์•„ํ‚คํ…์ฒ˜ ver8](https://github.com/totobon6125/LocalMingle-BE/assets/140354427/897fd862-6f57-4f43-a2da-0423955f4195)
<br><br>

## ๐Ÿ”ง ๊ธฐ์ˆ  ์˜์‚ฌ๊ฒฐ์ •
### FE
- **Vite React & TypeScript**
- Vite๋Š” Create React App (CRA)์— ๋น„ํ•ด ๋น ๋ฅด๊ณ  ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
- TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์— ์—„๊ฒฉํ•œ ํƒ€์ž… ์ง€์ •์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด๋Š” ๊ฐœ๋ฐœ ์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํœด๋จผ์—๋Ÿฌ๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•ด์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
- **Axios**
- Axios๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
- Promise ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์š”์ฒญ ์ „/ํ›„์— ์ถ”๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์šฉ์ดํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
- **React Router**
- React-Router๋Š” ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ผ์šฐํŒ…์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.
- UI์™€ ๋ผ์šฐํŒ… ๊ทœ์น™์„ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ •์˜ํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋ฉฐ, ๋‹ค์–‘ํ•œ ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
- **Recoil**
- Recoil์€ ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ์ƒํƒœ๋ฅผ ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.
- ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์ƒํƒœ ๊ณต์œ ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋ฉฐ, ๋ณต์žกํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.
- **React Query**
- React-Query๋Š” ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์บ์‹œํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„ํŽธํ•œ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
- API ํ˜ธ์ถœ๊ณผ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ณ , ์ฟผ๋ฆฌ ์บ์‹ฑ ๋ฐ ์ž๋™ ์žฌ๋กœ๋”ฉ๊ณผ ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
- **Styled Components**
- Styled-components๋Š” JavaScript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์Šคํƒ€์ผ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.
- ๋ฆฌ์•กํŠธ์™€ ํ†ตํ•ฉ๋˜๋ฉฐ, ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์— ์Šคํƒ€์ผ์„ ์ง์ ‘ ์ •์˜ํ•˜๋ฏ€๋กœ CSS ํด๋ž˜์Šค ์ด๋ฆ„ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ปดํฌ๋„ŒํŠธ ์Šคํƒ€์ผ์„ ๋ณด๋‹ค ๋ชจ๋“ˆํ™”ํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
- **GitHub Actions**
<br>

### BE
- **Nest.js**
- **ํผํฌ๋จผ์Šค ๊ด€๋ฆฌ
:** Nest.js๋Š” ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ณต์žกํ•œ ์ž‘์—…์„ ํšจ๊ณผ์ ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- **ํƒ€์ž… ์•ˆ์ •์„ฑ
:** TypeScript๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ํƒ€์ž… ์—๋Ÿฌ๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์–ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
- **API ๋ช…์„ธ์„œ ์ œ๊ณต
:** Nest.js๋Š” Swagger๋ฅผ ๋‚ด์žฅํ•˜์—ฌ API ๋ช…์„ธ์„œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ํ˜‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. Express์—์„œ๋Š” ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ์„ค์ •๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
- **๋‚ด์žฅ๋œ ๊ธฐ๋Šฅ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
:** Nest.js์—๋Š” Express์˜ ๊ธฐ๋Šฅ๊ณผ ์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๊ฐ„ํŽธํ•˜๊ณ  ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
- **Prisma**
- **Prisma ๊ณต์‹ ๋ฌธ์„œ์˜ ํ›Œ๋ฅญํ•œ ์ •๋ฆฌ
:** Prisma์˜ ๊ณต์‹ ๋ฌธ์„œ๋Š” ํ›Œ๋ฅญํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด ์žˆ์–ด, ๊ฐœ๋ฐœ์ž๋“ค์ด ์‚ฌ์šฉ๋ฒ•์„ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค.
- **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ํƒ€์ž… ์„ค์ •
:** Prisma๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ TypeScript ํƒ€์ž…์„ ์ž๋™ ์ƒ์„ฑํ•˜๋ฏ€๋กœ, ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ๊ฐ์†Œ์‹œ์ผœ์ค๋‹ˆ๋‹ค.
- **๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ API ์ž‘์„ฑ
:** Prisma๋Š” ์ฟผ๋ฆฌ ์ž‘์„ฑ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋ฉฐ, ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- **ํ™œ๋ฐœํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ •๋ณด ์ ‘๊ทผ์„ฑ
:** Prisma๋Š” ํ™œ๋ฐœํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์กด์žฌํ•˜์—ฌ, ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง€์›๊ณผ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
- **MySQL**
- **SQL๊ณผ NoSQL ๋น„๊ต
:** MySQL์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๊ตฌ๋ถ„ํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ํŽธ์ง‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, NoSQL๋ณด๋‹ค ๋‹ค๋ฃจ๊ธฐ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ NoSQL์ด ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ˜„์žฌ ์„œ๋น„์Šค์— ์ ํ•ฉํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.
- **NoSQL ๋‹ค์–‘์„ฑ ๋ฐ ํ•™์Šต ๊ณก์„ 
:** NoSQL์€ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ๊ณ , ๊ฐ๊ฐ์˜ ์‚ฌ์šฉ๋ฒ•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํ•™์Šต ๊ณก์„ ์ด ๋†’์Šต๋‹ˆ๋‹ค. MySQL์„ ์„ ํƒํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋‹ค์–‘์„ฑ๊ณผ ํ•™์Šต ๋ถ€๋‹ด์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- **PostgreSQL vs MySQL
:** PostgreSQL์€ ๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ์ง€๋งŒ, ํ˜„์žฌ ์„œ๋น„์Šค์™€์˜ ์ ํ•ฉ์„ฑ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. MySQL์€ ํ˜„์žฌ ์„œ๋น„์Šค์— ๋” ์ ํ•ฉํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
- **ํ•™์Šต ๊ณก์„ ๊ณผ ๋ณต์žก์„ฑ
:** PostgreSQL์€ ์‚ฌ์šฉ๋ฒ•์ด ๋ณต์žกํ•˜๊ณ  ์ฟผ๋ฆฌ ์ž‘์„ฑ์ด ์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ ํ•™์Šต ๊ณก์„ ์ด ๋†’์Šต๋‹ˆ๋‹ค. MySQL์€ ์‚ฌ์šฉ์ด ๋” ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค.
- **์ฝ๊ธฐ ์ค‘์‹ฌ ์„œ๋น„์Šค์— ์ ํ•ฉ
:** ํ˜„์žฌ ์„œ๋น„์Šค์—์„œ๋Š” ์œ ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ๊ฒŒ์‹œ๊ธ€์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ๋ณด๋‹ค ์ฝ๋Š” ๊ธฐ๋Šฅ์— ์ดˆ์ ์ด ์žˆ์œผ๋ฉฐ, MySQL์€ ์ฝ๊ธฐ ์ค‘์‹ฌ ์„œ๋น„์Šค์— ์ ํ•ฉํ•œ ์„ ํƒ์ž…๋‹ˆ๋‹ค.
- **Swagger**
- **์ž๋™ ๋ฌธ์„œํ™”**
: Swagger๋Š” API๋ฅผ ์ž๋™์œผ๋กœ ๋ฌธ์„œํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด API์˜ ์—”๋“œํฌ์ธํŠธ, ํŒŒ๋ผ๋ฏธํ„ฐ, ์‘๋‹ต ํ˜•์‹ ๋“ฑ์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€๋“œ๋ฆฝ๋‹ˆ๋‹ค.
- **์‹œ๊ฐ์  ๋””์ž์ธ**
: API๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋””์ž์ธํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๊ฐ•ํ™”๋˜์–ด, ์ด๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด API์˜ ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํŒŒ์•…ํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
- **ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ**
: Swagger๋Š” ๊ธฐ๋ณธ์ ์ธ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜์—ฌ API์˜ ๋™์ž‘์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋“ค์— ๋น„ํ•ด ๋‹ค์†Œ ์ œํ•œ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- **ํ™•์žฅ์„ฑ**
: Swagger๋Š” ๋‹ค์–‘ํ•œ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Swagger๋ฅผ ๋” ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
- **์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›**
: Swagger๋Š” ํ™œ๋ฐœํ•œ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์‚ฌ์šฉ ์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋„์›€์„ ๋ฐ›๊ธฐ ์‰ฌ์šด ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
- **GitHub Actions**
- ๋‹ค๋ฅธ CD ์— ๋น„ํ•ด์„œ learning curve ๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค.
<br>

## ERD
<img width="819" alt="erd" src="https://github.com/totobon6125/LocalMingle-BE/assets/140354427/b27726d2-1c05-47bc-8cb1-0442b3ca63eb">

0 comments on commit c9da001

Please sign in to comment.