일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 객체지향원칙
- querydls
- algorithm
- JWT
- trouble shooting
- Til
- Kafka
- EC2
- AWS
- Github Actions
- 아키텍처
- DevOps
- docker
- testcode
- Intellij
- swagger
- 멀티 모듈
- spring boot
- Redis
- 유효성 검사
- rabbitmq
- Java
- aop
- CI/CD
- 프로그래머스
- 테스트 코드
- MSA
- springboot
- 어노테이션
- JPA
- Today
- Total
목록2025/04 (9)
개발노트

개요팀 프로젝트에서 CI/CD를 진행할 때 Docker Hub의 무료 계정을 사용하면, 일부 이미지를 제외하고는 반드시 public으로 설정해야 해서 내 프로젝트 이미지가 외부에 노출되는 점이 다소 불안하게 느껴졌다. 그러다 검색 중에 GitHub Container Registry(GHCR)를 알게 되었고, 팀 리포지토리 내에서 private으로 이미지를 관리할 수 있다는 점이 마음에 들었다.이번 프로젝트에서는 이미지 관리를 GitHub Container Registry를 통해 진행해보려 한다. Github Container Registry 주요 특징1. 리포지토리 기반 접근 제어 (권한 관리가 용이)GitHub 계정 또는 조직의 리포지토리와 연동되어 있어,이미지에 대한 접근 권한을 GitHub 리포지토..
문제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..
개요리뷰의 평점 기능을 구현하는 도중 유저들이 동시에 리뷰를 작성하거나 평점을 수정할 경우,평균 = 총합 / 리뷰 수 계산 과정에서 연산 충돌이 발생할 수 있다는 생각이 들었다. user A 와 userB가 동시에 평점을 등록함둘 다 동일한 시점의 총점, 리뷰 수 등을 읽음각각 계산된 평균을 저장하려고 시도한다.마지막에 저장된 한쪽의 값만 반영되는 문제가 발생실제 평균과 다른 값이 저장되어 데이터 정합성이 깨지게된다.이런 경우 Lua 스크립트를 사용하면 문제를 해결할 수 있다.Redis는 Lua를 통해 여러 명령을 원자적(atomic) 으로 실행할 수 있다.즉, 총합 계산, 리뷰 수 증가, 평균 계산을 하나의 트랜잭션으로 묶어 실행하는 것이다. Redis 루아(Lua) 스크립트란?Redis 내부에서 Lu..

문제 : 결제 서비스가 모든 걸 다 처리한다.현제 payment 서비스는 결제 요청을 받으면 이런 작업을 과정을 수행하고있다. 마일리지 쿠폰, 사용 여부 판단사용 요청 이벤트 발행결제 엔티티 생성 및 저장차감 결과에 따라 결제 성공/ 실패 처리처음에 이게 맞나? 싶었는데 시간이 지나면서 문제들을 느끼게되었다. 도메인 책임이 어긋나 있다결제 해택 차감까지 담당한다.결제 도메인이 쿠폰과 마일리지를 검증하고, 실패 여부에 따라 결제 자체를 실패 처리하고 있었다. 이는 단일 책임 원칙(SRP)을 심각하게 위반한 구조라고 생각이 들었다. 이벤트 흐름이 꼬인다.원래라면 혜택을 차감하고 결제 요청을 보내는 게 자연스러운 순서다. 그런데 실제로는 결제 요청 → 혜택 차감 요청 순으로 처리되면서, 차감이 실패하면 결제를..

문제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..
시간 제한1.5초 메모리 제한128MB 문제 KOI 통신연구소는 레이저를 이용한 새로운 비밀 통신 시스템 개발을 위한 실험을 하고 있다. 실험을 위하여 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세우고, 각 탑의 꼭대기에 레이저 송신기를 설치하였다. 모든 탑의 레이저 송신기는 레이저 신호를 지표면과 평행하게 수평 직선의 왼쪽 방향으로 발사하고, 탑의 기둥 모두에는 레이저 신호를 수신하는 장치가 설치되어 있다. 하나의 탑에서 발사된 레이저 신호는 가장 먼저 만나는 단 하나의 탑에서만 수신이 가능하다.예를 들어 높이가 6, 9, 5, 7, 4인 다섯 개의 탑이 수평 직선에 일렬로 서 있고, 모든 탑에서는 주어진 탑 순서의 반대 방향(왼쪽 방향)으로 동시에 레이저 ..

문제 설명게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다."죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, ..
문제 설명 초 단위로 기록된 주식가격이 담긴 배열 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초간 가격이 떨어지지 않..