Skip to content

kusitms-28th-Meetup-E/BE-MSA

Repository files navigation

๐Ÿ’ป Technology

Server

Co-working Tools


๐Ÿ’ป System Architecture

architect


๐Ÿ  ๊ธฐ์ˆ  ์Šคํƒ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ ์ด์œ 

โ˜๏ธย BackEnd

MSA ์„ ์ • ์ด์œ 

๊ธฐ์กด์˜ ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ณ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ชจ๋‘ ๋‹จ์ผ ํ”„๋กœ์ ํŠธ์— ์กด์žฌํ•˜์—ฌ ๋‹จ์ˆœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. ๋˜ํ•œ ์˜ค๋ฅ˜ ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์‰ฝ๊ณ , ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์ด ์‰ฝ๋‹ค. ํ•˜์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ํฌ๋‹ค๋ฉด ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๊ณ  ์ด ๋ฐฉ์‹์€ ํ™•์žฅ์— ์œ ์—ฐํ•˜์ง€ ์•Š๋‹ค.
๋‹ค๋ฅธ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋กœ ํ™•์žฅํ•  ๊ณ„ํš์ด ์žˆ๊ณ , ํ˜„์žฌ ๊ธฐํš๋‹จ๊ณ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ํฐ โ€˜๊ด‘์žฅโ€™ ์—์„œ๋Š” ๋ณต์žกํ•œ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฐ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ณ  ๋‹ค๋ฅธ ์„œ๋น„์Šค์™€ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” MSA ๊ตฌ์กฐ๋ฅผ ์ฑ„ํƒํ•˜์˜€๋‹ค.

Spring Eureka QueryDSL
์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ
Spring Eureka๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•ด ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค๊ฐ€ ๋™์ ์œผ๋กœ ๋“ฑ๋ก๋˜๊ณ  ํ•ด์ง€๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Eureka ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ
Spring Eureka๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ์ง€์›ํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์š”์ฒญ์„ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™•์žฅ์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ฏ€๋กœ Spring Eureka๋กœ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
ํƒ€์ž… ์•ˆ์ •์„ฑ
QueryDSL์€ ์ปดํŒŒ์ผ ์‹œ์ ์— ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” SQL ์ฟผ๋ฆฌ ๊ด€๋ จ ์˜ค๋ฅ˜๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ๋ฒ„๊ทธ๋ฅผ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

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

์„ ์–ธ์  ๊ตฌ์„ฑ
Docker Compose์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์„ ์„ ์–ธ์ ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ๋„คํŠธ์›Œํ‚น, ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ๋“ฑ์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด Docker๋ฅผ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋น ๋ฅธ ์„ฑ๋Šฅ
์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋งŽ๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์ด ์งง์€ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์„ ๊ฐ•ํ™”๋กœ ๋น ๋ฅธ ์‘๋‹ต ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋งŒ๋ฃŒ ๊ด€๋ฆฌ
๊ฐ ํ‚ค์— ๋Œ€ํ•ด ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด, Refresh Token์˜ ์œ ํšจ ๊ธฐ๊ฐ„ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ElastiCache๋กœ Refresh Token์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๊ธฐ์ˆ ์„ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ”–ย Naming Rules

  • ์ปดํฌ๋„ŒํŠธ, ํƒ€์ž…, ์ธํ„ฐํŽ˜์ด์Šค, ์ƒ์„ฑ์ž, ํด๋ž˜์Šค : PascalCase
  • ๋ฉ”์†Œ๋“œ & ํŒŒ๋ผ๋ฏธํ„ฐ & ๋ณ€์ˆ˜ : camelCase
  • ์ƒ์ˆ˜ : SNAKE_CASE

๐Ÿ—‚๏ธ Commit Convetion

๐Ÿ“Œ Type

commit๋ช… commit ๊ทœ์น™
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix ๋ฒ„๊ทธ ์ˆ˜์ • ํ˜น์€ ๊ธฐ๋Šฅ ์ˆ˜์ •
design css ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
docs ๋ฌธ์„œ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
test ํ…Œ์ŠคํŠธ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ
style ์ฝ”๋“œ ํฌ๋งทํŒ…, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์—†์ด ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
refactor ์ฝ”๋“œ ๋ฆฌํŽ™ํ† ๋ง
build ๋นŒ๋“œ ๊ด€๋ จ ํŒŒ์ผ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
rename ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช…์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰
remove ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰
chore ๊ทธ ์™ธ ์ž์ž˜ํ•œ ์ˆ˜์ •

  • commit message example
    • feat : ์ž‘์—… ๋‚ด์šฉ
    • fix : ์ž‘์—… ๋‚ด์šฉ
    • chore : โ€ฆ
  • ์ปค๋ฐ‹์€ ํŒŒ์ผ ๋‹จ์œ„๋กœ ์ž‘์—…ํ•œ ๋‚ด์šฉ ์ชผ๊ฐœ์„œ ํ•˜๊ธฐ
  • ์ปค๋ฐ‹๋ฉ”์‹œ์ง€๋Š” ์˜์–ด๋กœ ์ž‘์„ฑ

๐Ÿ‘จ๐Ÿปโ€๐ŸŽ“ย Branch Rules

  • ํ˜•์‹ [Header]/[์ด์Šˆ ๋ฒˆํ˜ธ]/[์ด์Šˆ ์ž‘์—… ๋‚ด์šฉ ์š”์•ฝ]
    • ex) feat/#2/login
Header ๊ธฐ๋Šฅ
main ์ตœ์ข… ๋ฐฐํฌํ•  ์„œ๋น„์Šค ๋‚ด์šฉ์˜ ๋ธŒ๋žœ์น˜
develop ์ฃผ์š” ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜, ์ด ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ์ž ์ž‘์—…ํ•œ ๊ธฐ๋Šฅ์„ merge
feat ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜, ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ ์‹œ develop ๋ธŒ๋žœ์น˜์— merge
fix ๊ธฐ๋Šฅ ์ˆ˜์ • ๋ธŒ๋žœ์น˜, ์ด๋ฏธ develop ๋ธŒ๋žœ์น˜์— merge๋œ ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๊ณ  ์™„๋ฃŒ ์‹œ develop ๋ธŒ๋žœ์น˜์— merge
hotfix master ๋ธŒ๋žœ์น˜๋กœ ๋ฐฐํฌ ํ›„์— ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๊ธด๊ธ‰ ์ˆ˜์ •ํ•˜๋Š” ๋ธŒ๋žœ์น˜

โšฝ๏ธ Issues

  • ์ด์Šˆ ์ œ๋ชฉ - feat : mainPage ์ˆ˜์ •

  • ๋งˆ์ผ์Šคํ†ค ์ ์šฉ

  • ํ…œํ”Œ๋ฆฟ ์ด์šฉ

    ## ๐Ÿ“Œ์ด์Šˆ ์„ค๋ช…
    
    ## ๐Ÿ—’๏ธํˆฌ๋‘๋ฆฌ์ŠคํŠธ
    - [ ]
    - [ ]
    
    ## ๐Ÿ‘ฃ์ฐธ๊ณ ์‚ฌํ•ญ

๐Ÿ‘ปย Pull requests

  • pr ์ œ๋ชฉ - feat : mainPage ์ˆ˜์ • (์ด์Šˆ์ œ๋ชฉ๊ณผ ๋™์ผํ•˜๊ฒŒ)

  • ํ…œํ”Œ๋ฆฟ ์ด์šฉ

    ### ๐Ÿ“ Description
    ์ด์Šˆ ๋ฒˆํ˜ธ : #๋ฒˆํ˜ธ
    
    ### ๐Ÿ’ฝ ์ž‘์—… ๋‚ด์šฉ
    - 1
    - 2
    
    ### ๐Ÿ–ผ ๊ฒฐ๊ณผ (์‚ฌ์ง„ ๋ฐ ์ž‘์—… ๊ฒฐ๊ณผ)

๐ŸŽƒย Directory Structure

โ˜๏ธย BackEnd

DDD ํŒจํ„ด

โ”Œโ”€โ”€ api-gateway
โ”œโ”€โ”€ service1
โ”‚   โ”œโ”€โ”€ src
โ”‚   โ”‚   โ”œโ”€โ”€ main
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ java.com.gwangjang.backend
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ domain
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ service1
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ application
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ dto
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ mapper
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ service
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ domain
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ entity
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ repository
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ service
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ exception
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ”‚    โ””โ”€โ”€ exception
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ presentation
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚            โ””โ”€โ”€ controller
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚            โ””โ”€โ”€ mapper
โ”‚   โ”‚   โ”‚   โ”‚   โ”‚            โ””โ”€โ”€ service
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ global
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ BackendApplication
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ resources
โ”‚   โ”‚   โ””โ”€โ”€ test
โ”‚   โ”œโ”€โ”€ build.gradle
โ”‚   โ”œโ”€โ”€ Dockerfile
โ”‚   โ”œโ”€โ”€ settings.gradle
โ”‚   โ”œโ”€โ”€ gradlew
โ”‚   โ””โ”€โ”€ gradlew.bat
โ””โ”€โ”€โ”€ service2
โ””โ”€โ”€โ”€ service3
โ””โ”€โ”€โ”€ service4

๐Ÿฌ Git Flow

๊นƒํ”Œ๋กœ์šฐ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •