Skip to content

๐Ÿงพ ์ข…์ด๋ณด๋‹ค ๋””์ง€ํ„ธ, ๋ฒˆ๊ฑฐ๋กœ์›€ ๋Œ€์‹  KB Re:fit!

Notifications You must be signed in to change notification settings

suminiee/kb_refit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

304 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿงพ ์ข…์ด๋ณด๋‹ค ๋””์ง€ํ„ธ, ๋ฒˆ๊ฑฐ๋กœ์›€ ๋Œ€์‹  KB๋ฆฌํ•

KB์˜ ์ƒˆ๋กœ์šด ์ „์ž์˜์ˆ˜์ฆ ์„œ๋น„์Šค KB๋ฆฌํ•! KB๋ฆฌํ•์€ Receipt, Reward, Benefit์˜ ํ•ฉ์„ฑ์–ด๋กœ, ์˜์ˆ˜์ฆ์˜ ๋””์ง€ํ„ธํ™”๋ฅผ ํ†ตํ•ด ํ˜œํƒ์„ ๋Œ๋ ค์ฃผ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.

๐Ÿ˜€ ํ”„๋กœ์ ํŠธ ๋ชฉ์ 

์ „์ž์˜์ˆ˜์ฆ ๊ธฐ๋ฐ˜์˜ ํšŒ๊ณ„ยท์„ธ๋ฌด ์ž๋™ํ™” ๋ฐ ๋ณดํ—˜ ์ฒญ๊ตฌ ์ง€๊ฐ‘ ์„œ๋น„์Šค โ€˜KB ๋ฆฌํ•โ€™์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ชฉ์ ์„ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1. ํ™˜๊ฒฝ ๊ฐœ์„  (ESG)

  • ํ™˜๊ฒฝ๋ถ€์— ๋”ฐ๋ฅด๋ฉด 2018๋…„ ๊ธฐ์ค€, ์—ฐ๊ฐ„ ์•ฝ 128์–ต ๊ฑด์˜ ์ข…์ด์˜์ˆ˜์ฆ ๋ฐœํ–‰
  • ์›๋ชฉ ์•ฝ 128,900 ๊ทธ๋ฃจ ๋ฒŒ๋ชฉ ์ถ”์‚ฐ โ†’ ์ „์ž์˜์ˆ˜์ฆ์œผ๋กœ ์ „ํ™˜ ์‹œ, ์‚ฐ๋ฆผ ๋ณดํ˜ธ ๋ฐ ์ž์› ์ ˆ๊ฐ์— ์ง์ ‘์  ๊ธฐ์—ฌ
  • ์ข…์ด์˜์ˆ˜์ฆ์€ ๊ฐ์—ด์ง€๋กœ ์ œ์ž‘๋˜์–ด ์žฌํ™œ์šฉ ๋ถˆ๊ฐ€
  • ์†Œ๋น„์ž๋Š” ์–ธ์ œ ์–ด๋””์„œ๋‚˜ ๋””์ง€ํ„ธ ๋ฐฉ์‹์œผ๋กœ ์˜์ˆ˜์ฆ ์—ด๋žŒ ๊ฐ€๋Šฅ โ†’ ์†Œ๋น„์ž ํŽธ์˜์„ฑ ๋ฐ ์ ‘๊ทผ์„ฑ ์ฆ๋Œ€

2. ๊ฐ€์น˜ ์ฐฝ์ถœ

๊ฐœ์ธ ์‚ฌ์—…์ž

  • ์ˆ˜๊ธฐ๋กœ ๊ด€๋ฆฌํ•˜๋˜ ์˜์ˆ˜์ฆ์˜ ๋””์ง€ํ„ธ ์ „ํ™˜ โ†’ ์ž…์ถœ๊ธˆ ๋‚ด์—ญ์˜ ์ฒด๊ณ„์  ๊ด€๋ฆฌ
  • ์ „์ž์˜์ˆ˜์ฆ์„ ํ†ตํ•œ ๋น„์šฉ ์ฆ๋น™ ์ž๋™ํ™” โ†’ ์„ธ๋ฌดยท์ž๊ธˆ ๊ด€๋ฆฌ ํšจ์œจ์„ฑ ํ–ฅ์ƒ
  • ์˜๋ฃŒ๋น„ ๋‚ฉ์ž… ์˜์ˆ˜์ฆ์„ ์ „์žํ™” ํ›„ ๋ณดํ—˜์‚ฌ๋กœ ์ž๋™ ์ „์†ก โ†’ ๊ธฐ์—… ๋ณต์ง€ ์‹œ์Šคํ…œ๊ณผ์˜ ์—ฐ๊ณ„๋กœ ๊ด€๋ฆฌยท์šด์˜ ๋น„์šฉ ์ ˆ๊ฐ

