전체 글

하다보니 재미있는 AI에 빠져있는 평양냉면7 문의사항: ysoil8811@gmail.com
· AWS
Lambda로 RDS 시작 및 중지 설정 아직 개발단계인데 AWS 비용이 너무 많이 나와서 RDS를 사용할 때 시작하고, 사용하지 않을 때는 중지하는 lambda 함수를 만들어봤다. 1. 함수 생성 먼저, 두 개의 RDS 인스턴스를 시작하고 종료하는 Python 코드로 람다를 생성해 보자. 우선 AWS Lambda 콘솔창으로 이동한다. https://aws.amazon.com/ko/lambda/ 클라우드 컴퓨팅 PaaS | Amazon Web Services 닫기 Amazon Simple Storage Service(Amazon S3)를 사용하여 업로드 후에 실시간으로 AWS Lambda 데이터 처리를 트리거하거나 기존 Amazon EFS 파일 시스템에 연결하여 대규모 파일 처리를 위한 대규모 병렬 공유..
람다 표현식에서 final 변수나 effectively final 변수를 사용해야 하는 이유 Java에서 람다 함수를 사용할 때 final 변수 또는 effectively final 변수를 사용해야 하는 이유에 대해서 알아보자. 자바에서 람다 함수를 사용할 때 'final' 변수 또는 effectively final 변수를 사용하는 이유는 자바의 클로저(closure) 구현과 관련이 있다. 클로저란 함수가 정의될 때의 스코프에 있는 변수들을 기억하고, 함수가 실행될 때 이러한 변수들에 접근할 수 있는 기능을 말한다. 일단 final 변수와 effectively final 변수의 개념부터 이해하자. final 변수와 effectively final 변수가 무엇인가 자바에서 'effectively final..
스프링 배치와 JPA를 활용해 누락된 SNS 이벤트 재발행 SNS 이벤트를 저장하는 이벤트 저장소에서 발행이 누락된 ('published = false') 이벤트를 재발행해주는 배치 작업을 생성해 보자 1. SNS 미발행 이벤트를 스프링 배치로 재발행하는 프로세스 설명 1-1. 이벤트 저장소와 SNS/SQS 메시지 처리 우리 프로젝트는 SNS 이벤트 발행 여부를 추적하는 이벤트 저장소를 갖추고 있다. 이벤트 저장소에 이벤트가 기록된다는 것은 해당 도메인 행위가 성공적으로 완료되었음을 의미한다. 이때, 이벤트의 'published' 속성은 기본적으로 'false'로 설정된다. 프로세스가 원활하게 진행되어 SNS 발행과 SQS 구독이 정상적으로 이루어진 경우, 해당 이벤트는 'published = true..
SNS MessageAttributes를 이용한 분산 시스템 추적용 Trace Id 전달 방법 프로젝트를 진행하면서 기존에 진행하던 방법에 많은 에러사항이 있다는 걸 느끼고 SNS, SQS를 사용하면서 Trace Id를 전달하는 새로운 방식인 MessageAttributes를 적용한 과정을 설명해 보겠다. 기존 로직과 코드에 대해서 상세한 설명은 아래 글에 작성되어 있다. [Spring Boot] 분산 시스템에서의 SNS/SQS 메시지 처리: 단일 책임 원칙과 Zipkin의 Trace ID 에러 핸들링을 중심으로 [Spring Boot] 분산 시스템에서의 SNS/SQS 메시지 처리: 단일 책임 원칙과 Zipkin의 Trace ID 에러 핸들링을 분산 시스템에서의 SNS/SQS 메시지 처리: 단일 책임 원..
스프링 배치에서 chunk와 JPA pageSize 설정의 관계성 배치 코드를 작성하면서 chunk와 JPA setPageSize 개념이 헷갈려 해당 내용을 자세히 정리해 봤다. 1. 스프링 배치의 setPageSize()와 chunk()의 차이점 스프링 배치에서 setPageSize()와 chunk() 설정은 종종 혼동될 수 있는데, 이 둘은 매우 다른 목적으로 사용된다. 1-1. setPageSize() 설정 (JpaPagingItemReader) setPageSize() 메서드는 JpaPagingItemReader를 사용할 때, 데이터베이스에서 한 번에 읽어올 레코드의 수를 설정한다. 이 설정은 데이터베이스와의 상호작용과 메모리 관리에 직접적인 영향을 미친다. 데이터베이스 효율성 측면에서 페이지 크..
스프링 부트 3에서 스프링 배치와 JPA를 사용하여 배치 테이블 자동 생성하기 스프링 부트 3 버전에서 적용되는 스프링 배치 적용 방법에 변경 사항이 있다. 더 자세한 내용은 아래 링크에 작성해 놨다. [Spring Boot] Spring Boot 3.X 버전에서 Spring Batch 적용하기 [Spring Boot] Spring Boot 3.X 버전에서 Spring Batch 적용하기 스프링 부트 3 및 스프링 배치 5의 새로운 기능과 변경사항을 알아보자 1. 공식에 따른 SpringBoot 3에서 스프링 배치의 변경된 점 스프링 부트 3과 함께 출시된 스프링 배치 5는 많은 중요한 인프라 yijoon009.tistory.com 1. 스프링 부트 3에서의 스프링 배치 변경 사항 스프링 부트 3에서는 ..
스프링 부트 3 및 스프링 배치 5의 새로운 기능과 변경사항을 알아보자 1. 공식에 따른 SpringBoot 3에서 스프링 배치의 변경된 점 스프링 부트 3과 함께 출시된 스프링 배치 5는 많은 중요한 인프라 변경사항을 포함하고 있다. 이러한 변경사항은 스프링 배치를 사용하는 개발자들에게 더 나은 데이터 관리, 효율적인 트랜잭션 처리, 그리고 유연한 배치 작업 구성을 가능하게 한다. 1-1. 데이터 소스 및 트랜잭션 매니저 업데이트 이전 스프링 배치 버전에서는 인메모리 작업 저장소가 사용되었다. 인메모리 작업 저장소는 데이터를 임시 메모리에 저장하는 방식으로, 애플리케이션을 재시작하면 데이터가 사라지는 단점이 있었다. 스프링 배치 5에서는 이 인메모리 작업 저장소 구현을 제거하고, 대신 JDBC(Java..
분산 시스템에서의 SNS/SQS 메시지 처리: 단일 책임 원칙과 Zipkin의 Trace ID 에러 핸들링을 중심으로 이번 글에서는 단일 책임 원칙에 따라 메소드를 분리하고, SNS 발행 메소드와 SQS 메소드에서 메시지 에러 핸들링 내용을 다뤄보자. 프로젝트를 진행하면서 이제 모든 정상 프로세스가 완료되었고, 배치 작업을 시작하려고 했을때 갑자기 팀원이 근데, 만약에 메세지에 traceId가 없을 때 SQS Listener에서 에러 핸들링은 어떻게 하지? 라는 질문을 했다. 그래서 SNS 메세지에 traceId가 없을 때 발생할 수 있는 에러를 핸들링하는 과정을 소개하겠다. 1. 기존 프로세스 간략 설명 기존에 어떤 프로세스로 진행되었는지 전부 설명하기에는 너무 오래 걸릴것같아서, 아래 글을 통해 확인..
평양냉면7
하다보니 재미있는 AI