일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- springboot
- MSA
- EC2
- AWS
- Redis
- Til
- 프로그래머스
- testcode
- 테스트 코드
- JWT
- 객체지향원칙
- CI/CD
- querydls
- Kafka
- Github Actions
- spring boot
- algorithm
- DevOps
- 멀티 모듈
- Intellij
- Java
- aop
- 어노테이션
- algorihm
- JPA
- rabbitmq
- docker
- trouble shooting
- swagger
- 유효성 검사
- Today
- Total
목록전체 글 (40)
개발노트
문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.prices의 길이는 2 이상 100,000 이하입니다.입출력 예pricesreturn[1,2,3,2,3][4,3,1,1,0] 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점의 ₩3은 0초간 가격이 떨어지지 않..

개요모니터링에 대한 강의 통해 학습한 Acturator, Prometheus, Grafana에 대해 어떤 건지 제대로 알고 사용하고 싶어서 글로 정리해 두고 복습해 본다. 세 가지 도구의 관계Spring Boot Acturator , Prometheus, Grafana는 서버 및 애플리케이션 모니터링을 구축하는 핵심 기술 스택이다.서로 협력하여 데이터 수집 -> 저장 -> 시각화의 과정을 수행할 수 있게 해 준다. Spring Boot Actuator애플리케이션의 상태 및 성능 지표(메트릭)를 제공하는 역할예: CPU 사용량, 메모리 사용량, DB 연결 수, HTTP 요청 수 등PrometheusActuator에서 제공하는 메트릭 데이터를 주기적으로 수집하여 저장시계열(time-series) 데이터베이..
개요모니터링에 대해 학습한것들 정리하고 기록해본다. 모니터링이란?시스템, 애플리케이션, 네트워트 등의 상태를 지속적으로 감시하고 데이터를 수집하는 과정이다.이를 통해 성능 문제, 장애, 보안 위협등을 사전에 감지하고 신속하게 대응할 수 있다. 모니터링의 중요성애플리케이션을 개발한 후, 안정적이고 효율적인 운영을 위해 모니터링은 필수적이다.모니터링은 시스템의 성능, 가용성, 안정성을 지속적으로 감시하고, 잠재적인 문제를 신속하게 발견하여 대응할 수 있도록 도와준다 장애 예방 및 신속한 대응시스템에서 발생하는 예기치 않은 오류, 장애를 조기에 감지하여 대응할 수 있다.Prometheus + Grafana와 같은 도구를 활용하면 실시간으로 CPU, 메모리, 디스크 사용량, 네트워크 상태를 모니터링하여 이상..
개요MSA 환경에서 재고 감소 로직을 RabbitMQ와 함께 구현할 때, 메시지 처리 순서가 보장되지 않은 문제가 발생할 수 있다.RabbitMQ는 비동기로 메시지를 처리하며, 소비자(Consumer)가 여러 개일 경우 메시지가 동시에 여러 스레드에서 처리될 수 있다. 문제 1: 메시지 처리 속도 차이로 인한 순서 불일치@RabbitListener(queues = "${stockMessage.queue.stock.request}")public void handleStockDecrementRequest(StockDecrementMessage stockDecrementMessage) { productEventService.decreaseStock(stockDecrementMessage);}handleS..
개요주문이 생성되면 배송 생성 메시지를 전달하고, 배송이 정상적으로 생성되었는지 확인하는 메시지가 온다.배송이 정상적으로 생성되었을 경우, 주문의 상태를 "배송 대기"로 변경하고, 배송 생성이 실패한 경우에는 배송 생성 요청을 다시 보내게 구현했다.문제점현재 시스템에서는 배송의 운행 담당자가 비어있는 상황에서 배송 생성이 계속해서 실패하고 있습니다. 이 경우, 배송 생성 요청이 무한히 재시도되는 문제가 발생한다. /** * 배송 생성 실패 시 재시도 요청을 한다. * * @param shippingResponseMessage 배송 생성 응답 메시지 */public void retryCreateShipping(ShippingResponseMessage shippingResponseMessage) { ..

개요order 와 product 간의 메시지를 주고 받는 과정에서 ListenerExecutionFailedException: Listener method could not be invoked with the incoming message에러가 발생해 해결한 과정을 정리해본다. Messagepackage com.devsquad10.product.application.dto.message;import java.util.UUID;import lombok.AllArgsConstructor;import lombok.Builder;import lombok.Data;import lombok.NoArgsConstructor;import lombok.ToString;@ToString@Builder@Data@AllAr..
개요DDD의 계층구조는 내가 알고있던 계층구조와는 조금 다른 개념이라 정리해본다. DDD( Domain-Driven Design )에서의 계층 구조 ( Layered Architecture )DDD에서 계층형 아키텍처 ( Layered Architecture )는 애플리케이션을 여러 개의 독립적인 계층으로 나누어 각 계층이특정한 역할을 담당하도록 하는 설계 방식입니다. 이러한 계층 구조를 적용하면 관심사의 분리 (Separation of Concerns)를 실현할 수 있어 유지보수성과 확장성이 좋아집니다. DDD의 계층 구조DDD에서는 일반적으로 다음과 같은 4가지 계층을 사용한다.사용자 인터페이스 ( User Interface, UI ) 또는 프레젠테이션 ( Presentation ) 계층애플리케이션..

개요프로젝트 설계과정에서 DDD를 필수로 도입하고해야할 거 같아서 한번 정리해보겠다.자진해서 팀장을 한다고했는데 일을 키운게 아닌가 걱정이된다.학부에서 내가 팀장을 하면 프로젝트가 터지는 경험을 4번이나 했다.징크스를 깨고싶다 도메인 주도 설계 ( DDD ) 란?소프트웨어의 복잡성을 효과적으로 관리하기 위해 도메인( 비즈니 영역 )에 집중하는 설계 방식이다.즉, 단순히 코드 구조를 정리하는 것이 아니라 비즈니스 로직과 도메인 모델을 중심으로 시스템을 구축하는 방법론이다. 기술적인 요소보다는 비즈니스 도메인(업무 영역)에 집중하여 현실 세계의 개념을 코드로 표현하는 방식이다.변경에 유연하고 유지보수가 쉬운 시스템을 구축하는 것이 주 목표다.DDD의 핵심 개념 도메인 ( Domain )애플리케이션이 해결하..

개요오늘부터 프로젝트를 시작하게되었다 아마도 RabbitMQ 보단 kafka를 쓰게될 것 같다.redis도 kafka 도 처음 프로젝트에 적용하는거라 잘할 수 있을지 걱정이 앞선다.확실히 이해하고 넘어가기위해서 정리하면서 복습해본다. Kafka 란?kafka는 분산 스트리밍 플랫폼이자 메시지 큐 시스템이다. 원래 LinkedIn에서 로그 데이터를 처리하기 위해 개발되었으며,이후 Apach 프로젝트로 오픈 소스화 되었다. kafka는 주로 대규모 데이터 파이프라인 구축, 로그 수집, 실시간 데이터 스트리밍 및 메시지 큐로 사용된다. kafka의 주요 특징은 내구성, 확장성, 고가용성이다. 데이터는 파티션을 통해 분산 저장되며, 여러 브로커에서 데이터가 복제되어 장애에 강하게 설계되어있다. Kafka의 주요..

개요RabbitMQ 에 대해 강의로 처음 접하게되었다. 개념와 사용법에 대해 정리해본다. RabbitMQ 란?AMQP ( Advanced Message Queuing Protocol ) 기반의 오픈 소스 메시지 브로커 ( Message Broker ) 이다.애플리케이션 간의 비동기 메시지 처리를 지원하여, 높은 확장성과 안정성을 가진 분산 시스템을 구축할 때 유용하다. RabbitMQ의 핵심 개념RabbitMQ는 메시지를 모내는 Producer( 발행자 ) 와 메시지를 받는 Consumer ( 구독자 ) 사이에서 Broker 역할을 수행한다. 즉, Producer가 메시지를 Queue에 전달하면 Consumer가 메시지를 가져가는 방식으로 동작한다. 1. Message ( 메시지 ) Produc..