Skip to content

๐ŸŽคย ๊ณต์—ฐ ์ฐจ๋Œ€์ ˆ ํ”Œ๋žซํผ ALLREVA ๐Ÿš

Notifications You must be signed in to change notification settings

ALLREVA/Allreva_BE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

์„œ๋น„์Šค ์†Œ๊ฐœ

image

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


ALLREVA๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์ฐจ๋ณ„ํ™”๋ฅผ ๋‘๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ฐจ ๋Œ€์ ˆ ๊ตฌ์ธ ๋ฐ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

    ์ฝ˜์„œํŠธ ์ฐธ์—ฌ ์‹œ ํ•„์š”ํ•œ ๊ตํ†ต์ˆ˜๋‹จ์„ ์‰ฝ๊ฒŒ ๊ตฌ์ธํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ

  2. ํŒฌ ์ฃผ์ตœ ํ–‰์‚ฌ ์ •๋ณด ํ†ตํ•ฉ

    ์—ฌ๋Ÿฌ SNS์— ํฉ์–ด์ง„ ํŒฌ ์ฃผ์ตœ ํ™œ๋™ ์ •๋ณด๋ฅผ ํ•œ ํ”Œ๋žซํผ์—์„œ ๊ด€๋ฆฌํ•˜์—ฌ ํŒฌ๋“ค์ด ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต

  3. ์•„ํ‹ฐ์ŠคํŠธ ๋น„๊ณต์‹ ์ผ์ • ๊ด€๋ฆฌ

    ๊ณต์‹ ์ผ์ • ์™ธ์—๋„ ํŒฌ๋“ค๋ผ๋ฆฌ ๊ณต์œ ํ•˜๋Š” ์ด๋ฒคํŠธ๋‚˜ ํ™œ๋™์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„ ์ œ๊ณต

๊ธฐ์ˆ  ์Šคํƒ ๐Ÿฆพ

Languages

Java

Frameworks

Spring Boot Spring Security JWT Spring Data JPA QueryDSL

Testing

JUnit

Databases

MySQL Redis H2 ElasticSearch AWS S3

Tools

IntelliJ IDEA Gradle Postman Notion Slack

Infrastructure

AWS

ํŒ€์› ์†Œ๊ฐœ ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘

๊น€๊ด€ํ˜„ ๊น€๋„์šฐ ๊น€์ˆ˜๋ฏผ ๋ฐ•์ƒํ˜
kwanse kimdw0823 tnals2384 sangcci
๊ณต์—ฐ API, ๊ณต์—ฐ ์บ์‹ฑ, ๊ณต์—ฐ ๊ธฐ๋ก API, ์ด๋ฒคํŠธ ๋ฐœํ–‰ ๊ณต์—ฐ, ์ฐจ๋Œ€์ ˆ, ์ˆ˜์š”์กฐ์‚ฌ Elastic Search ๊ฒ€์ƒ‰ API ๊ตฌํ˜„, ELK ์„ธํŒ… ๊ณต์—ฐ, ๊ณต์—ฐ์žฅ Open API ํŒŒ์‹ฑ, ์ˆ˜์š”์กฐ์‚ฌ API, ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด API ๊ตฌํ˜„ ์†Œ์…œ ๋กœ๊ทธ์ธ, ์ฐจ๋Œ€์ ˆ API ๊ตฌํ˜„

๐Ÿ“‹ย ERD

Allreva

ํ”„๋กœ์ ํŠธ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ

๋„๋ฉ”์ธ ์ค‘์‹ฌ ์„ค๊ณ„ (Domain Driven Design) EX) member ๋„๋ฉ”์ธ image

image

์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ

ALLREVA

๊ตฌํ˜„ ๊ธฐ์ˆ 

1. ๊ณต์—ฐ Open API

๊ฐœ์ตœ ๊ณต์—ฐ์žฅ ์ขŒ์„ ์ˆ˜๊ฐ€ 1000์„ ์ด์ƒ์ธ ๊ณต์—ฐ์žฅ๋งŒ ํ•„ํ„ฐ๋งํ•˜์—ฌ, ํ•ด๋‹น ๊ณต์—ฐ์žฅ์—์„œ ์—ด๋ฆฌ๋Š” ์ฝ˜์„œํŠธ ์ƒ์„ธ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.

image

OpenFeignClient๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‘๋‹ต์„ ๋ฐ›์•„์˜ค๊ณ , XML ํŒŒ์ผ์„ dto๋กœ ํŒŒ์‹ฑํ•˜์—ฌ DB์— ์ €์žฅ.

  • 112์ดˆ โ†’ 14 ์ดˆ ๋‹จ์ถ•

