Spring Boot 4에서 사라진 ObjectMapper Bean
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Spring Boot 4에서 사라진 ObjectMapper Bean배포 파이프라인은 거의 끝까지 정상적으로 진행됐다.테스트가 통과했고 Docker 이미지도 만들어졌다. ECR 업로드와 ECS 강제 배포도 성공했다. 그런데 마지막 Verify ECS service 단계에서 배포가 멈췄다.처음 보이는 에러는 타임아웃이었다.The action 'Verify ECS service' has timed out after 12 minutes.하지만 타임아웃은 원인이 아니었다. 새로 배포한 애플리케이션이 시작되지 못하고 종료된 결과였다.ECS에서는 무슨 일이 벌어지고 있었을까실패 당시 PRIMARY deployment의 상태는 다음과 같았다.{ "statu..
[Spring] Spring Batch: 대용량 배치 처리의 핵심 프레임워크
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Spring Batch란?Spring Batch는 대용량 데이터를 효율적으로 처리하기 위한 배치 처리 프레임워크이다.주기적으로 반복되는 작업(예: 통계 계산, 로그 분석, DB 정리 등)을 안정적으로 실행하고, 실패 복구 및 재시작 기능까지 제공합니다.대량의 데이터를 "읽고 -> 가공하고 -> 저장하는" 흐름을 체계적으로 관리할 수 있게 도와주는 틀입니다.언제 사용할까?매일 자정에 주문 데이터 정산100만 건 이상의 로그를 DB에 저장CSV 파일을 읽어 데이터베이스에 이관사용자 가입 내역을 분석해 레포트 생성Spring Batch의 기본 구조Job: 전체 배치 작업의 단위하나의 Job은 여러 Step으로 구성Step: Job 안의 실행 단위It..
[Spring] Filter & Interceptor
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기서론웹 요청 흐름 속에서 필터와 인터셉터의 역할Spring Application에서 사용자의 요청은 단순히 컨트롤러에 바로 도달하지 않는다.요청은 여러 계층을 거쳐 처리되며, 이 과정에서 Filter와 Interceptor는 각각의 위치에서 중요한 역할을 수행한다.Filter: Servlet Container 수준에서 요청과 응답을 감싸며, 보안, 로깅, 인코딩 처리 등의 전역적인 전처리에 사용된다.Interceptor: Spring MVC의 DispatcherServlet 이후에 동작하며, 컨트롤러 실행 전후에 추가 로직을 삽입할 수 있다.결국, Filter & Interceptor는 웹 요청 흐름에서 공통 관심사(Cross-Cutting C..
✏️ [Spring] Bean 생명주기
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Bean 생명주기란?스프링 컨테이너는 Bean을 등록할 때 다음과 같은 순서로 생명주기를 관리한다.생성자 호출 → 의존성 주입 → 초기화 콜백 → 사용 → 소멸 콜백Spring이 제공하는 다양한 방법을 통해 이 생명주기 단계마다 로직을 삽입할 수 있다.예제 코드로 알아보는 Bean 생명주기2-1. 기본 설정@Configuration@ComponentScan(basePackages = "com.example.lifecycle") public class AppConfig {}2-2. 생명주기 메서드를 정의한 Bean@Componentpublic class LifeCycleBean { public LifeCycleBean() { ..
[Spring] 역할과 구현의 분리, 스프링 컨테이너의 필요성
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기회원 도메인 설계회원 도메인 설계회원을 가입하고 조회 가능회원은BASIC, VIP 두 가지 등급이 존재회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동 가능 - 미확정 Interface?자바에서 클래스들이 구현해야 하는 모든 기능을 추상화로 정의만 하고 구현은 하지 않은 자료형클래스 설계시 표준화를 유도할 수 있다.유지보수 효율이 좋고, 다형성을 극대화 가능Service, Repository의 역할Repository: DB 접근 및 CRUD 처리 담당. 도메인 객체를 데이터베이스에 저장하고 조회하는 역할을 수행한다. 비즈니스 로직은 절대 포함하지 않고, "데이터에 접근하는 로직"만 포함한다.Service(Business Layer..
✏️ [Spring] Spring Security Testing
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기⭐️ 들어가기 전포트폴리오와 이력서를 만들면서 테스트 코드의 부재가 뼈 아프게 다가왔습니다.테스트 코드의 이점은 많습니다. 단순히 개발 속도가 향상하는 것 뿐만 아니라 리팩토링, 유지보수 등에서도 테스트 코드의 존재는 매우 중요합니다.지금까지는 테스트 코드의 중요성을 깨닫지 못했습니다.그러나 2개의 프로젝트를 테스트 코드 없이 진행해보니 테스트 코드의 중요성을 깨닫게 되었습니다.테스트 코드를 공부하려고 하니 또다른 문제가 있었습니다. Spring Security를 적용한 코드의 테스트 코드는 사용자 인증을 통과해야 했습니다.그래서 이번 글에서는 Spring Security를 적용한 코드에서의 테스트 방법을 공부하려고 합니다.Spring Secu..
✏️ [Spring] AOP(Aspect Oriented Programming)란?
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기📌 AOP를 사용하지 않는다면?AOP를 알기 전에 AOP를 사용하는 이유에 대해 먼저 알아보려고한다.애플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나눌 수 있다.핵심 기능: 해당 객체가 제공하는 고유의 기능부가 기능: 핵심 기능을 보조하기 위해 제공되는 기능(ex: 로그 추적 기능, 트랜잭션 기능)보통 기존 프로젝트에 부가 기능을 추가하게 되면 하나의 클래스가 아닌 여러 클래스에 추가하게 된다.예를 들어서 프로젝트의 모든 클래스에 로그 기능을 추가한다면 하나의 부가 기능(로그 추적)을 여러 곳에서 동일하게 사용하게 된다.이러한 부가 기능을 바로 횡단 관심사(cross-cutting concerns)라고 한다.부가 기능 적용시 문제점그런데..
✏️ [Spring] DI(Dependency Injection)
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기⭐️ DI란?DI, Dependency Injection: 의존관계 주입이라는 뜻, IOC를 실제로 구현하는 방법.객체 사이의 의존관계를 코드로 명시하는 것이 아니라 스프링 설정 파일에 등록된 정보를 바탕으로 컨테이너가 자동으로 처리 해준다.컨테이너가 직접 객체들 사이에 의존관계를 처리하는 것의존성이 삽입된다는 의미로 IoC를 DI라는 표현으로 사용한다.Dependency(의존성)객체지향언어에서 두 클래스 간의 협력하는 관계일반적으로 둘 중 하나가 다른 하나를 어떤 용도를 위해 사용📌 Dependency는 위헙하다.하나의 모듈(클래스)이 바뀌면 다른 모듈까지 변경이 이루어지기 때문에 Dependency는 위험하다. 테스트 가능한 어플을 만들때..
✏️ [Spring] IoC(Inversion of Control)
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기⭐️ IoC란?IoC, Inversion Of Control: 뒤바뀐 제어권, 제어의 역행인스턴스의 생성 및 소멸을 개발자 대신 스프링 컨테이너가 한다.따라서 낮은 결합도를 유지한다.사용 안한다면, 객체 사이의 의존관계를 개발자가 직접 코딩하지 않으므로 코드에 의존관계가 명시되지 않아 결합도가 떨어져 유지보수 하기 좋다.IoC는 Spring 외에서도 사용된다.객체의 생성이나 객체 사이의 의존 관계를 개발자가 직접 자바 코드로 처리해야 했었다. 이런 상황에서는 의존관계에 있는 객체를 변경하려면 반드시 자바 코드를 수정해야 한다. 이는 높은 결합도를 유발하고 유지보수가 어려워진다.하지만 IoC가 적용되면 객체 생성과 의존관계를 컨테이너가 처리하게 ..
✏️ [Spring] Spring Security란?
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기대부분의 프로그램에서는 회원이 존재하고, 그에 따른 인증(Authentication)과 인가(Authorization)에 대한 처리를 해주어야 한다.Spring에서는 Spring Security라는 별도의 프레임워크에서 관련된 기능을 제공하는데, 이번 글에서는 Spring Security에 대해서 알아보겠다.⭐️ Spring Security 개요Spring Security는 Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. Spring Security는 '인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리하고 있다. Filter는 Dispatcher Servlet으로 가기 전에 적..