Skip to content

Latest commit

ย 

History

History
286 lines (207 loc) ยท 10.6 KB

README.md

File metadata and controls

286 lines (207 loc) ยท 10.6 KB

1. logo_dark ์†Œ๊ฐœ

์นœ๊ตฌ์™€์˜ ์šฐ์ •์„ ๋‹ค์‹œ, ๊ฒŒ์ž„์œผ๋กœ ๋Š๋ผ๋Š” ๋ˆ๋ˆํ•œ ์œ ๋Œ€๊ฐ

๐ŸŒŠ Naming : ์„œ๋น„์Šค์˜ ์Šฌ๋กœ๊ฑด์ธ "๊นŒ๋„ ๋‚ด๊ฐ€ ๊นŒ"์˜ ์–ด๊ฐ์„ ์‚ด๋ ค์„œ ๋งŒ๋“  ํ‘œํ˜„.

  • ๊ธฐ๊ฐ„: 24.01.08 ~ 24.02.16 (6์ฃผ)
  • ์ธ์›: 6๋ช…(BE_3, FE_3)
  • ํŠธ๋ž™: ์›น๋””์ž์ธ

์ฃผ์š” ๊ธฐ๋Šฅ

์นœ๊ตฌ ๋†€๋ฆฌ๊ธฐ SNS ๐Ÿคช

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

๐Ÿ“ƒ ๋ฌธ์„œ

๐Ÿ’ป Notion

๐Ÿฆฟ ์„ฑ๊ณผ

  • ์‚ผ์„ฑ์ฒญ๋…„SW์•„์นด๋ฐ๋ฏธ 2ํ•™๊ธฐ ๊ณตํ†ต ํ”„๋กœ์ ํŠธ ์šฐ์ˆ˜์ƒ (24.02.16)


2. ๐Ÿ” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

2-1. ํ™˜๊ฒฝ ์„ค์ •

๐Ÿ‘จโ€๐Ÿ’ป Front-end

- Visual Studio Code(IDE) `1.81.1`
- HTML5, CSS3, Javascript(ES6)
- React : `18.2.0`
- Electron `28.1.4`
- Stompjs `2.3.3`
- Vite `5.0.8`
- Typescript `5.2.2`
- Tailwind CSS `3.4.1`
- Zustand `4.4.7`
- Tanstack React Query `5.17.15`
- Nodejs `20`

๐Ÿ‘จโ€๐Ÿ’ป Back-end

- Intellij : `2023.3.2`
- JVM OpenJDK : `17`
- JWT : `0.11.5`
- Spring Boot : `3.0.13`
  - JAVA Spring Data JPA
  - Spring Security
  - SSEEmitter
- OAuth : `6.8.0`
- Lettuce : `6.2.7`
- spring-boot-WebSocket : `10.1.16`
- Gradle
- ORM : JPA

๐Ÿ‘ฉโ€๐Ÿ’ป CI/CD

- AWS EC2
  - Nginx : `1.18.0`
  - Ubuntu : `20.04 LTS`
  - Docker : `25.0.2`
  - Jenkins :`2.443`
- Docker Hub

2-2. ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

image

2-3 ERD

D110_๊นŒ๊นŒ_ERD


3. ๐Ÿฆˆ ์ฃผ์š” ๊ธฐ๋Šฅ


3-1. ์ผ๋ ‰ํŠธ๋ก  Core ๊ธฐ๋Šฅ 1

์ผ๋ ‰ํŠธ๋ก _์ฝ”์–ด1

(์•ฑ์—์„œ์˜ ์ฑ„ํŒ…์ด OS๋ ˆ์ด์–ด๋ฅผ ํ†ตํ•ด ๊ฒŒ์ž„ ๋ ˆ์ด์–ด ์ƒ๋‹จ์œผ๋กœ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.)

  • [๋ผ์ด๋ธŒ์ค‘๊ณ„๋ฐฉ - ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด์–ด] ์ฑ„ํŒ… ๋‚ด์šฉ์ด ๊ฒŒ์ž„ ๋ ˆ์ด์–ด ์ƒ๋‹จ์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

3-2. ์ผ๋ ‰ํŠธ๋ก  Core ๊ธฐ๋Šฅ 2

์ผ๋ ‰ํŠธ๋ก _์ฝ”์–ด2

(ํฌํƒ‘์ด ์•ˆ๋™๋ฏผ๋‹˜์„ ์ฒ˜์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.)

(์–˜ ์ฃฝ์—ˆ๋Š”๋ฐ?)

  • [๊ฒŒ์ž„ํ”Œ๋ ˆ์ด์–ด - ๋ผ์ด๋ธŒ์ค‘๊ณ„๋ฐฉ] ์ธ๊ฒŒ์ž„ ์ด๋ฒคํŠธ๊ฐ€ ๋ด‡ ๋ฉ”์‹œ์ง€๋กœ ์ฑ„ํŒ…๋ฐฉ์— ์ค‘๊ณ„๋ฉ๋‹ˆ๋‹ค.

3-3. ๋ฉ”์ธ ํŽ˜์ด์ง€

๋ฉ”์ธ_ํŽ˜์ด์ง€

  • ํ˜„์žฌ ๊ฒŒ์ž„์ค‘์ธ ์นœ๊ตฌ์˜ ๋ผ์ด๋ธŒ ์ฑ„ํŒ…๋ฐฉ ์ž…์žฅ
  • ์นœ๊ตฌ๋“ค์˜ ์ƒˆ๋กœ ์˜ฌ๋ผ์˜จ ๋„๊ฐ ํ™•์ธ
  • ํ”„๋กœํ•„ ํŽ˜์ด์ง€, ์•„์ดํ…œ์ƒต, ๋ฉ”์„ธ์ง€ํ•จ, ์•Œ๋ฆผ ํ™•์ธ
  • ์•ฑ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„œ๋น„์Šค ์•ฝ๊ด€ ํ™•์ธ
  • ์นœ๊ตฌ ์ฐพ๊ธฐ

3-4. ๋ผ์ด๋ธŒ ๋ฐฉ ์ž…์žฅ

๋ผ์ด๋ธŒ_์ฑ„ํŒ…๋ฐฉ

  • ์ผ๋ฐ˜ ์ฑ„ํŒ…
  • ์‚ฌ์ง„ ์ฑ„ํŒ…
  • ์นœ๊ตฌ ๋„๊ฐ ์ฑ„ํŒ…
  • ์ฑ„ํŒ…์‹œ ์นœ๊ตฌํ•œํ…Œ window ์•Œ๋ฆผ ๊ธฐ๋Šฅ

3-5. ํ”„๋กœํ•„ ํŽ˜์ด์ง€

ํ”„๋กœํ•„_ํŽ˜์ด์ง€

  • ํ”„๋กœํ•„ ์ฃผ์ธ ๋„๊ฐ ํ™•์ธ
  • ํ”„๋กœํ•„ ์ฃผ์ธ ๋ช…์˜ˆ์˜ ์ „๋‹น(์นญํ˜ธ) ํ™•์ธ
  • ํ”„๋กœํ•„ ํŽธ์ง‘

3-6. ์•Œ๋ฆผ

์•Œ๋ฆผ

  • ์ƒˆ ๋„๊ฐ ์•Œ๋ฆผ์‹œ ๋„๊ฐ์œผ๋กœ ์ด๋™
  • ์ƒˆ ์นญํ˜ธ ์•Œ๋ฆผ์‹œ ํ”„๋กœํ•„๋กœ ์ด๋™
  • ์ƒˆ ๋Œ“๊ธ€ ์•Œ๋ฆผ์‹œ ๋„๊ฐ์œผ๋กœ ์ด๋™
  • ์นœ๊ตฌ ์š”์ฒญ์‹œ ์นœ๊ตฌ ํ”„๋กœํ•„๋กœ ์ด๋™

3-7. ์นœ๊ตฌ ๋ชฉ๋ก

์นœ๊ตฌ_๋ชฉ๋ก

  • ์นœ๊ตฌ๋“ค์˜ ํ”„๋กœํ•„ ํ™•์ธ

3-8. ์นœ๊ตฌ ๊ฒ€์ƒ‰

์นœ๊ตฌ_๊ฒ€์ƒ‰

  • ์นœ๊ตฌ ์นด์นด์˜ค ์ด๋ฉ”์ผ๋กœ ๊ฒ€์ƒ‰

3-9. ์•„์ดํ…œ ์ƒต

์•„์ดํ…œ_์ƒต

  • ์นญํ˜ธ ์ง€์ •๊ถŒ ์‚ฌ์šฉ
  • ๊ฐ•์ œ ์นญ์ฐฌ๊ถŒ ์‚ฌ์šฉ
  • ํ™•์„ฑ๊ธฐ ์‚ฌ์šฉ

3-10. ๋ฉ”์„ธ์ง€ํ•จ

๋ฉ”์„ธ์ง€ํ•จ

  • 1:1 ์ฑ„ํŒ…

3-11. ๋ฐฐํŒ…

๋ฐฐํŒ…ํ•˜๊ธฐ

  • ์ด๊ธด๋‹ค, ์ง„๋‹ค๋กœ ๋ฐฐํŒ… ๊ฐ€๋Šฅ
  • ์ŠนํŒจ์— ๋”ฐ๋ผ ์ •์‚ฐ

3-12. ๋Œ“๊ธ€ ๋‹ฌ๊ธฐ, ์‹ซ์–ด์š”

๋ฐฐํŒ…ํ•˜๊ธฐ

  • ์นœ๊ตฌ์˜ ์›ƒ๊ธด ๋„๊ฐ์„ ์‹ซ์–ด์š”
  • ์นœ๊ตฌ์˜ ๋„๊ฐ์— ๋Œ“๊ธ€ ๋‹ฌ๊ธฐ

4. ๐Ÿ›ก ๋ฐฐํฌ


  • https
    • certbot๊ณผ Nginx๋ฅผ ํ†ตํ•œ SSL ์ธ์ฆ
    • EC2 ์ œ๊ณต ๋„๋ฉ”์ธ 'http://i10D110.p.ssafy.io/' ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ
  • ์ž๋™ ๋ฐฐํฌ
    • Gitlab์—์„œ web hook ์„ค์ •์„ ํ†ตํ•ด jenkins ๋นŒ๋“œ ์œ ๋ฐœ
    • jenkins์˜ shell script ์‹คํ–‰ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ git pull -> docker build -> run
    • Nginx๋กœ reverse proxy ์„ค์ •

5. ๐Ÿ–Š Cooperation


Tools

- Git

- Jira

- Notion

- Mattermost

- Discord

- Gerrit

- Jenkins

6. Ground rule


6-1 Commit Convention

# Feat : #์ด์Šˆ๋ฒˆํ˜ธ ๊ธฐ๋Šฅ

##### ์ œ๋ชฉ์€ ์ตœ๋Œ€ 50 ๊ธ€์ž๊นŒ์ง€๋งŒ ์ž…๋ ฅ ############## -> |


# ๋ณธ๋ฌธ์€ ์œ„์— ์ž‘์„ฑ
######## ๋ณธ๋ฌธ์€ ํ•œ ์ค„์— ์ตœ๋Œ€ 72 ๊ธ€์ž๊นŒ์ง€๋งŒ ์ž…๋ ฅ ########################### -> |
- ๋ณธ๋ฌธ ๋‚ด์šฉ

# issue close๋Š” ๋ณธ๋ฌธ ์ตœํ•˜๋‹จ์— ๊ณต๋ฐฑ ํ•˜๋‚˜ ์•„๋ž˜์— ์ž‘์„ฑ

# --- COMMIT END ---
# <ํƒ€์ž…> ๋ฆฌ์ŠคํŠธ
#   Feat    : ๊ธฐ๋Šฅ (์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ)
#   Fix     : ๋ฒ„๊ทธ (๋ฒ„๊ทธ ์ˆ˜์ •)
#   Refactor: ๋ฆฌํŒฉํ† ๋ง
#   Test    : ํ…Œ์ŠคํŠธ (ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋ณ€๊ฒฝ ์—†์Œ)
#   Chore   : ๊ธฐํƒ€ ๋ณ€๊ฒฝ์‚ฌํ•ญ (๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ • ๋“ฑ ์ž์ž˜ํ•œ ์ˆ˜์ •๋“ค)
#   Style   : ์„ธ๋ฏธ์ฝœ๋ก  ์ถ”๊ฐ€, ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ, ์ฃผ์„ ์ถ”๊ฐ€/์ œ๊ฑฐ
#   Docs    : ํŒŒ์ผ, ๋ฌธ์„œ(์ด๋ฏธ์ง€ ๋“ฑ) ์ถ”๊ฐ€, ์‚ญ์ œ
#   Build   : ๋นŒ๋“œ ๊ด€๋ จ ํŒŒ์ผ ์ˆ˜์ •
#   CI      : CI ๊ด€๋ จ ์„ค์ • ์ˆ˜์ •
# ------------------
#     ๋ชจ๋“  ๋‚ด์šฉ์€ ํ•ญ์ƒ ํ•œ๊ธ€๋กœ ์ž‘์„ฑ (ํƒ€์ž…์€ ์œ„์˜ ์˜์–ด๋กœ)
#     ์ œ๋ชฉ์€ ๋ช…๋ น๋ฌธ์œผ๋กœ
#     ์ œ๋ชฉ ๋์— ๋งˆ์นจํ‘œ(.) ๊ธˆ์ง€
#     ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์„ ํ•œ ์ค„ ๋„์›Œ ๋ถ„๋ฆฌํ•˜๊ธฐ
#     ๋ณธ๋ฌธ์€ "์–ด๋–ป๊ฒŒ" ๋ณด๋‹ค "๋ฌด์—‡์„", "์™œ"๋ฅผ ์„ค๋ช…ํ•œ๋‹ค.
#     ๋ณธ๋ฌธ์— ์—ฌ๋Ÿฌ์ค„์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•  ๋• "-"๋กœ ๊ตฌ๋ถ„
# ------------------

