Dev/Spring Framework14 『Spring Cloud』 리전에 따라 경로에 차이가 생기면 어떻게 해결할까? 잠깐 도와주러 들어간 프로젝트에서 한국 리전에서만 서비스를 운영하다가 VM 생성과 관련된 특정 기능은 미국 리전에서도 동시에 운영하고 싶다는 요구를 들었다. 기존 API Gateway를 통해 라우팅 되는 방식은 /vms/..., /lb/..., /os/... 이런 식으로 서비스 기준으로 설정했다. 프론트엔드에서 VM 생성 관련 기능에만 prefix를 붙여서 요청을 보내기에는 공수가 꽤 클 걸로 예상을 했고, 이에 따라 모든 기능에 대해 공통된 prefix를 붙여서 요청을 보내면 Gateway 기능을 통해 경로를 재작성해 라우팅 하는 방법을 선택했다. 핵심은 아래와 같다./vms 및 /sas/vms 경로를 각각 다른 포트(서버)로 라우팅 한다.여러 리전에서 제공하지 않는 /sas/lb, /sas/os 기능.. 2025. 1. 27. 『Spring Boot』 선언적 트랜잭션(Declarative Transaction) 선언적 트랜잭션 (Declarative Transaction)에 대해 알아보기 전에 트랜잭션과 비교를 한번 해보자. 선언적 트랜잭션 설정 파일이나 어노테이션을 통해 코드에 트랜잭션 로직을 직접 작성하지 않고 선언적으로 트랜잭션을 처리하는 방식. 트랜잭션 Java 코드 내에서 트랜잭션 관리 객체를 직접 사용하여 트랜잭션 시작, 커밋, 롤백을 명시적으로 관리하는 방식. 간단하게 말하자면 선언적 트랜잭션을 사용하면 PlatformTransactionManager와 TransactionTemplate을 사용하여 코드로 트랜잭션을 제어하는 귀찮은 작업을 하지 않아도 된다. 물론 복잡한 트랜잭션 제어가 필요한 상황이라면 @Transactional 어노테이션에서 지원해 주는 다양한 속성들을 활용해야 되지만 말.. 2025. 1. 12. 『Spring Boot』 application.yml과 Profile 전 프로젝트에서는 "Profile 별로 모든 설정"을 각각 관리했는데 이번 프로젝트에서는 "공통 설정 + Profile별 설정"을 분리해서 관리한다. 프로젝트마다 환경을 다루는 방법에 차이가 존재하는데 이번 기회에 "공통 설정 + Profile별 설정"에 대해 알아볼 겸 정리하려 해 본다. application.yml과 Profileapplication.yml 혹은 application.properties는 Spring Boot 애플리케이션 구동 시 자동으로 로드되는 구성 파일이다.Key-Value 혹은 yml 포맷을 통해 애플리케이션에서 사용할 설정 값을 정의한다. 설정 값 예시 서버 포트 DB 접속 정보 로그 레벨 설정 외부 API Token 정보 application-{profile}.y.. 2024. 12. 28. 『Spring Batch』 스프링 배치 반복 및 오류 제어 Repeat Spring Batch는 얼마나 작업을 반복해야 하는지 알려 줄 수 있는 기능을 제공한다. 특정 조건이 충족될 때까지 Job 또는 Step을 반복하도록 설정할 수 있으며, 스프링 배치에서는 Step의 반복과 Chunk 반복을 RepeatOperation을 사용해서 처리하고 있다. 기본 구현체로는 RepeatTemplate를 제공한다. 반복을 종료할 것인지 여부를 결정하는 세 가지 항목 RepeatStatus스프링 배치의 처리가 끝났는지 판별하기 위한 열거형(enum)CONTINUABLE: 작업이 남아 있음FINISHED: 더 이상의 반복 없음CompletionPolicyRepeatTemplate의 iterate 메소드 안에서 반복을 중단할지 결정한다.실행 횟수 또는 완료 시기, 오류 발생.. 2024. 12. 10. 『Spring Batch』 스프링 배치 메타 데이터 스키마 스프링 배치의 실행 및 관리를 위한 목적으로 여러 도메인들(Job, Step, JobParameters..)의 정보들을 저장, 업데이트, 조회할 수 있는 메타 데이터를 스키마로 제공한다. 데이터베이스와 연동할 경우 필수적으로 메타 테이블이 생성되어야 하는데 이와 관련된 스키마 설정을 우선 알아보자. 스키마 생성 설정 스프링 배치 메타데이터 스키마를 사용하는 예제 코드 및 예시를 보자. Gradle 의존성 application.yaml Java Config 1. yaml에서 설정한 initialize-schema=ALWAYS 설정으로 인해 애플리케이션 시작 시 스프링 배치에 필요한 메타 데이터 테이블들이 H2 메모리 DB에 자동 생성된다.2. Java Config에서 @EnableBatchProcess.. 2024. 12. 9. 『Spring Batch』 스프링 배치 도메인 이해 스프링 배치는 Job을 중심으로 JobInstance, JobExecution, Step, StepExecution, 그리고 이들의 상태 정보인 ExecutionContext 등을 통해 배치 작업을 수행하고 관리할 수 있는 구조를 제공한다. 도메인 객체들의 관계를 이해하면 배치 실행 흐름에서 발생하는 상태 변화와 재시작 로직을 보다 명확히 파악할 수 있다. 도메인 객체들을 자세히 살펴보기 전에 간략하게 정리한 표를 우선적으로 보겠다.도메인 객체설명Job 배치 작업 단위 JobInstance Job의 특정 파라미터로 실행한 인스턴스 JobParameter JobInstance를 식별하는 실행 파라미터 JobExecution JobInstance 별 실제 실행 정보 Step Job을 구성하는 실행 단위 S.. 2024. 12. 7. 프레임워크와 라이브러리의 차이 프레임워크란 프레임워크(Framework)란 개발자가 소프트웨어를 개발함에 있어 구현에 드는 시간을 단축하고 재사용성을 높이기 위해 미리 정해진 구조나 설계 패턴을 제공하는 ‘뼈대’이다. 이는 일련의 클래스 묶음이나 템플릿을 라이브러리 형태로 제공하는 것으로 개발자가 해당 구조를 기반으로 애플리케이션을 구성하고 확장해나가게 된다. 대표적으로 IoC(Inversion of Control, 제어의 역전) 개념이 적용되어 있어 프로그램의 전체적인 흐름(Flow)을 프레임워크가 주도하고 개발자는 필요한 부분을 확장하거나 구현하는 방식으로 개발을 진행한다. 특징 프레임워크는 정형화된 개발 방식과 구조를 제시한다. 예를 들어 Spring Framework에서는 애플리케이션 컨텍스트나 Bean 설정 방식을 지키.. 2024. 12. 6. 『MVC』 Bean Validation RESTful API를 개발할 때 클라이언트로부터 전달받은 데이터의 유효성 검증은 필수적인데 Spring Framework에서는 Bean Validation이란 기능을 지원한다. Bean Validation은 어노테이션을 활용하여 객체의 프로퍼티 값이 특정 조건을 만족하는지 검증하는 프레임워크다. Spring Boot에서는 기본으로 지원한다.@Valid, Java에서 지원하는 어노테이션@Validated, Spring에서 지원하는 어노테이션 -> 내부에 groups 기능을 포함하고 있다. 내부 구조Bean Validation은 Java 표준 스펙(JSR 380)으로 다음과 같은 주요 구성 요소로 이루어져 있다. Constraint Annotations @NotNull, @Size 등과 같이 필드에 .. 2024. 12. 3. 『Spring MVC』 필터, 인터셉터 공통 업무에 관련된 코드를 각 페이지마다 작성한다면 중복 코드가 많아지고 프로젝트 규모가 커질수록 유지 보수가 어려워진다. 그래서 Spring Framework에서는 다음과 같은 기능들을 제공한다.Filter (필터)Interceptor (인터셉터)AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)위의 세 가지 기능은 모두 특정 작업을 실행하기 전에 선처리하거나 실행한 후에 후처리 하는 데 사용된다. 이번 글에서는 필터와 인터셉터가 무엇인지 그리고 그 차이점에 대해 알아보자. 필터란?필터는 클라이언트의 요청과 응답을 거르는 역할을 한다. DispatcherServlet에 요청이 전달되기 전에 실행되며 URL 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기.. 2024. 11. 26. 이전 1 2 다음