arrow_upward
본문 바로가기

전체 글28

스프링의 이벤트 발행과 구독 사용방법 이벤트 기반 아키텍처는 시스템 내에서 발생하는 이벤트를 통해서 컴포넌트 간의 결합도를 낮추는 방법으로, 스프링에서는 이벤트 발행(publish)과 구독(subscribe) 기능을 통해서 컴포넌트 간의 느슨한 결합을 도와준다.  결합도가 높은 주문 메서드 작성다음 코드는 주문을 하는 코드이다. 예제를 위해 주문 로직은 간단하게 작성했다.@RequiredArgsConstructor@Servicepublic class OrderService { private final OrderRepository orderRepository; private final MemberRepository memberRepository; private final SendMailService mailService; .. 2024. 11. 21.
cron 배치 작업 시 중복 실행 문제 방지 실시간 쌓이는 로그를 cron을 사용해서 스케줄링 할 때 curl로 호출한 API가 중복으로 호출되어 실행되는 문제가 있었다.cron 스케줄링은 crontab에 설정한대로 매 분마다 배치 스크립트 파일을 실행한다.문제는 API를 호출해서 로그를 처리하는 작업이 쌓인 로그의 양에 따라서 트래픽이 적을 때는 1분 이내로 끝날 수 있다.하지만 트래픽이 많아서 로그가 많이 쌓이면 처리시간이 1분 이상 걸리면서 배치 주기를 보다 작업이 길어지면서, 이전 배치작업이 끝나지 않았는데 스케줄링에 의해 다음 작업이 호출돼 API가 중복 호출되는 문제가 있었다. crontab* * * * * /home/test/log/batch.sh batch.sh#!/bin/bash# 배치 API 호출/usr/bin/curl -s "h.. 2024. 10. 7.
깃(Git) 개념 및 명령어 정리 깃(Git)이란?깃이란 VCS(Version Control System)으로 버전을 관리해주는 시스템으로, 버전 관리는 이전에 작업했던 특정 버전을 불러올 수 있도록 시간 경과에 따른 파일 또는 파일 세트의 변경 사항을 기록하는 시스템이다.깃의 영역깃은 세가지 영역을 가지고 있다.Working Directory : Git으로 관리하는 파일들이 위치하는 영역git init 명령어를 사용하거나 remote repository에서 clone 해왔을 때 지정한 디렉토리에서 .git디렉토리를 제외한 모든 파일들을 말한다. Staging Area : Working Directory에서 commit 하고자하는 파일을 저장하는 영역git에서는 기술용어로써 Index라고도 하며 스테이징 영역도 같은 문구라 보면 되고 깃.. 2024. 9. 26.
[Java] Optional 개념 및 사용법 자바 8버전에서 추가된 Optional 클래스의 개념과 사용방법을 정리해본다. null자바에서 null 값은 참조형 변수가 아무 객체를 가리키고 있지 않음을 나타내는 값이다.null 값은 참조형 변수의 초기값으로 아직 참조할 객체가 없음을 명시할 때, 필요 없는 객체를 가비지 컬렉터가 처리할 수 있도록 참조를 끊기 위해 사용된다. NullPointerExceptionNullPointerException은 null 값을 참조하려고 할 때 발생하는 예외다. 객체나 변수가 초기화되지 않았거나, 할당되지 않은 객체를 사용하려고 시도할 때 발생한다.OptionalNullPointerException은 자바 개발자들이 자주 겪게되는 문제로, 코드의 안정성을 떨어뜨리고 디버깅을 힘들게 한다.참조형 객체의 값을 할당할.. 2024. 9. 11.
Spring Rest Docs 사용하기 토이 프로젝트에서 Spring Rest Docs를 사용하면서 프로젝트 API의 문서화를 적용하며 내용을 정리해본다. API 문서API 문서란 웹 애플리케이션을 개발하면서 만들어진 HTTP API를 개발자나 사용자 입자에서 쉽게 이해할 수 있도록 문서화한 자료를 말한다.API의 사용 방법, 엔드 포인트, 요청 및 응답 구조 등을 담고 있다.API 문서를 생성하는 이유API 문서는 팀 내부, 외부 개발자 및 사용자로 하여금 API를 이해할 수 있게 도와준다. API 문서가 없다면 직접 소스를 보고 파악해야 할 수도 있다.API 문서를 제대로 작성하면 시스템의 변경이 있을 때 영향이 있는 부분을 파악해서, 유지보수성을 높일 수 있다.백엔드, 프론트엔드 협업 시 프론트드 개발자들이 API 문서를 통해 인터페이스.. 2024. 8. 23.
[Spring Batch] JobParameters와 검증(JobParametersValidator) 이번 포스팅에서는 JobParameters와 JobParametersValidator를 사용한 JobParameters를 검증하는 방법을 알아볼 것이다. JobParameters란?JobParameters는 배치 작업을 하는데 사용되는 파라미터의 집합이다. JobParameters는 JobInsteance를 식별하고 서로 다른 파라미터를 사용해서 배치를 여러 번 실행할 수 있게 한다.JobInstance를 식별한다는 것은 JobParameters로 동일한 작업을 구분지으며, 중복 실행하는 것을 방지해 준다. 그리고 파라미터를 동적으로 변경해서 처리할 수 있게 해준다. 스프링 부트에서 "시스템 변수를 사용해서 파라미터를 주입받을 수는 없을까?"라고 생각할 수 도 있지만, 시스템 변수는 스프링 배치에서 제공.. 2024. 7. 21.