๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ’Š Java & Kotlin & Spring/- spring framework +39

Spring Cloud Gateway ์—์„œ Built-in Route๋กœ Predicates์™€ Filter ์กฐ์ž‘ํ•˜๊ธฐ ํ•ด๋‹น ๊ธ€์€ SGC๋ฅผ ์ด์šฉํ•ด API Gateway๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  Eureka Server ๋ฅผ ์ด์šฉํ•ด Load Balancing ํ•˜๊ธฐ) ์— ์˜์กดํ•˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ์‹ค์Šต ํ™˜๊ฒฝ์„ ๋”ฐ๋ผํ•˜์‹œ๋ ค๋ฉด ์ด์ „ ๊ธ€์„ ํ™•์ธํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋ชฉ์ฐจ Spring Cloud Gateway Routes, Predicates, Filters Route Predicates Built-in Factories ์‚ฌ์šฉํ•˜๊ธฐ After Cookie Method Path Route Filters AddRequestHeader, AddResponseHeader AddRequestParameter RewritePath Spring Cloud Gateway ์—์„œ๋Š” Predicates์™€ Filter๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ application.yml ์„ ์ด์šฉํ•œ short.. 2021. 4. 24.
[Spring Boot] ํ„ฐ๋ฏธ๋„์—์„œ ๋นŒ๋“œ ํˆด (Maven, Gradle)๋กœ Spring Boot ์‹คํ–‰์‹œํ‚ค๊ธฐ ์˜ค๋Š˜์€ ํ„ฐ๋ฏธ๋„์—์„œ Springboot Application ์„ ์‹คํ–‰์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. ํ˜„์žฌ Microservice Application ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฃผ๋กœ Eureka์™€ Gateway ๋ฅผ ํ•จ๊ป˜ ๋™์ž‘์‹œํ‚ค๋Š” ์ผ์ด ๋งŽ์•„์กŒ๋‹ค. Service Discovery ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” Eureka ์„œ๋ฒ„๋Š” ๋‹จ์ง€ ์„œ๋น„์Šค์˜ Registry์™€ Discovery ์ƒํ™ฉ์—์„œ ์ผœ๋†“๊ณ ๋งŒ ์žˆ์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด์„œ๋Š” Eureka ์„œ๋ฒ„์™€ Gateway ๋ฅผ Intellij ์—์„œ ์ผœ๋†“๋Š” ๊ฒƒ์ด ๋Œ€๋‹ค์ˆ˜์ด๋‹ค. ํ•˜์ง€๋งŒ Intellij ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ ์žˆ๋Š” ์กฐ๊ธˆ ๋ฌด๊ฑฐ์šด IDE ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น PC์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŽ์ด ๋จน์–ด ๋ถˆํŽธํ•œ ์ƒํ™ฉ์ด ์ด๋งŒ์ €๋งŒ์ด ์•„๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ ๋งŽ์€ ํ•ด๊ฒฐ ๋ฐฉ.. 2021. 4. 24.
Spring Cloud Gateway ๋ฅผ ์ด์šฉํ•ด API Gateway๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ค์Šตํ•ด๋ณด์ž (Eureka Server ๋ฅผ ์ด์šฉํ•ด Load Balancing ํ•˜๊ธฐ) ํ•ด๋‹น ๊ธ€์€ Spring Cloud Netflix Eureka์— ์˜์กดํ•˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ์‹ค์Šต ํ™˜๊ฒฝ์„ ๋”ฐ๋ผํ•˜์‹œ๋ ค๋ฉด Eureka ๊ธ€์„ ํ™•์ธํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋ชฉ์ฐจ Gateway Pattern Gateway๊ฐ€ ๋„์ž…๋˜๋ฉด? Spring Cloud Gateway Gateway๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ• Gateway ๋‚ด๋ถ€ ๊ตฌ์กฐ ์‹ค์Šตํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ ์˜์กด์„ฑ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์—ฐ๊ฒฐํ•˜๊ธฐ Eureka Server ์—์„œ ๊ฐ๊ฐ ์ธ์Šคํ„ด์Šค ์ •๋ณด๋ฅผ ๋ฐ›์•„ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ํ•˜๊ธฐ Gateway Pattern Microservice ์—์„œ Gateway ํŒจํ„ด์€ ๊ฐ€์žฅ ํ”ํ•˜๊ณ  ์œ ์šฉํ•˜๊ฒŒ ์“ฐ๋Š” ํŒจํ„ด ์ค‘ ํ•˜๋‚˜์ด๋‹ค. Spring Cloud์™€ ๋ณ„๊ฐœ๋กœ Gateway ํŒจํ„ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์‚ฌํ•ญ์€ MSA์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ - API Gateway ํŒจํ„ด ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .. 2021. 4. 24.
[Spring Cloud] Service Discover Server๋กœ Netflix Eureka ์ด์šฉํ•˜๊ธฐ Spring Cloud Netflix ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ๋„ทํ”Œ๋ฆญ์Šค๋Š” Spring Boot Application ์— ๋Œ€ํ•œ ํ†ตํ•ฉ ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ์ง€์›ํ•˜๋Š” Netflix์˜ OSS ์„œ๋น„์Šค์ด๋‹ค. Netflix๋Š” 2007๋…„ ์‹ฌ๊ฐํ•œ DB์†์ƒ์œผ๋กœ 3์ผ๊ฐ„ ์„œ๋น„์Šค ์žฅ์• ๋ฅผ ๊ฒผ์—ˆ๋Š”๋ฐ, ์ด์— ์šด์˜์ง„๋“ค๊ณผ ๊ธฐ์ˆ  ๋ฆฌ๋”๋“ค์€ ์‹ ๋ขฐ์„ฑ ๋†’๊ณ  ์ˆ˜ํ‰ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•œ Cloud System์œผ๋กœ ์ด์ „์„ ํ•ด์•ผ ํ•จ์„ ๋Š๊ผˆ์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ MSA๋ฅผ 7๋…„๋งŒ์— ์™„๋ฒฝํ•˜๊ฒŒ ์ด์ „ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ์ด ๋•Œ ์Œ“์€ ๊ฒฝํ—˜์น˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ MSA ๊ธฐ์ˆ ์„ Spring์—๊ฒŒ ์˜คํ”ˆ์†Œ์Šค๋กœ ํ’€๊ฒŒ ๋˜์—ˆ๋‹ค. Netflix OSS ์™€ Spring Cloud Netflix Netflix OSS ์—๋Š” ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋“ค์ด ์กด์žฌํ•œ๋‹ค. Eureka : Discovery Server ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค.. 2021. 4. 24.
[Spring Boot] JUnit5 BDDMockito๋กœ ์•Œ์•„๋ณด๋Š” TDD์™€ BDD ์˜ ์ฐจ์ด ๋ฐ BDD ์‹ค์Šต ๋ชฉ์ฐจ TDD ๋ž€? TDD ๋ž€? TDD ์˜ˆ์ œ BDD ๋ž€? BDD ๋ž€? BDD ์˜ˆ์ œ TDD vs BDD TDD์™€ BDD์˜ ํ•œ ํ‘œ ์š”์•ฝ BDDMockito๋ฅผ ์ด์šฉํ•œ BDD ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑ Mockito vs BDD Mockito Stubbing given any() anyString() anyLong() willReturn() will() willThrow() ๋ณธ ์ฃผ์ œ๋ฅผ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Java์™€ JUnit5์™€ BDDMockito ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์˜์กด์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ง€๊ธˆ๊นŒ์ง€ ๋Š๋‚€ ๊ฐ€์žฅ ํฐ ๋ณ€ํ™”๊ฐ€ ๋‚˜์—๊ฒŒ๋Š” TDD๊ฐ€ ์•„๋‹๊นŒ ์‹ถ๋‹ค. ์šฐ์—ฐํ•œ ๊ธฐํšŒ์— TDD๋ฅผ ์Šค์Šค๋กœ ๋„์ž…ํ•˜์˜€์„ ๋•Œ, ๋‚ด๊ฐ€ ๋“ค์—ˆ๋˜ ์ฒซ ์ƒ๊ฐ์€ ๋„ˆ๋ฌด ๊ท€์ฐฎ์€๋ฐ,... ์ด๋ ‡๊ฒŒ ํ•˜๋‹ค๊ฐ€ ์–ธ์ œ ๋๋‚ด์ง€...? ์ด๊ฑฐ ๊ทธ๋ƒฅ ํ…Œ์ŠคํŠธ ์•ˆ ์งœ๊ณ  ๋ฐ”๋กœ ํ•  .. 2021. 4. 22.
[JUnit 5] @ParameterizeTest ๋กœ ํ•˜๋‚˜์˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ํ…Œ์ŠคํŠธํ•˜๊ธฐ (Springboot + ControllerAdvice, ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฒ€์ฆ) ์˜ค๋Š˜์€ JUnit5 ์˜ @ParameterizedTest ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ•„์š” ๊ธฐ์ˆ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. SpringBoot 2. JUnit 5 Validation ControllerAdvice ์ด์™€ ๊ฐ™์€ DTO ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. @NotBlank๋‚˜ @Size๋‚˜ @Email ์€ ๋ชจ๋‘ validation ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ๋งŒ์•ฝ ์ด ์ž…๋ ฅ ๊ฐ’๋“ค ์ค‘์—์„œ ํ•ด๋‹น constraint๋ฅผ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•œ๋‹ค๋ฉด MethodArgumentNotValidException ์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ๊ทธ๋Ÿผ ControllerAdvice๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๋‹น ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์„ ๋•Œ ErrorResponse๋ฅผ ์‘๋‹ตํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์–ด๋ณด์ž. ControllerErrorAdvice.class @ResponseBod.. 2021. 4. 19.