image

2. ๊ฒ€์ƒ‰ ์—”์ง„์œผ๋กœ elasticsearch ๋„์ž… ๊ณผ MySQL ๊ณผ Sync

  • ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅธ ๊ฒ€์ƒ‰ ๊ตฌํ˜„
  • Logstash๋ฅผ ์ด์šฉํ•ด MySQL๊ณผ Elasticsearch sync

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2024-12-26 แ„‹แ…ฉแ„’แ…ฎ 3 39 57

  • ๊ณต์—ฐ ์ •๋ณด ์—…๋ฐ์ดํŠธ ์‹œ๊ฐ„์— ๋งž์ถฐ Logstash๋ฅผ ์ด์šฉํ•ด์„œ MySQL ๊ณผ elasticsearch๋ฅผ sync
  • JDBC ์ž…๋ ฅ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด MySQL ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ํด๋ง ๋ฐ ๋™๊ธฐํ™”.
  • ํ•„ํ„ฐ๋ง๊ณผ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜์„ ํ†ตํ•ด Elasticsearch์— ์ตœ์ ํ™”๋œ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ.

3. ๊ณต์—ฐ ์ƒ์„ธ์กฐํšŒ ์บ์‹ฑ

  • ๊ณต์—ฐ ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ๋„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋™๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค
  • ์ดํ›„์— ๋ฉ€ํ‹ฐ์„œ๋ฒ„๋กœ ํ™•์žฅ๋œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ์˜ ๋™๊ธฐํ™”๊ฐ€ ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋กœ์ปฌ ์บ์‹ฑ์„ ์ ์šฉํ•˜์˜€๋‹ค
  • ๊ณต์—ฐ ์ •๋ณด๋ฅผ ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ Open API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋”ฑ ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ๋งŒ ์บ์‹œ๋ฅผ ๊ฐฑ์‹ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค
  • ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  Open API๋กœ ๋ฐ›์•„์˜ค๋Š” ์ˆœ๊ฐ„์— ๋ฏธ๋ฆฌ ์บ์‹ฑ๊นŒ์ง€ ๋‹ค ํ•˜์—ฌ ์ฒซ ์กฐํšŒ์—๋„ ์บ์‹œ ํžˆํŠธํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค

4. ๋น„๋™๊ธฐ ์ž‘์—…์˜ ์‹คํ–‰ ์ตœ๋Œ€ํ•œ ๋ณด์žฅ

  • @TransactionalEventListener๋ฅผ ์ด์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ด๋ฒคํŠธ๋กœ ๋ฐœํ–‰
  • ์ด๋ฒคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋ฉด LinkedBlockingQueue์— ๋„ฃ์–ด์„œ ์žฌ๋ฐœํ–‰

5. oauth2 ์†Œ์…œ ๋กœ๊ทธ์ธ

  • ๊ธฐ์กด Spring Security OAuth2Client๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ -> ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ด์Šˆ๋กœ ์ธํ•ด body์— ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์—†์Œ -> ๋ฐฉ์‹ ๋ณ€๊ฒฝ
  • authorization code๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๊ณผ์ •๊นŒ์ง€ ํ”„๋ก ํŠธ์—์„œ ์ „๋‹ด. -> openfeign์„ ํ†ตํ•ด ์ง์ ‘ auth server์™€ ํ†ต์‹ ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •๋ณด ํญ๋“ -> ์‘๋‹ต body์— ์„ค์ • ๊ฐ€๋Šฅ
  • ์ฟ ํ‚ค ์„ค์ • ์‹œ localhost ํ™˜๊ฒฝ์—์„œ๋„ https ์ ์šฉํ•˜๋„๋ก ํ•˜์—ฌ cookie ์ธ์‹๋˜๋„๋ก ํ•จ

6. test ํ™˜๊ฒฝ ๋ถ„๋ฆฌ

  • spring์˜ Profile ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ Security Config ๋ฐ Filter ๋ถ„๋ฆฌ -> test ์‹œ์—๋Š” DEVELOPER ๊ถŒํ•œ์„ ๋งŒ๋“ค์–ด์„œ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์‰ฝ๋„๋ก ๊ตฌํ˜„
  • local์ด๋‚˜ dev ํ™˜๊ฒฝ์—์„œ๋Š” ๊ธฐ์กด oauth2 ๋ฐ jwt ์ธ์ฆ ๊ณผ์ • ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„

About

๐ŸŽคย ๊ณต์—ฐ ์ฐจ๋Œ€์ ˆ ํ”Œ๋žซํผ ALLREVA ๐Ÿš

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages