๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

IT32

Spring Boot์™€ ๋กœ๊น…(Logging) ์™„๋ฒฝ ๊ฐ€์ด๋“œ: Logback, Log4j2 ์„ค์ • ๋ฐ ๋กœ๊ทธ ๊ด€๋ฆฌ ์ „๋žต ๋กœ๊น…(Logging) ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. Spring Boot ๋Š” ๋‹ค์–‘ํ•œ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ณ  ๋ฌธ์ œ ํ•ด๊ฒฐ ์— ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Logback๊ณผ Log4j2์˜ ์„ค์ • ๋ฐฉ๋ฒ• , ๋กœ๊ทธ ํŒŒ์ผ ๊ด€๋ฆฌ ์ „๋žต , ๊ทธ๋ฆฌ๊ณ  ๋กœ๊ทธ ํ•„ํ„ฐ๋ง๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ๋ฒ• ์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.   ๋ชฉ์ฐจ Spring Boot์˜ ๋กœ๊น… ๊ฐœ์š” Logback vs. Log4j2: ์–ด๋–ค ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ• ๊นŒ? ๋กœ๊ทธ ํŒŒ์ผ ๊ด€๋ฆฌ ์ „๋žต๊ณผ ์„ค์ • ๋ฐฉ๋ฒ• ๋กœ๊ทธ ํ•„ํ„ฐ๋ง ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ๋ฒ• ๋กœ๊น…์˜ ์ค‘์š”์„ฑ๊ณผ ์ตœ์‹  ํŠธ๋ Œ๋“œ   1. Spring Boot์˜ ๋กœ๊น… ๊ฐœ์š”Spring Boot๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Logback์„ ๋‚ด์žฅ ํ•˜๊ณ  ์žˆ์–ด, ๋ณ„๋„์˜ ์„ค์ • ์—†.. IT 2024. 10. 21.
์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: @Async์™€ CompletableFuture ํ™œ์šฉ๋ฒ• ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. Spring Boot ์—์„œ๋Š” @Async ์™€ CompletableFuture ๋ฅผ ์‚ฌ์šฉํ•ด ๋น„๋™๊ธฐ ๋ฉ”์„œ๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋น„๋™๊ธฐ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• , CompletableFuture ๋กœ ๋น„๋™๊ธฐ ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ , ๊ทธ๋ฆฌ๊ณ  ๋น„๋™๊ธฐ ์ž‘์—…์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ „๋žต ๊นŒ์ง€ ์ƒ์„ธํžˆ ๋‹ค๋ฃน๋‹ˆ๋‹ค.   ๋ชฉ์ฐจ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? @Async์™€ ๋น„๋™๊ธฐ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„ํ•˜๊ธฐ CompletableFuture๋ฅผ ์ด์šฉํ•œ ๋น„๋™๊ธฐ ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ ๋น„๋™๊ธฐ ์ž‘์—… ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ „๋žต ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ํŠธ๋ Œ๋“œ์™€ ์žฅ์    1. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ž€ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ .. IT 2024. 10. 21.
Spring Boot์—์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ, MockMvc ํ™œ์šฉ๋ฒ• Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ํ•„์ˆ˜์ ์ธ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋ณด์žฅ ํ•˜๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ์กฐ๊ธฐ์— ๋ฐœ๊ฒฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์˜ ์ฐจ์ด , @SpringBootTest ์™€ MockBean ์‚ฌ์šฉ๋ฒ• , ๊ทธ๋ฆฌ๊ณ  MockMvc๋ฅผ ํ™œ์šฉํ•œ REST API ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.   ๋ชฉ์ฐจ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์˜ ์ฐจ์ด @SpringBootTest์™€ MockBean ํ™œ์šฉ๋ฒ• MockMvc๋กœ REST API ํ…Œ์ŠคํŠธํ•˜๊ธฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์ค‘์š”์„ฑ๊ณผ ํŠธ๋ Œ๋“œ ํ…Œ์ŠคํŠธ ์˜ˆ์ œ ์ฝ”๋“œ์™€ ์‹คํ–‰ ๊ฒฐ๊ณผ   1. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์˜ ์ฐจ์ดํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ํฌ๊ฒŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test) .. IT 2024. 10. 21.
Spring Boot์™€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: ๊ธ€๋กœ๋ฒŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ „๋žต๊ณผ ์ปค์Šคํ…€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๊ตฌํ˜„ Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋Š” ์—๋Ÿฌ ์ฒ˜๋ฆฌ(์˜ˆ์™ธ ์ฒ˜๋ฆฌ) ์ž…๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ ์šฉํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณต ํ•˜๊ณ , ์„œ๋น„์Šค์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” @ControllerAdvice ์™€ @ExceptionHandler ๋ฅผ ํ™œ์šฉํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ , ๊ธ€๋กœ๋ฒŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ „๋žต , ๊ทธ๋ฆฌ๊ณ  API ์‘๋‹ต์— ์ปค์Šคํ…€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.   ๋ชฉ์ฐจ Spring Boot ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ๊ธฐ๋ณธ ๊ฐœ๋… @ControllerAdvice ์™€ @ExceptionHandler ๋ฅผ ํ™œ์šฉํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ธ€๋กœ๋ฒŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ „๋žต API ์‘๋‹ต์— ์ปค์Šคํ…€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌํ•˜๊ธฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ.. IT 2024. 10. 21.
์Šคํ”„๋ง ๋ถ€ํŠธ์™€ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ํ†ตํ•ฉ: JWT์™€ OAuth2๋กœ ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ๊ตฌํ˜„ํ•˜๊ธฐ ์Šคํ”„๋ง ๋ถ€ํŠธ(Spring Boot) ์™€ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ(Spring Security) ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ธ์ฆ(Authentication) ๊ณผ ์ธ๊ฐ€(Authorization) ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๊ฐœ๋… ์„ ์„ค๋ช…ํ•˜๊ณ , JWT(Json Web Token)๋ฅผ ํ™œ์šฉํ•œ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ์™€ OAuth 2.0์„ ์ด์šฉํ•œ ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.   ๋ชฉ์ฐจ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๊ฐœ๋… JWT๋ฅผ ํ™œ์šฉํ•œ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ OAuth 2.0 ๋กœ๊ทธ์ธ ๊ตฌํ˜„ํ•˜๊ธฐ ์ธ์ฆ๊ณผ ์ธ๊ฐ€์˜ ์ตœ์‹  ํŠธ๋ Œ๋“œ์™€ ์ค‘์š”์„ฑ JWT์™€ OAuth 2.0 ์˜ˆ์ œ ์ฝ”๋“œ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•   1. ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๊ฐœ๋… ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œ.. IT 2024. 10. 21.