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

๐Ÿ’Š Java & Kotlin & Spring53

[Spring Cloud Gateway] Custom Filter ๋กœ ๊ฐ„๋‹จํ•œ Authentiction ํ•„ํ„ฐ ๋งŒ๋“ค๊ณ  ์ธ์ฆ ์ฒ˜๋ฆฌํ•˜๊ธฐ ํ•ด๋‹น ๊ธ€์€ Spring Cloud Gateway ์˜ Built-in Route๋กœ Predicates์™€ Filter ์กฐ์ž‘ํ•˜๊ธฐ) ์— ์˜์กดํ•˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ์‹ค์Šต ํ™˜๊ฒฝ์„ ๋”ฐ๋ผํ•˜์‹œ๋ ค๋ฉด ์ด์ „ ๊ธ€์„ ํ™•์ธํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ธ€์—์„œ๋Š” ๋ชจ๋“  ์ธ์ฆ ๊ณผ์ • (jwt ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ณ  payload ์— ๊ฐ’์„ ๋„ฃ๋Š” ์‹ค์ œ ๊ตฌํ˜„)์€ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์˜ ๋ชฉ์ ์€ Gateway ์—์„œ Custom Filter ๋งŒ๋“ค์–ด์„œ ํ† ํฐ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ „์ฒด์ ์ธ ํฐ ๊ทธ๋ฆผ๋งŒ ๋ณด์—ฌ์ฃผ๋ ค ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๋ ค ํ•œ๋‹ค๋ฉด ์ฐธ๊ณ ๋งŒ ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋ชฉ์ฐจ Custom Filter AbstractGatewayFilterFactory ์ƒ์†๊ณผ apply ์žฌ์ •์˜ ๊ฒ€์ฆํ•˜๊ธฐ Custom Filter ์ง€๋‚œ ์‹œ๊ฐ„๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” Spring Cloud Gateway๊ฐ€ ๊ธฐ.. 2021. 4. 25.
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.