์ผ๋ฐ˜ ์‚ฌ์šฉ์ž

  • ๊ฐœ์ธ ์ •๋ณด ์œ ์ถœ ๋ฐฉ์ง€ โ†’ ์ข…์ด์˜์ˆ˜์ฆ ๋ถ„์‹ค ๋ฐ ํ๊ธฐ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ”ผ์‹ฑ, ์Šค๋ฏธ์‹ฑ ๋“ฑ์˜ ๋ฒ”์ฃ„ ์œ„ํ—˜ ์ตœ์†Œํ™”
  • ์†Œ๋น„ ๊ธฐ๋ก์˜ ์žฅ๊ธฐ ๋ณด๊ด€ ๊ฐ€๋Šฅ โ†’ ๋ณ„๋„์˜ ๋ณด๊ด€ ๋…ธ๋ ฅ์—†์ด ์ „์ž ๋ฐฉ์‹์œผ๋กœ ์žฅ๊ธฐ์ ์ธ ์†Œ๋น„ ๊ธฐ๋ก ํ™•์ธ ๊ฐ€๋Šฅ
  • ์†Œ๋น„ ํŒจํ„ด ๋ถ„์„ โ†’ ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„๋ฅ˜๋ฅผ ํ†ตํ•ด ๊ฐœ์ธ์˜ ์†Œ๋น„ ํŒจํ„ด ์„ฑํ–ฅ, ์ง€์ถœ ํŒจํ„ด ์‹œ๊ฐํ™” โ‡’ ์ž์‚ฐ ๊ด€๋ฆฌ ๋ฐ ์†Œ๋น„ ์Šต๊ด€ ๊ฐœ์„ ์— ๊ธฐ์—ฌ
  • ์˜์ˆ˜์ฆ ๋งŒ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ฐ€์น˜ ์ฐฝ์ถœ โ†’ ์†Œ๋น„ ํŒจํ„ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งž์ถคํ˜• ๊ธˆ์œต ์ƒํ’ˆ ์—ฐ๋™ โ‡’ ๊ตญ๋ฏผ์€ํ–‰์˜ ์‹ ๊ทœ ๊ณ ๊ฐ์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฌ์šด ์ „ํ™˜ ์œ ๋„
  • ๋ณ‘์›ยท์•ฝ๊ตญ ๋“ฑ์—์„œ ๋ฐœ์ƒํ•œ ๋‚ฉ์ž… ๋‚ด์—ญ์„ ๋ณดํ—˜์‚ฌ๋กœ ์ž๋™ ์ „์†ก โ†’ ์‚ฌ์šฉ์ž ๋ถˆํŽธ ์ตœ์†Œํ™”

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” IT's Your Life 6๊ธฐ ์‹ค๋ฌด ์—ญ๋Ÿ‰ ํ”„๋กœ์ ํŠธ์ด๋ฉฐ, ๊ธˆ์œต ์ฃผ์ œ๋ฅผ ๊ธฐ๋ฐ˜ํ•œ ํ”„๋กœ์ ํŠธ ์„ค๊ณ„์™€ ๊ฒฝํ—˜, ์™„์„ฑ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

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

2025.07.09 ~ 2025.08.21

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

๊ตฌ๋ถ„ ๊ธฐ์ˆ  ์Šคํƒ
Core Spring Legacy, Java17, Lombok
๋ณด์•ˆ/์ธ์ฆ Spring Security, JWT (JwtTokenProvider), BCryptPasswordEncoder, CORS
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค MySQL, MyBatis
ํ…Œ์ŠคํŠธ JUnit5
๋ฌธ์„œํ™” Swagger v2(Springfox)
๋ฐฐํฌ/์ธํ”„๋ผ Docker, GitHub Actions, AWS EC2, Nginx, Letโ€™s Encrypt(Certbot)
๊ธฐํƒ€ Firebase Cloud Message (ํ‘ธ์‹œ์•Œ๋ฆผ)

๐Ÿ–Œ ์™€์ด์–ดํ”„๋ ˆ์ž„

ํด๋ฆญํ•ด์„œ ์™€์ด์–ดํ”„๋ ˆ์ž„์„ ํ™•์ธํ•˜์„ธ์š”

ํด๋ผ์ด์–ธํŠธ ํŽ˜์ด์ง€

๋กœ๊ทธ์ธ ์Šคํฌ๋ฆฐ์ƒท 2025-08-18 ์˜คํ›„ 1 56 39
ํฌ์ธํŠธ ์Šคํฌ๋ฆฐ์ƒท 2025-08-18 ์˜คํ›„ 1 57 25
๊ตฌ๋งค์˜์ˆ˜์ฆ ์Šคํฌ๋ฆฐ์ƒท 2025-08-18 ์˜คํ›„ 1 58 04
๋ณ‘์›์˜์ˆ˜์ฆ ์Šคํฌ๋ฆฐ์ƒท 2025-08-18 ์˜คํ›„ 1 58 35
์˜์ˆ˜ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์Šคํฌ๋ฆฐ์ƒท 2025-08-18 ์˜คํ›„ 1 59 13
๋ณดํ—˜ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์Šคํฌ๋ฆฐ์ƒท 2025-08-18 ์˜คํ›„ 2 00 27
์ง€๊ฐ‘ ๊พธ๋ฏธ๊ธฐ ์Šคํฌ๋ฆฐ์ƒท 2025-08-18 ์˜คํ›„ 2 00 49

์‚ฌ์žฅ๋‹˜ ํŽ˜์ด์ง€

๊ฒฝ๋น„ ์ฒ˜๋ฆฌ ์Šคํฌ๋ฆฐ์ƒท 2025-08-18 ์˜คํ›„ 2 02 59 ์Šคํฌ๋ฆฐ์ƒท 2025-08-18 ์˜คํ›„ 2 03 19
์‚ฌ์—…์ž ์˜์ˆ˜์ฆ ์Šคํฌ๋ฆฐ์ƒท 2025-08-18 ์˜คํ›„ 2 03 40

โš™ ์„ค์น˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•

1. ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํด๋ก 

git clone https://github.com/KB-PBL-GGABEES/kb_refit_server.git
cd kb_refit_server

2. ํ•„์ˆ˜ ์„ค์น˜

Java 17 (Temurin ๊ถŒ์žฅ)

Gradle(๋ž˜ํผ ์‚ฌ์šฉ ๊ถŒ์žฅ: ./gradlew)

MySQL 8+ (๋กœ์ปฌ ๋˜๋Š” Docker)

๐Ÿ“Œ ์ฃผ์š” ๊ธฐ๋Šฅ

โœ… ์„ธ๋ฌดยท์ž๊ธˆ ๊ด€๋ฆฌ ๋ฐ ๋ฒ•์  ์ฆ๋น™ ์ˆ˜๋‹จ์šฉ ์ „์ž์˜์ˆ˜์ฆ ๋ฐœ๊ธ‰

  • pos ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ์ „์ž์˜์ˆ˜์ฆ ๋ฐœ๊ธ‰ ๊ณผ์ • ์‹œ๋ฎฌ๋ ˆ์ด์…˜
  • ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๋ฐ ์‚ฌ์—…์ž ์‚ฌ์šฉ์ž ์œ ์ € ๊ฒฐ์ œ ๋‚ด์—ญ ์—ฐ๊ณ„

โœ… ์†Œ๋น„ ํŒจํ„ด ๋ถ„์„ ๊ธฐ๋ฐ˜ ๋งž์ถคํ˜• ํ˜œํƒ ์ œ๊ณต

  • ์ „์ž ์˜์ˆ˜์ฆ ๋‚ด์—ญ ๊ธฐ๋ฐ˜ ์†Œ๋น„ ์นดํ…Œ๊ณ ๋ฆฌ ๋ถ„์„
  • ๋ฐฐ์ง€ ์‹œ์Šคํ…œ์„ ํ†ตํ•œ ๋งž์ถคํ˜• ํ˜œํƒ ๋ฆฌ์›Œ๋“œ ์ œ๊ณต

โœ… ์ „์ž์˜์ˆ˜์ฆ ๊ธฐ๋ฐ˜ ์˜๋ฃŒ๋น„ ์ฒญ๊ตฌ ๊ฐ„์†Œํ™”

  • ์˜๋ฃŒ ์˜์ˆ˜์ฆ ์—ฐ๊ณ„ ์‹ค๋น„ ๋ณดํ—˜๊ธˆ ์ฒญ๊ตฌ ๊ฐ„์†Œํ™”
  • ๋ณดํ—˜์‚ฌ ์—ฐ๊ณ„ ์ง„๋ฃŒ๋น„ ์„ธ๋ถ€ ์‚ฐ์ • ๋‚ด์—ญ ์†ก์‹  ๊ณผ์ • funnel ๊ตฌ์กฐ๋กœ ์—ฐ๊ณ„

โœ… ๊ฒฝ๋น„ ์ฒ˜๋ฆฌ

  • ์‚ฌ์—…์ฒด ์—ฐ๊ณ„ ๊ฒฝ๋น„ ์ฒ˜๋ฆฌ ๊ณผ์ • ๊ฐ„์†Œํ™”
  • ๋ฒ•์ธ ์นด๋“œ ์‚ฌ์šฉ ๋ฐ˜๋ ค ๋ฐ ํ™˜์ˆ˜ ์กฐ์น˜ ๊ณผ์ • ๊ฐ„์†Œํ™”

๐Ÿ‘ฅ ํŒ€์›

์ด๋ฆ„ ์‚ฌ์ง„ GitHub ์—ญํ•  ๋‹ด๋‹น ๊ธฐ๋Šฅ
๊ฐ•์ˆ˜๋ฏผ image @suminiee ๋ฐฑ์—”๋“œ ๋ฆฌ๋”ฉ & ์ธํ”„๋ผ spring security์ ์šฉ ๋ฐ ๋กœ๊ทธ์ธ ๊ตฌํ˜„
์ „์ž ์ง€๊ฐ‘ ๊พธ๋ฏธ๊ธฐ ์ฝ”๋“œ ๊ตฌํ˜„
blue-green ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ
์ตœ์€์„œ image @Cho2unseo ๋ฐฑ์—”๋“œ ์ „์ž์˜์ˆ˜์ฆ ๋ฐœ๊ธ‰ ๋ฐ ๋ฆฌ์›Œ๋“œ ์ ๋ฆฝ
์กฐ๊ฒฝํ™˜ image @ghks027 ๋ฐฑ์—”๋“œ ๊ฒฝ๋น„ ์ฒ˜๋ฆฌ ๋ฐ ๋ฒ•์ธ์นด๋“œ ์Šน์ธ/๋ฐ˜๋ ค
๊น€์—ฐํ›„ image @yeonhookim ๋ฐฑ์—”๋“œ ๋ณ‘์› ์˜์ˆ˜์ฆ ๋ณดํ—˜ ์ฒญ๊ตฌ ๋ฐ ์˜์ˆ˜ ์ฒ˜๋ฆฌ

๐Ÿ‘ฅ ๊ฐœ์„  ์‚ฌํ•ญ ๋ฐ ํ›„๊ธฐ

๐Ÿฑ ๊ฐ•์ˆ˜๋ฏผ

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

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

ํŠนํžˆ ์ธํ”„๋ผ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋œ ํ™˜๊ฒฝ์—์„œ๋„ ํšจ์œจ์ ์ธ ๋ฐฐํฌ ๋ฐ ์ธํ”„๋ผ ๊ตฌ์„ฑ์„ ์ตœ์ ํ™”ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฌด์‚ฌํžˆ ์šด์˜ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋‹ฌ์ด๋ผ๋Š” ์งง์€ ๊ธฐ๊ฐ„ ๋™์•ˆ ์‰ฝ์ง€ ์•Š์€ ๋„์ „์ด์—ˆ์ง€๋งŒ, ๊ณ„ํš๋Œ€๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์ˆ˜ํ•˜๋ฉฐ ๋งŽ์€ ์„ฑ์žฅ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฐ’์ง„ ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”„ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ฐธ์—ฌํ•œ ๋ถ€๋ถ„๋“ค

  • Spring Legacy ์ „๋ฐ˜์ ์ธ ์„ธํŒ…
  • Spring Security ์ ์šฉ
  • JWT ๊ธฐ๋ฐ˜ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์ „์ž์ง€๊ฐ‘ ๊พธ๋ฏธ๊ธฐ(์ง€๊ฐ‘ ๋ธŒ๋žœ๋“œ, ๋ฐฐ์ง€ ์ฐฉ์šฉ, ๋ฐฐ์ง€ ํ”„๋ฆฌ์…‹) ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • JavaMailSender & OpenCSV ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ CSVํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด ์ด๋ฉ”์ผ์— ์ฒจ๋ถ€ ํ›„ ๋ณด๋‚ด๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • FCM ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • EC2 & Docker & Nginx & Github Actions ์‚ฌ์šฉํ•˜์—ฌ Blue-Green ๋ฌด์ค‘๋‹จ๋ฐฐํฌ
  • Letโ€™s Encrypt(Certbot) ์‚ฌ์šฉํ•˜์—ฌ Https ์ ์šฉ

๐Ÿž ์ด์Šˆ ํŠธ๋ž˜ํ‚น ๊ธฐ๋ก

https://velog.io/@suminiee/FCM-spring-legacy%EC%97%90%EC%84%9C-FCM-%EA%B8%B0%EB%8A%A5-%EA%B5%AC%ED%98%84

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์š”์•ฝ

