JCF 의 HashMap 코드를 보다가 SerialVersionUID 를 보고 호기심에 학습한 내용 1. 클래스의 기본 해시값을 통한 SerialVersionUID 의 문제클래스의 구조가 변경되었을 때 오류가 발생한다.예시: 멤버 변수 타입 변경, 멤버 변수 삭제프레임워크 또는 라이브러리에서 제공하는 클래스의 객체도 버전업을 통해 SerialVersionUID가 변경될 경우가 있으므로 예상하지 못한 오류가 발생할 수 있다. 2. SerialVersionUID??SUID 는 직렬화와 역직렬화 과정에서 값이 서로 맞는지 확인한 후에 처리한다.(맞지 않다면 InvalidClassException 를 반환한다.)자바의 직렬화 스펙 정의를 살펴보면 SUID 값은 필수가 아니며 선언되어 있지 않으면 클래스의 기..
1. Virtual Thread?(1) 도입 배경기존 자바 스레드인 platform thread 의 한계platform thread : OS thread 를 래핑한 형태이며, 자바의 전통적인 스레드이다.(Java thread code 는 실제 OS thread 를 이용하는 방식으로 동작한다.)OS 커널에서 사용할 수 있는 스레드 갯수가 제한적이고 생성, 유지 비용이 비싸다.이를 효율적으로 사용하기 위해 thread pool 사용처리량(throughput) 한계Thread Per Request 으로 사용자 요청을 처리하지만 OS 스레드는 무한정 늘릴 수 없는 단점이다.application throughput 은 thread pool 에 의존적이다.Blocking 으로 인한 리소스 낭비Thread Per R..
풀필먼트 입고 서비스팀에서 분산락을 사용하는 방법 - Spring Redisson어노테이션 기반으로 분산락을 사용하는 방법에 대해 소개합니다.helloworld.kurly.com 1. RMS(Receiving Management System - 입고관리 시스템) 의 동시성 문제카프카로 동시에 들어오는 중복된 발주를 수신하는 경우검수/검품 이슈 등록 시 더블 클릭, 네트워크 이슈로 인해 중복된 요청이 동시에 들어오는 경우이동 출고시 여러 작업자가 CTA를 동시에 클릭하여 잘못된 재고 트랜잭션이 생성되는 경우 2. Redisson library 를 선정한 이유(1) Redisson Library 의 장점Pub/Sub 방식을 이용해 락이 해제될 경우 락을 subscribe 하여 락 획득을 시도하여 Redis ..
멀티스레드와 자바 비동기 작업으로 간단한 콘솔 기반 카페 만들기 GitHub - pbg0205/asyc-cafeContribute to pbg0205/asyc-cafe development by creating an account on GitHub.github.com CompletableFuture? 자바는 ThreadPool 과 CompletableFuture 를 기반해 비동기 작업을 지원한다. 기본적으로 자바는 Synchrous & Blocking 기반으로 동작하지만 비순차적 작업과 실행 흐름 대기로 인한 자원의 낭비와 작업이 지연될 수 있는 단점이 있다. 이를 개선하기 위한 방법으로 자바에서 또한 비동기(Asynchronous) 지원을 위한 CompletableFuture 와 같은 개념이 대두되었..
헝가리에 머물며 AWS Certified Solutions Architect Associate(SAA) 를 취득했다. 자격증 취득을 선호하진 않지만 다양한 비즈니스 모델에서 사용하는 AWS 서비스 종류, 효율적인 아키텍쳐에 대해 공부해보고 싶어 AWS 자격증을 취득해보기로 했다. 시험 할인 & 응시SAA 시험 응시료는 150 USD, 한화로 대략 20만원 정도여서 가격적으로 부담스럽다. 응시료에만 20만원을 지불하는 것이 쉽지 않다. 다행히 AWS 에서는 Associate Challenge 을 참여하면 50% 할인 바우처를 제공한다. 작성일을 기준으로 2024년 12월 12일까지 챌린지에 참여 등록만 해도 바우처를 제공해 미리 챌린지 등록을 하고 시험 준비를 했다.https://pages.awsclo..
토이 프로젝트에서 JPA 기반 회원 삭제 배치를 개발하면서 겪었던 스토리에 대해 정리하고자 작성한 내용 1. Background(1) JPA 연관 관계회원 삭제 배치는 soft delete 를 통해 탈퇴한 회원의 사용자 정보를 특정 기간동안 데이터를 보관한 뒤 제거하는 배치이다. DB 데이터는 JPA 기반으로 제어하고 있다. 회원 삭제 배치는 Member 와 MemberRoleMapping 데이터를 제거하는 과정이며 연관 관계를 맺고 있었다. 또한, Member entity 제거할 때 함께 MemberRoleMapping 데이터를 제거하기 위해 cascade option 이 설정되어 있다. // Member Entity@Entity@Getter@NoArgsConstructor(access = Acces..