[성능 개선] 여러 개의 업데이트를 하나의 트랜잭션으로 처리하기 (Feat. Mybatis, Bulk Update)
·
성능 개선
1. 시작하며최근 회사에서 Quartz 스케줄링을 통해 서버 디렉토리에 저장된 파일 상태와 데이터베이스의 기존 데이터를 비교하여 주기적으로 업데이트하는 작업을 개발했습니다.하지만 초기 구현 방식은 트랜잭션이 여러 번 발생하면서 성능 저하가 심각하게 발생했습니다. 이에 Bulk Update를 도입하여 성능을 대폭 개선한 사례를 공유하고자 합니다.회사 해당 프로젝트 코드는 반입이 금지되어 있으니 이 글에서는 여러 게시글 데이터를 한 번에 업데이트하는 방법과 함께 성능 최적화 및 Null 처리 시 주의사항을 설명합니다.2. 기존 방식의 문제점기존 코드는 애플리케이션단 코드에서 개별 데이터를 업데이트하는 쿼리를 반복적으로 실행하면서 트랜잭션이 여러 번 발생하는 문제가 있었습니다.2.1 기존 코드1) 기존 Myb..
[트러블 슈팅] Jenkins Publish over SSH: BapPublisherException 오류 해결하기
·
트러블 슈팅
1. 시작하며Jenkins를 활용한 CI/CD 파이프라인 설정 중 Publish over SSH 플러그인을 사용하여 서버 간 파일 전송 및 배포를 설정하려 했지만, 예상치 못한 인증 오류로 인해 막히는 경우가 종종 있습니다. 이번 포스트에서는 BapPublisherException 오류의 원인과 해결 방법을 공유합니다.2. 문제점 발생Main Server(192.168.0.25)에 설치된 Jenkins를 통해 Sub Server(192.168.0.47)로 배포를 진행하려고 했습니다. 이를 위해 Jenkins의 Publish over SSH 플러그인을 사용하여 SSH 통신을 설정했지만, 다음과 같은 오류가 발생했습니다.jenkins.plugins.publish_over.BapPublisherExceptio..
[트러블 슈팅] SSH 접속 오류: 포트 설정과 포트포워딩의 중요
·
트러블 슈팅
1. 시작하며최근 라즈베리파이5를 Sub Server로 설정하여 원격 접속을 통해 관리하던 중, 갑자기 외부에서 SSH로 접속이 되지 않는 문제가 발생했습니다. 사설 IP로는 정상적으로 접속이 가능했지만, 공인 IP를 통한 외부 접속에서는 실패하였습니다. 본 포스트에서는 문제의 원인을 분석하고 해결 과정을 공유하고자 합니다.2. 문제점 발생외부에서 공인 IP를 이용한 SSH 접속이 불가능한 상황이었습니다. 이는 네트워크 설정 혹은 SSH 설정의 문제로 추정되었습니다.2.1 원인 분석1) SSH 설정 확인하기먼저, 서버의 SSH 설정을 확인해보겠습니다. 아래 명령어를 통해 설정 파일을 열어 확인하겠습니다.sudo nano /etc/ssh/sshd_config해당 파일에서 SSH 연결 포트가 기본값인 22가..
[JAVA] 레코드 (record) 정리
·
BackEnd
1. 레코드 (record)란?자바에서 record는 자바 16부터 정식 기능으로 도입되어, 자바 17에서 계속해서 사용되고 있는 기능입니다. record는 불변의 데이터 운반 객체를 간단하게 생성할 수 있는 방법을 제공합니다. 이는 주로 데이터를 담기 위한 클래스에 매우 유용하며, 클래스를 정의할 때 필요한 상용구 코드(boilerplate code)의 양을 대폭 줄여줍니다.2. record의 주요 특징들2.1 불변성 (Immutability)레코드는 불변 객체입니다. 레코드의 모든 필드는 final로 선언되며, 객체가 생성된 후에는 필드 값을 변경할 수 없습니다. 즉, 레코드는 객체의 상태가 절대 바뀌지 않도록 보장합니다.public record Person(String name, int age) {..