Skip to content

Moaguide-develop/moaguide_back

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๋ชจ์•„๊ฐ€์ด๋“œ - STO ํ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ ๋ชจ์•„๊ฐ€์ด๋“œ

Image


๐Ÿ“ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

์ œ์ž‘๊ธฐ๊ฐ„: 2024.03.02 ~ ๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘

์ œ์ž‘์ธ์›: 8๋ช… (PM 2๋ช…, UI/UX ์™ธ์ฃผ ์ œ์ž‘, FE 3๋ช…, BE 3๋ช…)

์„œ๋น„์Šค ์†Œ๊ฐœ: ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” ๋ถ„์‚ฐ๋œ STO(ํ† ํฐ์ฆ๊ถŒ) ์‹œ์žฅ ์ •๋ณด๋ฅผ ํ†ตํ•ฉํ•ด ํˆฌ์ž์ž๋“ค์—๊ฒŒ ์‹ ๋ขฐ๋„ ๋†’์€ ์ตœ์‹  ๋ฐ์ดํ„ฐ์™€ ๋ถ„์„ ๋ฆฌํฌํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์ž์ฒด ํ”Œ๋žซํผ ๊ฐœ๋ฐœ๊ณผ ๋งˆ์ผ€ํŒ…์„ ํ†ตํ•ด ๊ฐœ๋ฐœ ์ดˆ๊ธฐ 67์—ฌ ๋ช…์˜ ์œ ์ €๋ฅผ ๋ชจ์ง‘ํ–ˆ์œผ๋ฉฐ, 2025๋…„๊นŒ์ง€ 2,000๋ช…์˜ ์œ ์ €๋ฅผ ํ™•๋ณดํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. MVP ๊ฐœ๋ฐœ ์ดํ›„ ํ”Œ๋žซํผ ํ™•์žฅ๊ณผ B2B ๋ชจ๋ธ์„ ํ†ตํ•ด ์‹œ์žฅ ์ ์œ ์œจ์„ ํ™•๋Œ€ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์กฐ๊ฐํˆฌ์ž ์ƒํ’ˆ ์ •๋ณด ์ œ๊ณต, ์ตœ์‹  ๋‰ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์ž์ฒด ํ”„๋ฆฌ๋ฏธ์—„ ๊ตฌ๋…๊ถŒ ๊ฒฐ์ œ ์‹œ ํˆฌ์ž ๊ฐ€์ด๋“œ ์„œ๋น„์Šค๋ฅผ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ ํ”„๋กœ์ ํŠธ ํŒ€์›

Backend Team

์ด์ค€ํ˜ธ ๊น€์ฐฌํ˜ธ ๋ฐ•์†Œ๋ฏธ
@LJH @kch2234 @parksomii

๐Ÿ›  ๋ฐฑ์—”๋“œ ๊ธฐ์ˆ  ์Šคํƒ

Image

  • ๊ฐœ๋ฐœ: Spring boot, Spring JPA

  • ๋ฐฐํฌ ๋ฐ ํ˜ธ์ŠคํŒ…: EC2, NginX

  • DB: RDS, MySQL, Redis

  • ETC: elasticsearch, S3, AWS CloudFront, Certbot, Git, GitHub Actions, Docker Hub


๐Ÿ’ก ํ”„๋กœ์ ํŠธ ์ฃผ์š” ๊ธฐ๋Šฅ

์กฐ๊ฐ ํˆฌ์ž ์ƒํ’ˆ ์‹ค์‹œ๊ฐ„ ์ •๋ณด ์ œ๊ณต

  • ์ƒํ’ˆ์˜ ์‹œ๊ฐ€์ด์•ก, ํ˜„์žฌ๊ฐ€, ๋“ฑ๋ฝ ํญ, ์ˆ˜์ต๋ฅ  ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„ ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด ์‹œ๊ฐ์ ์œผ๋กœ ์ œ๊ณต
  • ๊ด€์‹ฌ ์ƒํ’ˆ ์ €์žฅ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ €์žฅํ•œ ์ƒํ’ˆ์— ์ ‘๊ทผ
  • ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํˆฌ์ž ์ƒํ’ˆ์— ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผ

ํˆฌ์ž ์ƒํ’ˆ ๊ด€๋ จ ๊ธฐ์‚ฌ ๋ชจ์•„๋ณด๊ธฐ

  • ๋ถ€๋™์‚ฐ, ์Œ์•… ์ €์ž‘๊ถŒ, ๋ฏธ์ˆ ํ’ˆ ๋“ฑ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ตœ์‹  ๊ธฐ์‚ฌ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋งํฌ์ œ๊ณต
  • ๊ฐ€์žฅ ๋งŽ์ด ๋ณธ ๊ธฐ์‚ฌ, ์ตœ์‹ ์ˆœ, ์ธ๊ธฐ์ˆœ ๋“ฑ ๋‹ค์–‘ํ•œ ์ •๋ ฌ ๋ฐฉ์‹์œผ๋กœ ๋‰ด์Šค ์ •๋ณด ์ œ๊ณต

