로그를 왜 구체적으로 남겨야 하는가?→ 남기지 않으면 버그가 발생하였을 때, ‘그때 좀 더 써놓을걸’ 이라는 후회를 하기 때문에 왜 CustomException을 작성하는가?→ 로그가 나타난 부분을 빠르게 찾을 수 있는, 오류의 명찰 역할을 한다
전체 글

스프링 - PostgreSQL text[] 타입을 엔티티의 List 필드에 매핑하기 작성 일자 : 2025년 02월 02일 개요 PostgreSQL에서는 text[] 타입과 같은 배열 타입을 기본으로 지원합니다. 이를 활용하면 @ElementCollection을 사용하는 방법과는 다르게 별도의 조인 테이블을 생성하지 않고도 여러 값을 하나의 컬럼에 저장할 수 있습니다. 하지만, Hibernate는 기본적으로 List과 PostgreSQL의 text[] 타입을 매핑할 수 없기 때문에 직접 변환 로직을 구현해주어야 합니다. 사용자 정의 Hibernate UserType: StringArrayType 구현 먼저, Java의 List과 PostgreSQL의 text[] 사이의 변환을 담당하는 사용자 정의..

스프링 - RabbutMQ Retry 정책 설정하기(ft. 10만원의 교훈) 작성 일자 : 2025년 01월 24일 개요 질문스프링부트와 RabbitMQ를 연동하고, 만약 Consumer 로직에서 Exception이 발생하면 어떤 일이 일어나는지 아는가? 정답Retry 정책이 없다면, 스프링부트의 Consumer 로직은 1초에 수십 번이고 다시 해당 메세지를 Consume하고 다시 Exception이 발생시킨다. 고통스러운 경험필자와 같이 Exception 로깅으로 CloudWatch의 PutLogEvents 비용에 10만원을 지불하고 싶지 않다면, Retry 정책을 미리미리 설정해놓자! 손을 벌벌 떨며 원인이 무엇인지 파악하고 -> RabbitMQ WebConsole에 접속해서 메세지를 Purg..
문제혹시나 스프링 부트에서 Google OAuth2 소셜 로그인 기능을 구현하고, 프로덕션 도메인(https)에서 접속하였을 때 아래와 같은 증상이 발생한다면:Error 400: redirect_uri_mismatcherror details를 눌러서 확인하면, Request details에 http://example.com/login/oauth2/code/google 이라고 적혀있음(http!!!) 해결application.yml에 아래와 같이 redirect-uri를 https로 명시해준다spring: security: oauth2: client: registration: google: client-id: ${GOOGLE_CLIENT_ID..

AWS MQ - RabbitMQ WebConsole 접속하기 작성일자 : 2025년 01월 09일 개요 AWS MQ를 통해 RabbitMQ를 생성하면, 아래와 같이 RabbitMQ의 Endpoints와 Web Console URL이 생성됩니다. 하지만, 만일 RabbitMQ가 VPC의 Private Subnet에 생성되었을 경우, 바로 링크를 클릭해도 Web Console에 접속할 수 없습니다. 이번 포스트에서는 Public Subnet에 존재하는 Bastion 호스트를 통해서 Local에서 RabbitMQ Web Console에 접속하는 방법을 소개합니다. VPC 구성 Public Subnet Bastion 호스트 (EC2 인스턴스)Bastion 호스트는 Public Subnet에 존재하는 E..

Cloudflare - R2 Bucket CORS 에러 해결하기 작성일자 : 2024_년 12월 29일 (이미지) 개요 아래와 같은 JS 코드에서 Cloudflare R2 Bucket에 있는 이미지를 불러오려고 할 때, CORS 에러가 발생하였다.const createImage = (url: string): Promise => { return new Promise((resolve, reject) => { const image = new Image(); image.addEventListener("load", () => resolve(image)); image.addEventListener("error", error => reject(error)); image.setAttribute(..
NextJS - ReferenceError: File is not defined 해결하기 작성 일자 : 2024년 12월 21일 (이미지) 어떤 문제가 발생했는가?Answer: NextJS에서 Production 서버에서만 ReferenceError: File is not defined 에러 발생 CloudWatch 로그ReferenceError: File is not definedat 40901 (/app/.next/server/chunks/438.js:1:5746)at Function.t (/app/.next/server/webpack-runtime.js:1:128)at process.processTicksAndRejections (node:internal/process/task_queues:95..
GithubActions - ERROR: failed to solve: process "/dev/.buildkit_qemu_emulator... 해결하기 작성 일자 : 2024년 12월 19일 (이미지) 어떤 문제가 발생했는가? 발단: Github Actions에서 NextJS Docker 이미지 빌드docker buildx build --platform linux/arm64 -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . --push -f $DOCKER_FILE 에러 메시지prod.Dockerfile:30-------------------- 29 | 30 | >>> RUN \ 31 | >>> if [ -f yarn.lock ]; then yarn run bu..