ex1) Feat : S10P12D110-17 ๋กœ๊ทธ์ธ ๊ตฌํ˜„

  	๋‚ด์šฉ ...

    S10P12D110-53 #done #comment ๋‹ซ๊ธฐ

ex2) Feat/๋กœ๊ทธ์ธ : ํŒจ์Šค์›Œ๋“œ ์•”ํ˜ธํ™”

  	๋‚ด์šฉ ...
  	
  	S10P12D110-53 #done #comment ๋‹ซ๊ธฐ

6-2 PR Template

## ๐Ÿ“• ์ œ๋ชฉ

## ๐Ÿ“— ์ž‘์—… ๋‚ด์šฉ

### PR ํƒ€์ž…
- [ ] ๊ธฐ๋Šฅ ์ถ”๊ฐ€
- [ ] ๊ธฐ๋Šฅ ์‚ญ์ œ
- [ ] ๋ฒ„๊ทธ ์ˆ˜์ •
- [x] ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

### ๋ฐ˜์˜ ๋ธŒ๋žœ์น˜
feat/S10P12D110-17-signup -> develop

### ๋ณ€๊ฒฝ ์‚ฌํ•ญ
- ๊ธฐ์กด username๋งŒ ๋”ฐ๋กœ ๊ฐ€์ ธ๊ฐ€๋˜ ํ˜•ํƒœ์—์„œ ๊ด€๊ณ„๋ฅผ ๋งคํ•‘ํ•˜์—ฌ User ๊ฐ์ฒด๋ฅผ ํ†ต์งธ๋กœ ์ฐธ์กฐํ•˜๋„๋ก ๋ณ€๊ฒฝ
- ๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€ ๋ชจ๋‘ ์ˆ˜์ •/์‚ญ์ œ ์‹œ username๊ณผ ์ผ์น˜ํ•˜๋Š”๊ฒŒ ์•„๋‹Œ userId์™€ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์„ ์กฐํšŒ

### ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ
[] Postman ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์ด์ƒ ์—†์Šต๋‹ˆ๋‹ค.
[] local ci ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์ด์ƒ ์—†์Šต๋‹ˆ๋‹ค.

7. ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ ํŒ€์› ์†Œ๊ฐœ


ํŒ€์› ์—ญํ•  ๋ฐ ๋‹ด๋‹น

์˜ค์„ธ์˜ ์ „์ˆ˜๋ฏผ ์ด์ˆ˜๋ฏผ ๊น€์ƒํ›ˆ ๊น€์ง€์—ฐ ์ดํ•ด๊ฑด
osy9536 dalcheonroadhead oistmil andongmin94 jiyeon2536 lhgeer2617
Contributors Role Position
ใ€€์˜ค์„ธ์˜ ํŒ€์žฅ,
Backend Lead
- ์œ ์ € ํ”Œ๋กœ์šฐ ์ž‘์„ฑ
- ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ์ ์šฉ
- JWT filter ์ ์šฉ
- ๊ณตํ†ต ์‘๋‹ต API ์ž‘์„ฑ
- ๊ณตํ†ต ์—๋Ÿฌ ์‘๋‹ต API ์ž‘์„ฑ
- ์นด์นด์˜ค ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ตฌํ˜„
- ๋„๊ฐ ๊ด€๋ จ API ์ž‘์„ฑ
- ์œ ์ € ๋ฐ์ดํ„ฐ ๊ด€๋ จ API ์ž‘์„ฑ
- ๊ฐ„๋‹จํ•œ Front API ์ž‘์„ฑ
- Infra ๊ตฌ์„ฑ ( AWS RDS, EC2, Nginx Reverse Proxy, Jenkins Pipeline, Dockerfile)
ใ€€์ „์ˆ˜๋ฏผ ํŒ€์›,
Backend,
๋ฐœํ‘œ์ž
- WebSocket ์ฑ„ํŒ… ์„œ๋ฒ„ ๊ตฌํ˜„(STOMP ์ ์šฉ)
- ๋กค API ๋‹ด๋‹นํ•˜์—ฌ ๋ช…์„ธ์„œ ์ž‘์„ฑ
- ๋กค LOCAL API ์ด์šฉํ•œ ํฌ๋กค๋ง
- socket s3๋ฅผ ์ด์šฉํ•œ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ์†Œ์ผ“ ํ†ต์‹  ์‹œ ์ด๋ฏธ์ง€๋„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„
- ์ฑ„ํŒ… ๊ด€๋ จ API ์ž‘์„ฑ
- ๋ฐฐํŒ… ๊ด€๋ จ API ๊ตฌํ˜„(์Šคํ”„๋ง ์Šค์ผ€์ค„๋Ÿฌ ์ด์šฉ)
- ์ฑ„ํŒ… Front ํ™”๋ฉด ๊ฒฌ๋ณธ ๊ตฌํ˜„
- ๋ฐฐํŒ… Front ํ™”๋ฉด ๊ฒฌ๋ณธ ๊ตฌํ˜„
ใ€€์ด์ˆ˜๋ฏผ ํŒ€์›,
Backend,
PM
- SSE ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ, ํ™•์„ฑ๊ธฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„(Backend SseEmitter ์ ์šฉ, Frontend EventSourcePolyfill ์ ์šฉ)
- ์•„์ดํ…œ์ƒต ๊ตฌ์ž…(์นญํ˜ธ, ๊ฐ•์ œ์นญ์ฐฌ๊ถŒ, ํ™•์„ฑ๊ธฐ) ๊ด€๋ จ API ์ž‘์„ฑ
- ์นญํ˜ธ ๊ด€๋ จ API ์ž‘์„ฑ
- ์นœ๊ตฌ ๊ด€๋ จ API ์ž‘์„ฑ
- JUnit ์„œ๋น„์Šค๋‹จ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
ใ€€๊น€์ƒํ›ˆ ํŒ€์›,
Frontend Lead
- ์ผ๋ ‰ํŠธ๋ก  ํฌํŒ… ๋ฐ ๊ฐœ๋ฐœ & PWA ํฌํŒ…
- ํด๋ผ์ด์–ธํŠธ & ๋ผ์ด๋ธŒ ์ฑ„ํŒ…์ฐฝ ์—ฐ๋™
- ์„ ํ–‰๊ธฐ์ˆ  ์—ฐ๊ตฌ
- UCC ์ œ์ž‘
ใ€€๊น€์ง€์—ฐ ํŒ€์›,
Frontend,
์„œ๊ธฐ
- Notion ์„ ํ†ตํ•ด ํ˜‘์—… ๋ฌธ์„œ ๊ด€๋ฆฌ ๋ฐ ํšŒ์˜๋ก ์ž‘์„ฑ
- Figma ํ™œ์šฉํ•˜์—ฌ ๋””์ž์ธ ๋ฐ ์™€์ด์–ดํ”„๋ ˆ์ž„ ์ž‘์„ฑ
- react-ga4 ํ™œ์šฉํ•˜์—ฌ google analytics ์ ์šฉ
- ์นด์นด์˜ค ๋กœ๊ทธ์ธ API ํ™œ์šฉํ•˜์—ฌ ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ๊ตฌํ˜„
- ๋„๊ฐ, ๋Œ“๊ธ€ CRUD ๊ฐœ๋ฐœ
- React-Query ์‚ฌ์šฉํ•˜์—ฌ ๋ฌดํ•œ ์Šคํฌ๋กค ๊ตฌํ˜„
- UI, UX ๊ฐœ์„ 
ใ€€์ดํ•ด๊ฑด ํŒ€์›,
Frontend,
์ด๋ฌด
- WebSocket ์ฑ„ํŒ… ํ”„๋ก ํŠธ
- ์›น UI/UX
- PWA ๋ฐ˜์‘ํ˜• ๋ชจ๋ฐ”์ผ UI