์กฐ๊ฐ ํˆฌ์ž ๊ฐ€์ด๋“œ

  • ์กฐ๊ฐ ํˆฌ์ž์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด, ํˆฌ์ž ๊ฐ€์ด๋“œ ์ปค๋ฆฌํ˜๋Ÿผ๊ณผ ๋ฆฌํฌํŠธ๋ฅผ PDF ํ˜•์‹์œผ๋กœ ์ œ๊ณต

๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…

  • ์นด์นด์˜ค, ๋„ค์ด๋ฒ„, ๊ตฌ๊ธ€ ๊ณ„์ •์„ ํ†ตํ•ด ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์ œ๊ณต
  • ํœด๋Œ€ํฐ ์ธ์ฆ์ด ํฌํ•จ๋œ ํšŒ์›๊ฐ€์ž…
  • ํšŒ์›ํƒˆํ‡ด ๊ธฐ๋Šฅ

ETC

  • ๋งˆ์ดํŽ˜์ด์ง€, ํšŒ์›์ •๋ณด ์ˆ˜์ •
  • ์นด์นด์˜คํ†ก 1:1 ๋ฌธ์˜
  • ๋ชจ๋ฐ”์ผ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ
  • ํ† ์Šค ์ž๋™ ๊ฒฐ์ œ ๊ธฐ๋Šฅ
  • ๊ด€๋ฆฌ์ž ์ „์šฉ ํŽ˜์ด์ง€

โœจ ๊ธฐ์ˆ ์  ๊ตฌํ˜„ ๋ฐ ์„ฑ๊ณผ

1. ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ ์ตœ์ ํ™”

  • Elasticsearch๋ฅผ ๋„์ž…ํ•ด ์—ญ์ƒ‰์ธ ๋ฐฉ์‹์„ ํ™œ์šฉ, ๊ฒ€์ƒ‰ ์‘๋‹ต ์‹œ๊ฐ„์„ RDB ๊ธฐ๋ฐ˜ ๋Œ€๋น„ 90% ์ด์ƒ ๋‹จ์ถ•
  • ๋ถˆํ•„์š”ํ•œ ๊ฒ€์ƒ‰์–ด ์ €์žฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ์‹œ์Šคํ…œ ํšจ์œจ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ๊ฐœ์„ 

2. ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ ๋กœ๋”ฉ ์†๋„ ๊ฐœ์„ 

  • ์•ฝ 1,000๋งŒ ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ๋”ฉ ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๊ณ , ํ…Œ์ด๋ธ” ๋ถ„๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ๋กœ๋”ฉ ์‹œ๊ฐ„์„ 3์ดˆ โ†’ 0.5์ดˆ๋กœ ๋‹จ์ถ•
  • ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX) ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ

3. API ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ

  • ์ƒํ’ˆ ์ •๋ณด, ๊ธฐ์‚ฌ ๋ฐ์ดํ„ฐ ์ œ๊ณต ๋ฐ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ RESTful API๋กœ ์„ค๊ณ„
  • Spring Boot๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ตฌํ˜„

4. ํšŒ์› ๊ด€๋ฆฌ ๋ฐ ์ธ์ฆ

  • ์†Œ์…œ ๋กœ๊ทธ์ธ(์นด์นด์˜ค, ๋„ค์ด๋ฒ„, ๊ตฌ๊ธ€)๊ณผ ์ด๋ฉ”์ผ ์ธ์ฆ ๊ธฐ๋ฐ˜์˜ ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„.
  • ํšŒ์› ์ •๋ณด ์ˆ˜์ • ๋ฐ ํƒˆํ‡ด API ๊ฐœ๋ฐœ

5. ๊ฒฐ์ œ ๋ฐ ๊ตฌ๋… ์„œ๋น„์Šค

  • ํ† ์Šค ์ž๋™ ๊ฒฐ์ œ API ์—ฐ๋™์„ ํ†ตํ•ด ํ”„๋ฆฌ๋ฏธ์—„ ๊ตฌ๋…๊ถŒ ๊ฒฐ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๊ตฌ๋… ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ ์„ค๊ณ„ ๋ฐ ์ตœ์ ํ™”

6. ๊ด€๋ฆฌ์ž ์ „์šฉ ํŽ˜์ด์ง€ ๊ฐœ๋ฐœ

  • ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ ๋ชจ๋‹ˆํ„ฐ๋ง, ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๋“ฑ ๊ด€๋ฆฌ์ž ๋Œ€์‹œ๋ณด๋“œ ๊ฐœ๋ฐœ
  • ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ด€๋ฆฌ ํšจ์œจ์„ฑ ์ฆ๋Œ€

7. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

  • AWS EC2, RDS, S3, CloudFront, NginX๋ฅผ ํ™œ์šฉํ•œ ๋ฐฐํฌ ๋ฐ ํ˜ธ์ŠคํŒ… ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  • Certbot์„ ํ™œ์šฉํ•œ SSL ์ธ์ฆ์„œ ์ ์šฉ์œผ๋กœ ์„œ๋น„์Šค ๋ณด์•ˆ ๊ฐ•ํ™”

๐Ÿ› ๏ธ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

1. ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ ๊ตฌํ˜„

๋ชจ์•„๊ฐ€์ด๋“œ์˜ ์ƒํ’ˆ ๋ฐ์ดํ„ฐ๋Š” ์ƒํ’ˆ๋ณ„๋กœ ๊ณ ์œ  ์†์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, RDB์˜ ๊ธฐ๋ณธ ์ธ๋ฑ์‹ฑ ๋ฐฉ์‹์œผ๋กœ๋Š” ๋‹ค์–‘ํ•œ ์†์„ฑ ๊ฒ€์ƒ‰ ์‹œ ์†๋„ ์ €ํ•˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Elasticsearch๋ฅผ ๋„์ž…ํ•˜์—ฌ ์—ญ์ƒ‰์ธ(Inverted Index) ๋ฐฉ์‹์œผ๋กœ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋„์ž… ํšจ๊ณผ: ๊ฒ€์ƒ‰ ์‘๋‹ต ์‹œ๊ฐ„์ด RDB ๊ธฐ๋ฐ˜ ๋Œ€๋น„ 90% ์ด์ƒ ๋‹จ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

2. ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ ๋กœ๋”ฉ ์ตœ์ ํ™”

์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€๋Š” ์•ฝ 1,000๋งŒ ๊ฑด์˜ ์ฃผ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๊ธธ์–ด์กŒ์Šต๋‹ˆ๋‹ค(5์ดˆ ์ด์ƒ)

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ” ๋ถ„๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•˜์—ฌ 1500๊ฐœ์˜ ์ƒํ’ˆ ๋ฐ์ดํ„ฐ๋งŒ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ตœ์ข… ์„ฑ๊ณผ: ๋กœ๋”ฉ ์‹œ๊ฐ„์ด 0.6์ดˆ๋กœ ๋‹จ์ถ•๋˜์—ˆ๊ณ , ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

3. ๊ฒ€์ƒ‰ ์ˆœ์œ„ ๋ฌธ์ œ ํ•ด๊ฒฐ

๊ฒ€์ƒ‰ ์ˆœ์œ„ ์ƒ์„ฑ ์ค‘ ์˜๋ฏธ ์—†๋Š” ๊ฒ€์ƒ‰์–ด(์˜ˆ: ใ…‡, ใ…)์™€ ๋ถ€์ ์ ˆํ•œ ๊ฒ€์ƒ‰์–ด๊ฐ€ ํฌํ•จ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์—, ๊ฒ€์ƒ‰์–ด ์ €์žฅ ๋กœ์ง์„ ์ˆ˜์ •ํ•˜์—ฌ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ์—†๋Š” ๊ฒ€์ƒ‰์–ด๋Š” ์ €์žฅํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฒฐ๊ณผ: ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ๋ถˆํ•„์š”ํ•œ ๊ฒ€์ƒ‰์–ด ์ €์žฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ŒCommit Convention

Commit Type Description
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix ๋ฒ„๊ทธ ์ˆ˜์ •
docs ๋ฌธ์„œ ์ˆ˜์ •
style ์ฝ”๋“œ formatting, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ์ž์ฒด์˜ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ
refactor ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
chore ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ˆ˜์ •, ๊ทธ ์™ธ ๊ธฐํƒ€ ์ˆ˜์ • ex) .gitignore
comment ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ
rename ํŒŒ์ผ ๋˜๋Š” ํด๋” ๋ช…์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…๋งŒ์ธ ๊ฒฝ์šฐ
remove ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•œ ๊ฒฝ์šฐ
!breaking change ์ปค๋‹ค๋ž€ API ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ
!hotfix ๊ธ‰ํ•˜๊ฒŒ ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์ณ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

About

๐Ÿ“ˆ STO ํ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ ๋ชจ์•„๊ฐ€์ด๋“œ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages