Skip to content

๐Ÿ’ก [ Protfolio Project 011 ] Spring Boot ๋ฐฑ์—”๋“œ ๋กœ๋“œ๋งต ์Šคํ„ฐ๋”” - ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ํ”„๋กœ์ ํŠธ

Notifications You must be signed in to change notification settings

syys1028/Board-Service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

70 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒŸ ใ€Ž์†Œํ–‰์„ฑใ€ โ€“ ์†Œ์†Œํ•œ ํ–‰๋ณต์ด ๋ชจ์—ฌ ๋ฐ˜์ง์ด๋Š” ์ž‘์€ ๋ณ„

๋‚˜๋งŒ์˜ ์ž‘์€ ์ˆœ๊ฐ„๋“ค์„ ๊ธฐ๋กํ•˜๊ณ ,
์„œ๋กœ์˜ ์ผ์ƒ ์† ๋”ฐ๋œปํ•œ ๊ฐ์ •์„ ํ•จ๊ป˜ ๋‚˜๋ˆ„๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋žซํผ


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

ใ€Ž์†Œํ–‰์„ฑใ€์€ ํ•˜๋Š˜ ์‚ฌ์ง„, ์œ„์‹œ๋ฆฌ์ŠคํŠธ, ์Œ์•… ๊ณต์œ , ์งง์€ ํ•œ์ค„ ๊ธฐ๋ก ๋“ฑ
์ผ์ƒ ์† ์†Œ์†Œํ•œ ํ–‰๋ณต์„ ์ฃผ์ œ๋ณ„๋กœ ๋‚˜๋ˆ„๊ณ , ๊ณต๊ฐํ•˜๊ณ , ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์„ฑ ๊ธฐ๋ฐ˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒŒ์‹œํŒ์ž…๋‹ˆ๋‹ค.
๋ถ€๋‹ด ์—†์ด ํ•œ๋‘ ์ค„๋กœ๋„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๋‹ค์–‘ํ•œ ๊ธฐ๋ก์ด ์ •๋ˆ๋˜์–ด ๊ณต์œ ๋ฉ๋‹ˆ๋‹ค.

โ€œ๋ชจ๋‘์˜ ์ž‘์€ ๊ธฐ๋ก์ด ๋ชจ์—ฌ ๋ฐ˜์ง์ด๋Š” ๋ณ„์ด ๋ฉ๋‹ˆ๋‹ค.โ€


โ›ณ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๋ฐฐ๊ฒฝ

ใ€Ž์†Œํ–‰์„ฑใ€์€ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ์‹ค๋ฌด ์—ญ๋Ÿ‰ ๊ฐ•ํ™”๋ฅผ ๋ชฉํ‘œ๋กœ ์ง„ํ–‰๋œ 6๊ฐœ์›”๊ฐ„์˜ ์Šคํ„ฐ๋”” ๊ณผ์ •์—์„œ ์ถœ๋ฐœํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
๊ธฐ์ดˆ์ ์ธ CRUD ์‹ค์Šต๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ณด์•ˆ, ๋ฐฐํฌ, ์ž๋™ํ™”๊นŒ์ง€์˜ ์‹ค๋ฌด ์ค‘์‹ฌ ๋ฐฑ์—”๋“œ ๋กœ๋“œ๋งต์„ ๋”ฐ๋ผ
๊ฐ์ž ์ž์œจ์ ์ธ ์ฃผ์ œ๋ฅผ ์ •ํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑํ•ด๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“… ํ–ฅํ›„ ๋ชฉํ‘œ (์Šคํ„ฐ๋”” ๊ณตํ†ต ๋กœ๋“œ๋งต)

๋‹จ๊ณ„ ๋ชฉํ‘œ
โœ… 1๋‹จ๊ณ„ REST API ๊ฐœ๋ฐœ & ๊ธฐ๋ณธ CRUD ๊ตฌํ˜„ ์™„๋ฃŒ
โœ… 2๋‹จ๊ณ„ JPA, QueryDSL ๊ธฐ๋ฐ˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”
๐Ÿ”„ 3๋‹จ๊ณ„ AWS EC2, RDS, S3๋ฅผ ํ™œ์šฉํ•œ ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
๐Ÿ”œ 4๋‹จ๊ณ„ Nginx ์ ์šฉ ๋ฐ ์ •์  ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™”
๐Ÿ”œ 5๋‹จ๊ณ„ Docker๋ฅผ ํ†ตํ•œ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
๐Ÿ”œ 6๋‹จ๊ณ„ GitHub Actions ๊ธฐ๋ฐ˜ CI/CD ์ž๋™ํ™” ๊ตฌ์„ฑ

์ตœ์ข…์ ์œผ๋กœ๋Š” ์‹ค๋ฌด ์ˆ˜์ค€์˜ ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋ฉฐ,
๊ฐ ๋‹จ๊ณ„๋ณ„๋กœ ์ฝ”๋“œ ์ž‘์„ฑ โ†’ ํ…Œ์ŠคํŠธ โ†’ ๋ฌธ์„œํ™” โ†’ ๋ฐฐํฌ๊นŒ์ง€ ์ง„ํ–‰ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.


โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿ“Œ ์นดํ…Œ๊ณ ๋ฆฌ ๊ธฐ๋ฐ˜ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ
    โ˜๏ธ ์˜ค๋Š˜์˜ ํ•˜๋Š˜ / ๐Ÿฐ ๋‚˜๋งŒ์˜ ์œ„์‹œ / ๐ŸŽต ์˜ค๋Š˜์˜ ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ / ๐Ÿ“– ํ•œ์ค„ ๊ธฐ๋ก

  • ๐Ÿ–ผ๏ธ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ (S3 ์—ฐ๋™)
    ํ•˜๋Š˜ ๊ฒŒ์‹œํŒ์— ์‚ฌ์ง„ ์ฒจ๋ถ€ ๊ฐ€๋Šฅ

  • ๐Ÿ”— ์œ ํŠœ๋ธŒ ๋งํฌ ๊ณต์œ 
    ์Œ์•… ๊ฒŒ์‹œํŒ์—์„œ ์œ ํŠœ๋ธŒ ๋งํฌ๋กœ ๊ฐ์ƒ ๊ณต์œ 

  • โœ… ์œ„์‹œ๋ฆฌ์ŠคํŠธ ๋‹ฌ์„ฑ ์ฒดํฌ ๊ธฐ๋Šฅ
    ๋ชฉํ‘œ๋ฅผ ์„ค์ •ํ•˜๊ณ , ๋‹ฌ์„ฑ ์—ฌ๋ถ€๋ฅผ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Œ

  • ๐Ÿ’ฌ ๋Œ“๊ธ€ & ์ข‹์•„์š”(๊ณต๊ฐ)
    ๊ณต๊ฐ ๊ธฐ๋ฐ˜ ์ƒํ˜ธ์ž‘์šฉ ์ง€์›

  • ๐Ÿท๏ธ ํƒœ๊ทธ ๋“ฑ๋ก ๋ฐ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
    ๋ง‘์Œ, ์‚ฐ์ฑ…, ์—ฌ์œ  ๋“ฑ ๊ฐ์ • ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ์ง€์›

  • ๐Ÿ‘ค ๋งˆ์ดํŽ˜์ด์ง€ ๊ธฐ๋Šฅ
    ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€, ์ข‹์•„์š”ํ•œ ๊ธ€, ๋‹ฌ์„ฑํ•œ ์œ„์‹œ๋ฆฌ์ŠคํŠธ ์—ด๋žŒ


๐Ÿ”ง ๊ธฐ์ˆ  ์Šคํƒ

๐Ÿ“™ ์–ธ์–ด & ํ”„๋ ˆ์ž„์›Œํฌ

  • Java 17 โ€“ ์•ˆ์ •์ ์ธ LTS ๋ฒ„์ „ (ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘)
  • Spring Boot 3.4.x โ€“ ์ƒ์‚ฐ์„ฑ๊ณผ ๊ตฌ์กฐํ™”์— ์ตœ์ ํ™”
  • Spring Data JPA โ€“ ๊ฐ์ฒด ์ค‘์‹ฌ์˜ DB ์—ฐ๋™
  • QueryDSL โ€“ ํƒ€์ž… ์•ˆ์ „ํ•œ ์ฟผ๋ฆฌ ์ž‘์„ฑ

๐Ÿ›ก๏ธ ๋ณด์•ˆ

  • Spring Security โ€“ API ์ ‘๊ทผ ์ œ์–ด
  • JWT (JJWT 0.11.5) โ€“ ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์ฒ˜๋ฆฌ
  • BCryptPasswordEncoder โ€“ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ

๐Ÿ—„๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค & ์Šคํ† ๋ฆฌ์ง€

  • MariaDB / MySQL โ€“ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • AWS S3 โ€“ ๊ฒŒ์‹œ๊ธ€ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ

โœ… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ & ํ…Œ์ŠคํŠธ

  • Jakarta Validation โ€“ ์ž…๋ ฅ๊ฐ’ ์œ ํšจ์„ฑ ๊ฒ€์ฆ
  • JUnit, Mockito โ€“ ๋‹จ์œ„ ๋ฐ ๋ชฉ ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ
  • H2 DB โ€“ ํ…Œ์ŠคํŠธ์šฉ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

โš™๏ธ ๊ฐœ๋ฐœ ๋„๊ตฌ & ๊ธฐํƒ€

  • IntelliJ IDEA โ€“ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ
  • Gradle โ€“ ๋นŒ๋“œ ์ž๋™ํ™”
  • Lombok โ€“ ๋ฐ˜๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ
  • dotenv-java โ€“ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ๊ด€๋ฆฌ

๐Ÿงญ ๋„์ž… ์˜ˆ์ • ๊ธฐ์ˆ 

  • AWS EC2 / RDS โ€“ ์„œ๋น„์Šค ๋ฐฐํฌ ๋ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๊ตฌ์„ฑ
  • Nginx โ€“ ์ •์  ๋ฆฌ์†Œ์Šค ์บ์‹ฑ ๋ฐ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •
  • Docker & Docker Compose โ€“ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  • GitHub Actions or Jenkins โ€“ CI/CD ์ž๋™ ๋ฐฐํฌ ๊ตฌ์ถ•

๐Ÿ—‚๏ธ ์ฃผ์š” ๋„๋ฉ”์ธ ๊ตฌ์กฐ (์„ค๊ณ„ ์ค‘)

Entity ์„ค๋ช…
User ์‚ฌ์šฉ์ž ์ •๋ณด (์ด๋ฉ”์ผ, ๋‚˜์ด, ์„ฑ๋ณ„, ์ฃผ์†Œ ๋“ฑ)
Post ๊ฒŒ์‹œ๊ธ€ (์ œ๋ชฉ, ๋‚ด์šฉ, ์นดํ…Œ๊ณ ๋ฆฌ, ์ด๋ฏธ์ง€, ๋งํฌ, ์ข‹์•„์š” ๋“ฑ)
Category ๊ฒŒ์‹œ๊ธ€ ์ฃผ์ œ ๋ถ„๋ฅ˜ (Enum ๋˜๋Š” ํ…Œ์ด๋ธ”)
Comment ๊ฒŒ์‹œ๊ธ€์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ๋Œ“๊ธ€
Tag ๊ฐ์ •/์ƒํ™ฉ ํƒœ๊ทธ (์˜ˆ: ๋ง‘์Œ, ๋ง›์ง‘, ์„ค๋ ˜ ๋“ฑ)
PostTag Post โ†” Tag ๊ด€๊ณ„ ๋งคํ•‘ ํ…Œ์ด๋ธ”

๐Ÿง  ๋‚˜์˜ ์—ญํ• 

  • ์ „์ฒด ๊ธฐ๋Šฅ ๊ธฐํš ๋ฐ ์‹œ์Šคํ…œ ์„ค๊ณ„
  • RESTful API ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„
  • Spring Security ๊ธฐ๋ฐ˜ ๋กœ๊ทธ์ธ & ํšŒ์› ์ธ์ฆ ์ฒ˜๋ฆฌ
  • ๊ฒŒ์‹œ๊ธ€ CRUD + ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • AWS S3 ์—ฐ๋™ ๋ฐ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์ฒ˜๋ฆฌ
  • ์ข‹์•„์š”, ๋Œ“๊ธ€, ๋งˆ์ดํŽ˜์ด์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • Swagger ์ ์šฉ ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ ์„ค๊ณ„

๐ŸŒˆ ํ–ฅํ›„ ๊ณ ๋„ํ™” ๊ณ„ํš

  • ๐ŸŽฏ ์ธ๊ธฐ๊ธ€ ๋žญํ‚น (์ข‹์•„์š” ์ˆœ ์ •๋ ฌ)
  • ๐ŸŽจ ๊ฐ์ • ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ํ†ต๊ณ„ ์‹œ๊ฐํ™”
  • ๐Ÿ—“๏ธ ๋‹ฌ๋ ฅ ๊ธฐ๋ฐ˜ ๊ธฐ๋ก ํ™•์ธ ๊ธฐ๋Šฅ (MyDay)
  • ๐Ÿ“ฑ ๋ฐ˜์‘ํ˜• ์›น UI (๋ชจ๋ฐ”์ผ ๋Œ€์‘)
  • ๐ŸŒ ์™ธ๋ถ€ ์Œ์•… ํ”Œ๋žซํผ ์ž๋™ ์ž„๋ฒ ๋”ฉ (์œ ํŠœ๋ธŒ, ์Šคํฌํ‹ฐํŒŒ์ด ๋“ฑ)

๐Ÿ“ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ  & ๊ฐœ๋ฐœ ์ผ์ง€

ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•œ ํ›„, ์ง์ ‘ ํšŒ๊ณ ๋ฅผ ์ž‘์„ฑํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
์ง€๊ธˆ์€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ์–ด์š”! ๐Ÿ˜Œ

๐Ÿ“Œ ๊ฐœ๋ฐœ ์ผ์ง€ ๋ฐ ํšŒ๊ณ  Notion ๋ณด๊ธฐ


About

๐Ÿ’ก [ Protfolio Project 011 ] Spring Boot ๋ฐฑ์—”๋“œ ๋กœ๋“œ๋งต ์Šคํ„ฐ๋”” - ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ํ”„๋กœ์ ํŠธ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages