본문 바로가기

GD's IT Lectures : 기초부터 시리즈/스프링부트(Spring Boot) 기초부터 ~31

[스프링 부트(SpringBoot) : 중급] 성능 최적화 및 모니터링 도구 8. 성능 최적화 및 모니터링 도구 8.1. 애플리케이션 성능 모니터링 애플리케이션 성능 모니터링(APM)은 애플리케이션의 성능을 실시간으로 모니터링하고 분석하는 도구입니다. 스프링 부트 애플리케이션에서는 다양한 APM 도구를 사용할 수 있으며, 이 중에서 인기 있는 몇 가지 도구는 다음과 같습니다. Spring Boot Actuator: 스프링 부트 애플리케이션의 상태를 모니터링하고 관리하는 데 사용되는 모듈입니다. Actuator를 사용하면 애플리케이션의 상태, 메트릭, 빈, 스레드 등을 확인할 수 있습니다. // pom.xml org.springframework.boot spring-boot-starter-actuator Micrometer: 스프링 부트와 함께 사용할 수 있는 애플리케이션 메트릭 .. 2023. 5. 5.
[스프링 부트(SpringBoot) : 중급] 클라우드 환경에서의 배포 7. 클라우드 환경에서의 배포 7.1. 도커를 사용한 컨테이너화 및 배포 도커(Docker)는 애플리케이션과 의존성을 패키지화하는 데 사용되는 컨테이너 플랫폼입니다. 도커를 사용하여 애플리케이션을 컨테이너로 패키지화하면, 동일한 환경에서 어디서나 실행할 수 있습니다. 먼저 Dockerfile을 작성해야 합니다. FROM openjdk:8-jdk-alpine ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] 위 Dockerfile을 프로젝트 루트에 작성한 다음, 터미널에서 다음 명령어를 실행하여 도커 이미지를 빌드하고 실행합니다. $ docker build -t my-spring-boot-app ... 2023. 5. 5.
[스프링 부트(SpringBoot) : 중급] 테스트 전략 및 심화 6. 테스트 전략 및 심화 6.1. 테스트 주도 개발(TDD) 테스트 주도 개발(Test-Driven Development, TDD)은 테스트를 중심으로 개발하는 방식으로, 테스트 케이스를 먼저 작성한 후 코드를 작성합니다. 이를 통해 코드 품질 향상과 버그 감소에 도움이 됩니다. [TDD의 주요 단계] 실패하는 테스트 케이스 작성 : 먼저 테스트 케이스를 작성하여 실패하게 합니다. 테스트를 통과할 수 있는 최소한의 코드 작성 : 테스트를 통과할 수 있도록 최소한의 코드를 작성합니다. 코드를 리팩토링하면서 개선 : 테스트를 통과한 코드를 개선하고 리팩토링합니다. 예제 코드 (계산기 서비스 TDD) // CalculatorTest.java @RunWith(SpringRunner.class) @SpringB.. 2023. 5. 5.
[스프링 부트(SpringBoot) : 중급] 스프링 시큐리티를 활용한 보안 강화 5. 스프링 시큐리티를 활용한 보안 강화 5.1. 비밀번호 저장 전략 비밀번호 저장 전략은 사용자의 비밀번호를 안전하게 저장하기 위한 방법입니다. 애플리케이션에 저장되는 비밀번호는 해싱(hash)과 솔트(salt)를 이용하여 암호화되어 저장됩니다. 해싱: 비밀번호를 일정한 길이의 문자열로 변환하는 알고리즘입니다. 해싱을 통해 원본 비밀번호를 유추하기 어렵게 만듭니다. SHA-256, BCrypt, SCrypt 등 다양한 해싱 알고리즘이 존재합니다. 솔트: 해싱 과정에서 사용되는 무작위 문자열로, 같은 비밀번호라도 솔트 값이 다르면 다른 해시 값이 생성됩니다. 이를 통해 무차별 대입 공격(brute force attack)을 방어합니다. 예제 코드 (비밀번호 저장 전략 설정) @Configuration p.. 2023. 5. 5.
[스프링 부트(SpringBoot) : 중급] RESTful API 개발 심화 4. RESTful API 개발 심화 4.1. API 버전 관리 API 버전 관리는 API의 변경사항을 추적하고 호환성 문제를 최소화하기 위한 중요한 전략입니다. 사용자들이 서로 다른 버전의 API를 사용할 수 있게 하여 안정성을 높입니다. 주로 URL이나 헤더를 사용하여 버전 정보를 전달합니다. 예제 코드 (URL에 버전 정보 추가) @RestController @RequestMapping("/api/v1/users") public class UserControllerV1 { // V1 버전의 사용자 관련 API 구현 } @RestController @RequestMapping("/api/v2/users") public class UserControllerV2 { // V2 버전의 사용자 관련 API .. 2023. 5. 5.
[스프링 부트(SpringBoot) : 중급] 웹 개발 심화 3. 웹 개발 심화 3.1. 예외 처리 스프링 부트에서는 예외 처리를 위해 @ExceptionHandler, @ControllerAdvice 및 @ResponseStatus 어노테이션을 사용할 수 있습니다. 이를 사용하면 애플리케이션 전체에서 발생하는 예외를 쉽게 처리할 수 있습니다. @ExceptionHandler는 특정 예외 클래스에 대해 예외 처리 로직을 작성할 수 있도록 해주며, @ControllerAdvice는 컨트롤러 전체에 걸쳐 예외 처리 로직을 적용할 수 있도록 해줍니다. @ResponseStatus는 예외 발생 시 반환할 HTTP 상태 코드를 지정할 수 있습니다. 예제 코드 @ControllerAdvice public class GlobalExceptionHandler { @Excepti.. 2023. 5. 5.