Spring Legacy์—์„œ FCM ์—ฐ๋™ ๊ณผ์ •์—์„œ ์ž„์˜ ํ† ํฐ์œผ๋กœ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Firebase ํด๋ผ์ด์–ธํŠธ SDK ๊ธฐ๋ฐ˜ ํ† ํฐ ๋ฐœ๊ธ‰์šฉ ์›น ํŽ˜์ด์ง€(get_fcm_token.html + service worker)๋ฅผ ๋งŒ๋“ค์–ด ๋กœ์ปฌ ์„œ๋ฒ„(https:// ๋Œ€์‹  localhost)์—์„œ ์‹คํ–‰ํ•˜์—ฌ ์œ ํšจํ•œ FCM ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์•„ ์ •์ƒ์ ์œผ๋กœ ์•Œ๋ฆผ ์ „์†ก์„ ๊ฒ€์ฆํ–ˆ๋‹ค๋Š” ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์ž…๋‹ˆ๋‹ค.


๐Ÿ‘ฉโ€๐Ÿ’ป ์ตœ์€์„œ

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

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

๐Ÿ”„ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ฐธ์—ฌํ•œ ๋ถ€๋ถ„๋“ค

  • ์ „์ž์˜์ˆ˜์ฆ ๋ฐœ๊ธ‰ ๋ฐ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๋ฆฌ์›Œ๋“œ ์ ๋ฆฝ ๋ฐ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ยท๋™์  ํ•„ํ„ฐ๋ง
  • QA

๐Ÿž ์ด์Šˆ ํŠธ๋ž˜ํ‚น ๊ธฐ๋ก

https://velog.io/@ezzangs/Refit-๋ฐฑ์—”๋“œ-๊ฐœ๋ฐœ-ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์š”์•ฝ

  • DB, Backend ์‹œ์ฐจ ์ˆ˜์ •์„ ์œ„ํ•œ UTC ์‹œ๊ฐ„ ๋ณด์ •
  • ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ฐœ๋ฐœ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์ฟผ๋ฆฌ๋ฌธ์„ ๋„ฃ์–ด ์œ ๋™์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

๐Ÿ‘ฉโ€๐Ÿ’ป ์กฐ๊ฒฝํ™˜

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

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

ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๊ธฐ์ˆ ์ ์ธ ์„ฑ์žฅ๋ฟ ์•„๋‹ˆ๋ผ ํ˜‘์—…, ํŒ€์›Œํฌ์˜ ๊ฐ€์น˜๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฌธ์„œํ™”์™€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ๊นƒ ์ „๋žต์„ ํ†ตํ•ด ํŒ€ ๊ฐœ๋ฐœ ๋ฌธํ™”์˜ ์ค‘์š”์„ฑ์„ ๊นŠ์ด ์ฒด๊ฐํ•œ ๊ฐ’์ง„ ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”„ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ฐธ์—ฌํ•œ ๋ถ€๋ถ„๋“ค

  • ์‚ฌ์žฅ๋‹˜ API(๊ฒฝ๋น„ ์ฒ˜๋ฆฌยท๋ฒ•์นด ์กฐํšŒ) ์ „๋ฐ˜ ๊ตฌํ˜„ ๋ฐ ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ยท๋™์  ํ•„ํ„ฐ๋ง ์ ์šฉ
  • ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฌธ์„œ (WBS/Gantt) ์ž‘์„ฑ
  • ๊ธฐ์ˆ  ๋ช…์„ธ์„œ ์ž‘์„ฑ

๐Ÿž ์ด์Šˆ ํŠธ๋ž˜ํ‚น ๊ธฐ๋ก

https://ghks027.tistory.com/2

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์š”์•ฝ

๋ฐฐํฌ ์„œ๋ฒ„์—์„œ receiptId์™€ receiptProcessId๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ์ €์žฅ๋˜์–ด ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํ”„๋ก ํŠธ์—์„œ๋Š” receiptId๋งŒ ์ „๋‹ฌ, ๋ฐฑ์—”๋“œ๋Š” ์ด๋ฅผ receiptProcessId๋กœ ์˜ค์ธํ•ด ์ž˜๋ชป๋œ ์˜์ˆ˜์ฆ์ด ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋กœ์ปฌ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” ๋‘ ๊ฐ’์ด ์šฐ์—ฐํžˆ ๊ฐ™์•„์„œ ๋ฌธ์ œ๊ฐ€ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋ก ํŠธ ์š”์ฒญ์„ receiptId ๊ธฐ์ค€์œผ๋กœ ํ†ต์ผํ•˜๊ณ  ๋ฐฑ์—”๋“œ์—์„œ ๋งคํ•‘ํ•˜๋„๋ก ๋กœ์ง์„ ์ˆ˜์ •ํ–ˆ๋‹ค.


๐Ÿ”ฅ ๊น€์—ฐํ›„

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

์ฒซ ๋ฒˆ์งธ ์‹ค์ „ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ์„œ ๋งŽ์€ ์‹ค๋ฌด ๊ฒฝํ—˜๊ณผ ๊ธฐ์ˆ ์ ์ธ ์„ฑ์žฅ์„ ์ด๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ,ย ์„ฑํ–ฅ์ด ๋‹ค์–‘ํ•œ ์—ฌ๋Ÿฌ ํŒ€์›๊ณผ ํ˜‘์—…ํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰๋˜๋‹ค ๋ณด๋‹ˆ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋Šฅ๋ ฅ๊ณผ ํ˜‘์—…์— ๋Œ€ํ•œ ์ดํ•ด๋„ ํ•จ๊ป˜ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ ์ด ํŠนํžˆ ์˜๋ฏธ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ Refit ํŒ€์—์„œ ๋ณ‘์› ์˜์ˆ˜์ฆ์˜ ์ „๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ๊ณผ ์‹ค์† ๋ณดํ—˜ ์ฒญ๊ตฌ, ์˜์ˆ˜ ์ฒ˜๋ฆฌ ์š”์ฒญ ๋“ฑ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋ฉด์„œ, ์‚ฌ์šฉ์ž๊ฐ€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฒฝํ—˜์ด ์ธ์ƒ ๊นŠ์—ˆ์Šต๋‹ˆ๋‹ค.ย 

๋‹จ์ˆœํžˆ ๊ธฐ์ˆ ์ ์ธ ๋ถ€๋ถ„๋งŒ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ณ ๋ คํ•˜๋ฉฐ ํŒ€์›๋“ค๊ณผ ํ™œ๋ฐœํžˆ ์†Œํ†ตํ•˜๊ณ  ๋จธ๋ฆฌ๋ฅผ ๋งž๋Œ€๋ฉฐ ๊ณ ๋ฏผํ•˜๋ฉฐ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ”๋˜ ๊ฒฝํ—˜์˜ ์‹œ๊ฐ„๋“ค์ด ์ €์—๊ฒŒ๋Š” ํฐ ์„ฑ์žฅ ๋™๋ ฅ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (refitํŒ€์›๋“ค ๋‹ค๋“ค ๋„ˆ๋ฌด ๊ฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!๐Ÿ˜Š)

๐Ÿ”„ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ฐธ์—ฌํ•œ ๋ถ€๋ถ„๋“ค

  • ๊ตฌ๋งค ํ•ญ๋ชฉ ์นดํ…Œ๊ณ ๋ฆฌ ๊ธฐํš ๋ฐ ์ •๋ฆฌ
  • ํ”„๋กœ์ ํŠธ ํšŒ์˜ ๋‚ด์šฉ ์ •๋ฆฌ ๋ฐ ๋ฌธ์„œํ™”
  • ๋ณ‘์› ์˜์ˆ˜์ฆ API (๋ชฉ๋ก ์กฐํšŒ, ์ƒ์„ธ ์กฐํšŒ, ๋ณดํ—˜์‚ฌ ์กฐํšŒ, ์„ธ๋ถ€์‚ฐ์ •๋‚ด์—ญ ํŒŒ์ผ๋ช… ์กฐํšŒ)โ€จ
    ์ „๋ฐ˜ ๊ตฌํ˜„ ๋ฐ ์ปค์„œ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜ยท๋™์  ํ•„ํ„ฐ๋ง ์ ์šฉ
  • ์‹ค์† ๋ณดํ—˜ ์ฒญ๊ตฌ ์š”์ฒญ API ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์˜์ˆ˜ ์ฒ˜๋ฆฌ API ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • OpenAPI ๊ธฐ๋ฐ˜ ์‚ฌ์—…์ž ์ง„์œ„ ํ™•์ธ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
  • try-catch ๊ธฐ๋ฐ˜ ํ†ตํ•ฉ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ ์šฉ
  • ๋ณ‘์› ์˜์ˆ˜์ฆ(๋ณดํ—˜ ์ฒ˜๋ฆฌ) ๋ฐ ์˜์ˆ˜ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ JUnit5 ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

๐Ÿž ์ด์Šˆ ํŠธ๋ž˜ํ‚น ๊ธฐ๋ก

https://velog.io/@rladusgn3/%EC%82%AC%EC%97%85%EC%9E%90-%EC%A7%84%EC%9C%84%ED%99%95%EC%9D%B8-%EB%A1%9C%EC%A7%81-%EA%B0%9C%EC%84%A0-Insert-%EA%B8%B0%EB%B0%98%EC%97%90%EC%84%9C-%EC%A1%B0%ED%9A%8C-%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C-%EC%A0%84%ED%99%98

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ์š”์•ฝ

๊ตญ์„ธ์ฒญ OpenAPI ์‚ฌ์—…์ž ์ง„์œ„ ํ™•์ธ ๊ธฐ๋Šฅ์—์„œ ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์‚ฝ์ž…๊ณผ ๋กœ์ง ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์›์ธ์€ Insert ์ค‘์‹ฌ ์„ค๊ณ„, DTO ํƒ€์ž… ๋ถˆ์ผ์น˜, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ถ€์กฑ์ด์—ˆ์œผ๋ฉฐ, ํ•ด๊ฒฐ์ฑ…์€ Insert ๋กœ์ง ์ œ๊ฑฐ ํ›„ ์กฐํšŒ ๊ธฐ๋ฐ˜ ๊ฒ€์ฆ์œผ๋กœ ์ „ํ™˜, DTO ์ผ๊ด€์„ฑ ์œ ์ง€, ๋ฐฉ์–ด์  ์ฝ”๋”ฉ ์ ์šฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ํ™•๋ณด์™€ ์ฝ”๋“œ-DB ๋™๊ธฐํ™”์˜ ์ค‘์š”์„ฑ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

About

๐Ÿงพ ์ข…์ด๋ณด๋‹ค ๋””์ง€ํ„ธ, ๋ฒˆ๊ฑฐ๋กœ์›€ ๋Œ€์‹  KB Re:fit!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages