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

Spring Boot/๊ฐœ๋ฐœ ๊ธฐ๋ก7

Spring Boot ๋ฌด์ค‘๋‹จ ๋ฐฐํฌํ•˜๊ธฐ (AWS ec2 + Nginx + Github self -hosted runner) ๋“ค์–ด๊ฐ€๋ฉฐ ์‹ค๋ฌด์— ์ ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ ๊ฐ„๋‹จํ•œ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฐํฌ ๋ฐฉ์‹์€ Github Action์„ ์ด์šฉํ•ด ๋ธŒ๋žœ์น˜๊ฐ€ ํ‘ธ์‹œ๋˜๋ฉด ๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ๋„์šฐ๋Š” ๋ฐฉ์‹์ผ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๊ณ  ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ๋„์šฐ๋Š” ์‚ฌ์ด์— ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋Ÿฌํ•œ ์ค‘๋‹จ ์—†์ด ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ๋ฅผ ํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Blue/Green ๋ฐฐํฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค. Blue/Green ๋ฐฐํฌ ๋ฐฉ์‹์€ ์˜›๋‚  ๋ฒ„์ „์œผ๋กœ ์‹คํ–‰์ค‘์ธ WAS๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น WAS๋ฅผ ์ข…๋ฃŒ์‹œํ‚ค์ง€ ์•Š์€ ์ฑ„ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ WAS๋ฅผ ๊ตฌ๋™์‹œํ‚จ๋‹ค. ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ๋™๋˜์—ˆ๋‹ค๋ฉด Nginx๊ฐ€ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ WAS๋ฅผ ๋ฐ”๋ผ๋ณด๊ฒŒ .. 2024. 3. 11.
Spring Boot์™€ Spring Security ํ”„๋กœ์ ํŠธ์— Swagger ์ ์šฉํ•˜๊ธฐ ์ด๊ธ€์˜ ๋ชฉ์ ์€ ํ”„๋กœ์ ํŠธ API ๊ฐœ๋ฐœ์„ ์–ด๋Š์ •๋„ ๋งˆ์น˜๊ณ  Swagger๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ ์šฉํ•˜๊ธฐ์— ์•ž์„œ ์ด ํ”„๋กœ์ ํŠธ๋Š” Spring Boot 2.6.2์™€ Spring Security๊ฐ€ ์ ์šฉ๋˜์—ˆ๋‹ค. 1. build.gradle์— ์˜์กด์„ฑ ์ถ”๊ฐ€ //for Swagger implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' 2. SwaggerConfig ํด๋ž˜์Šค ์ƒ์„ฑ config ํŒจํ‚ค์ง€ ๋‚ด์— SwaggerConfig ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•ด์ค€ ๋’ค ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ.. 2022. 6. 10.
[Spring Security] JWT Tutorial (5) ํšŒ์›๊ฐ€์ž…, ๊ถŒํ•œ ๊ฒ€์ฆ SecurityUtil ํด๋ž˜์Šค ์ƒ์„ฑ package com.oliviarla.tutorial.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import java.util.Optional; public class SecurityUtil { private static final Logger logger.. 2022. 4. 28.
[Spring Security] JWT Tutorial (4) Repository ์ƒ์„ฑ, ๋กœ๊ทธ์ธ DTO ๊ณ„์ธต ์ƒ์„ฑ LoginDto package com.oliviarla.tutorial.dto; import lombok.*; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class LoginDto { @NotNull @Size(min = 3, max = 50) private String username; @NotNull @Size(min = 3, max = 100) private String password; } TokenDto package com.oliviarla.. 2022. 4. 28.
[Spring Security] JWT Tutorial (3) JWT ์ฝ”๋“œ, Security ์„ค์ • ์ถ”๊ฐ€ application.properties jwt.header=Authorization jwt.secret=4oCYb2xpdmlhcmxhLXNwcmluZy1ib290LWp3dC10dXRvcmlhbC1zZWNyZXQtb2xpdmlhcmxhLXNwcmluZy1ib290LWp3dC10dXRvcmlhbC1zZWNyZXTigJkK jwt.token-validity-in-seconds=86400 secret ํ•ญ๋ชฉ์€ ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด๋กœ secret key๋ฅผ base64๋กœ ์ธ์ฝ”๋”ฉํ•ด ์ฑ„์›Œ๋„ฃ์Œ echo ‘silvernine-tech-spring-boot-jwt-tutorial-secret-silvernine-tech-spring-boot-jwt-tutorial-secret’|base64 build.gradle compileOn.. 2022. 4. 28.
[Spring Security] JWT Tutorial (2) Security ์„ค์ •, Data ์„ค์ • - 401 unauthorized ํ•ด๊ฒฐ์„ ์œ„ํ•œ Security ์„ค์ • - Datasuorce, JPA ์„ค์ • - Entity ์ƒ์„ฑ - H2 Console ๊ฒฐ๊ณผ ํ™•์ธ SecurityConfig ํด๋ž˜์Šค ์ƒ์„ฑ config ํŒจํ‚ค์ง€ ๋‚ด์— ์ƒ์„ฑ package com.oliviarla.tutorial.config; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web... 2022. 4. 28.