'Spring' 카테고리의 글 목록
원택투택

Spring
주문상태 동시성 처리

2025.05.05
글을 쓰게 된 배경톰캣의 멀티쓰레드 방식을 공부하던 중 멀티쓰레드 환경에서 동시성처리에 대한 부분을 학습했는데, 문득 지금 진행하고 있는 프로젝트의 주문 프로세스에서 동시성 문제가 발생할 수 있다는 것을 깨달았다. 주문 상태를 처리하는 김에 동시성 처리도 함께 하는 것이 좋다고 생각해서 주문 프로세스에 대한 나의 고민을 담았다.목차현재 주문 프로세스에서 주문상태 문제현재 주문 프로세스에서 주문상태 문제현재는 사용자나 공장의 api 요청에 따라 주문 상태가 변경된다.사용자가 결제를 하면 결제대기 -> 결제 완료 상태가 되고 공장이 주문 거절을 하면 제작대기 -> 제작 거절 상태가 된다.만약에 사용자가 결제를 취소하는 것과 동시에 공장이 제작을 시작하면 하나의 동작이 덮여버리는 문제가 발생한다.또한, 공장이..
Spring
스레드풀 전략
2025.05.02
스레드를 직접 사용할 때의 문제점1. 스레드 생성 시간으로 인한 성능 문제2. 스레드 관리 문제3. Runnable 인터페이스의 불편함스레드 생성 시간으로 인한 성능 문제스레드를 생성할 때는 비용이 상당히 많이 든다. 어떤 작업을 하나 수행할 때마다 스레드를 생성해서 실행하면 작업의 시간보다 스레드 생성 시간이 더 오래 걸리는 상황이 발생할 수 있다. 스레드 관리 문제스레드는 CPU와 메모리를 사용하기 때문에 무한하게 만들 수 없다.CPU와 메모리가 가 감당가능한 선에서 스레드를 만들어야한다.Runnable 인터페이스의 불편함 Runnable 인터페이스에는 크게 2가지 불편함이 있다.첫번째는 Runnable 인터페이스의 run() 메소드는 반환값을 가지지 않기 때문에 다른 메소드에서 해당 스레드가 종료되..

Spring
서블릿 컨테이너의 이해
2025.04.04
다룰 내용웹 서버와 웹 어플리케이션 서버WAS의 역할서블릿서블릿 컨테이너정리웹 서버와 웹 어플리케이션 서버서블릿 컨테이너를 학습하기 전에 웹 서버와 웹 어플리케이션 서버에 대한 전반적인 흐름에 대해서 이해 하는 것이 서블릿 컨테이너의 동작을 이해하는데 더 도움 될 것이라고 생각한다. 사용자에게 요청이 들어오면 웹 서버와 WAS를 거쳐 데이터베이스에서 사용자가 요청한 데이터를 가지고와서 사용자에게 응답을 내려준다. 서블릿 컨테이너는 WAS 내부에서 동작한다.웹 서버는 정적인 페이지를 사용자에게 보여주고 웹 WAS는 웹 서버 + 프로그램을 실행하는 역할을 수행한다. 웹 서버와 웹 어플리케이션 서버에 대한 내용도 깊게 다루면 여러가지 기술이 있겠지만 서블릿 컨테이너에 대한 글이기 때문에 건너뛰겠다.WAS의 역..
Spring
엔티티 DTO 변환 위치
2025.01.10
이 글을 쓰게된 배경프로젝트를 진행하다보니 문득 서비스 계층의 절반이 엔티티를 DTO로 변환하는 코드인 것이 보여서 이걸 이대로 두는 것이 맞는지 다른 사람들은 어떻게 하고 있는건지 더 좋은 방법은 없는건지 궁금해 져서 알아보는 겸 이 글을 작성했습니다. 컨트롤러 vs 서비스인터넷 검색을 해본 결과 사람들은 주로 DTO 변환을 컨트롤러 계층 vs 서비스 계층 으로 두고 의견이 많이 갈렸습니다.저는 컨트롤러 계층에서 DTO 변환을 한다는 건 생각도 못했기 때문에 신선했습니다.DDD 4계층에 따르면 컨트롤러는 사용자에게 UI를 제공하는 역할이 컨트롤러의 역할입니다. DTO가 사용자에게 어떤 데이터를 보여줄 지 결정하는 것이기 때문에 위 원칙에 따르면 컨트롤러에 있는 것이 더 바람직해 보입니다. 서비스 계층은..

Spring
스프링 시큐리티의 구조와 대체 방안
2025.01.02
이 글을 쓰게 된 배경스프링부트 프로젝트에서 로그인/회원가입 기능을 만들면서 스프링 시큐리티를 학습하는 과정을 담은 글입니다. 스프링 시큐리티의 내용이 너무 많아서 오랜 기간동안 학습하면서 여러번에 걸쳐서 작성했습니다. 다룰 내용Spring Security란?Spring Security를 사용해야 하는 이유Spring Security 구조Spring Security 이외에 인증/인가를 대체할 방법Spring Security란?Spring security란 스프링의 Filter를 이용하여 스프링부트에서 제공하는 인증/인가를 지원하는 프레임워크 입니다.Spring Security를 사용해야 하는 이유Spring Security는 애플리케이션의 보안을 체계적으로 관리하고, 최신 보안 표준을 준수하며, 다양한 ..