일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JWT
- Kafka
- spring boot
- CI/CD
- 프로그래머스
- Intellij
- 유효성 검사
- DevOps
- Github Actions
- algorithm
- 멀티 모듈
- trouble shooting
- Redis
- JPA
- 어노테이션
- querydls
- MSA
- swagger
- 테스트 코드
- algorihm
- Til
- EC2
- 객체지향원칙
- Java
- aop
- testcode
- AWS
- docker
- rabbitmq
- springboot
- Today
- Total
목록spring boot (16)
개발노트
문제JPA 쿼리에서 UUID 타입이나 Double 타입의 컬럼을 가져올 때, 값이 자동으로 업캐스팅되어 제대로 처리되던 방식이 갑자기 작동하지 않는 문제가 생겼다.nativeQuery를 사용하여 SQL 쿼리를 실행한 후, UUID나 Double로 변환되지 않는 문제다. @Query(value = "SELECT r.performance_id AS performanceId, AVG(r.rating) AS avgRating, COUNT(r.id) AS reviewCount " + "FROM p_review r " + "WHERE r.deleted_at IS NULL " + "GROUP BY r.performance_id", nativeQuery = true) List> fetchPerforma..

문제Redis 명령어 CLI에서 다음과 같이 입력하면 예상대로 잘 작동한다.그래서 Java 코드에서도 아래와 같이 패턴을 넣으면 잘 작동할 줄 알았다.하지만 내 예상과는 다르게 아무것도 조회가 되지않았다. // Redis에서 모든 리뷰의 좋아요 수를 가져와 HashMap으로 반환 public Map getAllReviewIdsWithLikes() { hashOps = likeCountRedisTemplate.opsForHash(); // 예시: 모든 리뷰의 Redis 키 패턴을 가져오고 해당하는 값들을 조회 Set reviewIds = hashOps.keys("review:like:*"); // "review:like:"로 시작하는 모든 키들 Map reviewLikesMap = new Ha..

문제com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: com.taken_seat.payment_service.application.dto.response.PaymentRegisterResDto["approvedAt"]) Radis Cacging에서 DTO를 직렬화 / 역직렬화 하는 과정에서 오류가 발생했다.해당 D..

개요모니터링에 대한 강의 통해 학습한 Acturator, Prometheus, Grafana에 대해 어떤 건지 제대로 알고 사용하고 싶어서 글로 정리해 두고 복습해 본다. 세 가지 도구의 관계Spring Boot Acturator , Prometheus, Grafana는 서버 및 애플리케이션 모니터링을 구축하는 핵심 기술 스택이다.서로 협력하여 데이터 수집 -> 저장 -> 시각화의 과정을 수행할 수 있게 해 준다. Spring Boot Actuator애플리케이션의 상태 및 성능 지표(메트릭)를 제공하는 역할예: CPU 사용량, 메모리 사용량, DB 연결 수, HTTP 요청 수 등PrometheusActuator에서 제공하는 메트릭 데이터를 주기적으로 수집하여 저장시계열(time-series) 데이터베이..
개요주문이 생성되면 배송 생성 메시지를 전달하고, 배송이 정상적으로 생성되었는지 확인하는 메시지가 온다.배송이 정상적으로 생성되었을 경우, 주문의 상태를 "배송 대기"로 변경하고, 배송 생성이 실패한 경우에는 배송 생성 요청을 다시 보내게 구현했다.문제점현재 시스템에서는 배송의 운행 담당자가 비어있는 상황에서 배송 생성이 계속해서 실패하고 있습니다. 이 경우, 배송 생성 요청이 무한히 재시도되는 문제가 발생한다. /** * 배송 생성 실패 시 재시도 요청을 한다. * * @param shippingResponseMessage 배송 생성 응답 메시지 */public void retryCreateShipping(ShippingResponseMessage shippingResponseMessage) { ..
개요DDD의 계층구조는 내가 알고있던 계층구조와는 조금 다른 개념이라 정리해본다. DDD( Domain-Driven Design )에서의 계층 구조 ( Layered Architecture )DDD에서 계층형 아키텍처 ( Layered Architecture )는 애플리케이션을 여러 개의 독립적인 계층으로 나누어 각 계층이특정한 역할을 담당하도록 하는 설계 방식입니다. 이러한 계층 구조를 적용하면 관심사의 분리 (Separation of Concerns)를 실현할 수 있어 유지보수성과 확장성이 좋아집니다. DDD의 계층 구조DDD에서는 일반적으로 다음과 같은 4가지 계층을 사용한다.사용자 인터페이스 ( User Interface, UI ) 또는 프레젠테이션 ( Presentation ) 계층애플리케이션..

개요오늘부터 프로젝트를 시작하게되었다 아마도 RabbitMQ 보단 kafka를 쓰게될 것 같다.redis도 kafka 도 처음 프로젝트에 적용하는거라 잘할 수 있을지 걱정이 앞선다.확실히 이해하고 넘어가기위해서 정리하면서 복습해본다. Kafka 란?kafka는 분산 스트리밍 플랫폼이자 메시지 큐 시스템이다. 원래 LinkedIn에서 로그 데이터를 처리하기 위해 개발되었으며,이후 Apach 프로젝트로 오픈 소스화 되었다. kafka는 주로 대규모 데이터 파이프라인 구축, 로그 수집, 실시간 데이터 스트리밍 및 메시지 큐로 사용된다. kafka의 주요 특징은 내구성, 확장성, 고가용성이다. 데이터는 파티션을 통해 분산 저장되며, 여러 브로커에서 데이터가 복제되어 장애에 강하게 설계되어있다. Kafka의 주요..
Write-Through Cache애플리케이션이 데이터를 변경하면 즉시 캐시와 데이터베이스에 동시에 저장하는 방식캐시가 항상 최신의 데이터를 유지하도록한다 장점데이터 일관성 유지캐시와 데이터베이스의 데이터가 항상 동일함 빠른 읽기 속도 제공데이터가 항상 캐시에 저장되어 있어 읽기 성능이 향상됨단점쓰기 성능 저하모든 쓰기 연산이 캐시와 데이터베이스에 동시에 반영되므로 속도가 느려질 수 있음불필요한 캐싱 가능성자주 조회되지 않는 데이터도 캐시에 저장될 수 있어 메모리 낭비 가능 사용 예시사용자 프로필 정보사용자의 기본 정보는 자주 읽히지만 자주 변경되지 않음상품 정보 저장상품이 업데이트될 때마다 캐시와 DB를 동시에 갱신하여 최신 상태 유지 변경이 자주 되지않거나 항상 최신 상태를 유지해야하는 경우에 사용하..

개요redis를 사용해보려한다. 개념과 특징을 정리하고 자료형의 주요 메서드를 알아본 다음 RedisTemplate 를 구현하는 법도 정리해본다. Redis란?Redis(Remote Dictionary Server)는 오픈 소스 인메모리 데이터 저장소로 주로 캐시, 세션 저장소, 메시지 브로커 등의 용도로 사용된다.Redis의 특징 인메모리 데이터 저장소데이터를 메모리 ( RAM )에 저장하여 읽기/쓰기 속도가 매우 빠름디스크보다 접근 속도가 빠르므로 캐싱에 최적Key-Value 구조지원 데이터 타입문자열(String)리스트(List)셋(Set)정렬된 셋(Sorted Set)해시(Hash)퍼시스턴스(Persistence) 지원데이터를 디스크에 저장하여 데이터 손실 방지 가능 디스크 저장 방식RDB (Re..

개요단위 테스트를 할 때는 상관없었는데 통합테스트를 진행하니 운영중인 DB의 데이터도 테스트에 포함되어 문제가 발생했다. 이를 개선하기위해 통합테스트 환경에서는 H2 데이터베이스를 사용하도록 DB 환경을 분리해보겠다. application-test.yml 파일 생성기존의 apllication.yml 과 똑같은 위치에 application-test.yml파일을 생성해준다. spring: datasource: driver-class-name: org.h2.Driver hikari.jdbc-url: jdbc:h2:mem:test_db; username: testdb password: jpa: hibernate: ddl-auto: create-drop show-sql..