1. 소개동적 프로그래밍이란? 동적 프로그래밍(Dynamic Programming, DP)은 복잡한 문제를 작은 부분 문제로 나누어 해결하고, 그 결과를 저장하여 중복 계산를 방지하는 최적화 기법입니다. 언제 사용할까?DP는 다음과 같은 경우에 사용된다. 부분 문제가 반복적으로 등장하는 경우 최적 부분 구조 (Optimal Substructure): 부분 문제의 최적해를 이용해 전체 문제를 해결할 수 있을 때예를 들어, 피보나치 수열을 재귀로 구현하면 동일한 값이 여러 번 중복 계산된다.DP를 사용하면 이를 방지할 수 있다. 분할 정복과의 차이점 동적 프로그래밍분할 정복부분 문제 중복 여부OX대표 예제피보나치 수열, 배낭 문제, LCS병합 정렬, 퀵 정렬해결 방식저장하여 재사용독립적인 작은 문제로 나눠 ..
Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]:오류 멀티 모듈 환경에서 타 모듈의 Entity나 Service, Repository를 참조해서 쓰려고 하는데 Bean 등록이 안됐다;; : Error creating bean with name 'userController': Lookup method resolution failed Description: Parameter 0 of constructor in com.example.admin.user.test.Us..
1. 제로 페이로드(Zero Payload)란? 이벤트 기반 아키텍처의 일종. "이벤트 발생" 신호만 전달하고, 데이터는 따로 저장소에서 조회하는 방식 2. 동작 예시 데이터를 포함한 기존 방식 주문이 생성되면 OrderService가 kafka를 통해 주문 정보를 ShippingService로 보냄{ "event": "ORDER_CREATED", "orderId": 12345, "userId": 67890, "totalPrice": 50000} 주문 데이터가 많아지면 메시지 크기가 커지고 여러 서비스에 중복 저장될 수 있음 제로 페이로드 방식 ORDER_CREATED 이벤트만 보내고, 필요하면 idx로 직접 DB에서 조회{ "event": "ORDER_CREATED", ..
MSA에서 비동기적 통신을 정리하기 위한 글! 1. 비동기(Asynchronous) 통신비동기 통신은 서비스 간 요청과 응답이 즉각적으로 이루어지지 않고, 메시지를 보내고 나서 별도로 응답을 기다리지 않는 방식이다.이 방식은 서비스 간의 결합도를 낮추고 확장성을 높이며, 트래픽 폭증 시에도 안정적인 처리를 가능하게 한다. 대표적인 비동기 통신 방식으로는 메시지 큐와 이벤트 기반 아키텍쳐가 있다. 2. 메시지 큐 (Kafka, RabbitMQ) 개념메시지 큐는 생산자(Producer)가 메시지를 생성하여 큐(Queue)에 넣고, 소비자(Consumer)가 메시지를 가져가서 처리하는 방식이다.메시지 브로커가 중간에서 메시지를 관리하고, 보장된 순서로 메시지를 전달하며, 특정 메시지가 손실되지 않도록 방지할..
MSA 통신 방식 중 동기적 통신을 정리하기 위한 글! 1. 동기적 통신동기 통신 방식은 클라이언트가 요청을 보내고 응답을 받을 때까지 기다리는 방식이다.일반적으로 즉각적인 응답이 필요한 서비스에서 사용된다. REST API✔️ 개념REST(Representational State Transfer) API는 HTTP 프로토콜을 기반으로 한 웹 서비스 통신 방식이다.REST의 기본 원칙을 따르면 클라이언트-서버 구조에서 상태를 유지하지 않고, -> stateless자원을 URI로 식별하여 CRUD(Create, Read, Update, Delete) 연산을 수행할 수 있다. ⚡ 특징자원(Resource): URI (예시: /user/login)로 접근 가능HTTP 메서드 활용JSON 또는 XML 데이터..
1. 개요1) MSA란?MSA(Microservices Architecture)는 하나의 애플리케이션을 여러 개의 독립적인 서비스로 구성하는 아키텍처 패턴이다.각 서비스는 특정한 비즈니스 기능을 담당하며, 독립적으로 배포 및 확장이 가능하다. 하지만, 이러한 구조에서는 개별 서비스가 단독으로 동작하는 것이 아니라, 다른 서비스와 데이터를 주고받으며 협력해야 한다. 따라서 서비스 간 원활한 통신이 필수적이다. 서비스 간 통신이 필요한 이유는 다음의 예시로 설명할 수 있다. 1. 데이터 공유 및 처리특정 서비스에서 관리하는 데이터를 다른 서비스에서도 활용해야 하는 경우ex) 주문 서비스가 사용자 서비스에서 고객 정보를 가져와야 하는 경우2. 업무 프로세스의 연속성하나의 비즈니스 로직이 여러 서비스에 걸쳐 ..