🍃 Spring
[Spring] PQC(Post-Quantum Cryptography)
PQC의 필요성PQC가 필요한 이유는 양자 컴퓨터가 RSA 알고리즘을 무력화시킬 수 있기 때문이다.PQC는 양자 내성 암호(Post-Quantum Cryptography)의 약자다.이전에 Qiskit을 이용해서 IBM의 양자 컴퓨터를 이용했을 때 당시에는 지식이 모자라 양자 컴퓨터로만 구현이 가능한 BB84 알고리즘만이 유일한 해결 방안이지 않을까 생각했다.하지만 PQC라는 개념이 있었으니 역시 당시에는 지식 부족이었다.그리고 양자 내성 암호는 양자 컴퓨터가 아니어도 충분히 구현할 수 있는 개념이다.PQC란차세대로 나올 JEP에서는 PQC를 포함하고 있지만 프로덕션 환경에서 이용하려면 아직은 한참 시기상조다.그럼 이용을 못하는 것인가? 그건 또 아닌게 현재는 Bouncy Castle의 PQC를 사용하는 ..
[Spring] 이중 트랜잭션으로 인한 PessimisticLockingFailureException
최근에 PessimisticLockingFailureException 예외를 마주쳤다.이번에 내가 겪은 사례는 조금 특이한 구조에서 발생했다.상황 요약A 프로젝트가 B 프로젝트의 API를 호출한다.A와 B 모두 트랜잭션을 사용한다.B에서 JPA로 flush() 를 수행했는데 이 시점에 PessimisticLockingFailureException 이 발생했다. 원인핵심은 이중 트랜잭션 구조에 있다.A 프로젝트에서 트랜잭션이 열린 상태로 B를 호출한다.B에서도 트랜잭션이 별도로 시작된다.B에서 JPA가 엔티티를 비관적 락(PESSIMISTIC_WRITE)으로 조회한다.flush() 시점에 락을 걸 수 없어서 예외 발생:A 쪽 트랜잭션이 락을 보유하고 있거나,DB가 락 획득에 실패하거나 타임아웃이 발생한 경..
[Spring Batch] 개인 정리
스프링 배치 소개- 스프링 배치는 Job 안에 여러개의 Step이 있는 구조다@Beanpublic Job myJob(JobRepository jobRepository, Step step1, Step step2) { return new JobBuilder("myJob", jobRepository) .start(step1) // Step1 실행 .next(step2) // Step2 실행 .build(); - JobRepository Job이 실행될 때마다 실행한 기록(성공/실패)과 관련된 상태 정보가 JobRepository에 저장된다.저장되는 위치는 기본적으로 인모메리 DB인 HSQL 메모리에 저장된다.하지만 mysql 의존성을 어떻게..
[Spring] RFC 7232 - Conditional Requests로 비용 및 부하 최적화 하기
개요RFC 7232 - Conditional Requests는 브라우저가 불필요한 서버 요청을 최소화하고, 네트워크 트래픽과 서버 자원을 절약할 수 있도록 도와주는 인터넷 표준 정의 문서를 말합니다. 이 기능을 잘 사용한다면 AWS와 같은 클라우드 환경에서 비용 최적화 및 대용량 트래픽에서의 트래픽 개선도 가능합니다.기능 소개If-Modified-Since의 시간 기준으로 업데이트된 것만 조회 가능 ETag와 Last-Modified 기준으로 기존에 받았던 정책 값을 캐시 해서 사용 가능 브라우저의 캐시 자동 처리로 인해 서버에 불필요한 요청 제어일단 위의 기능들은 굳이 규약을 안 지켜도 만들 수 있으나 규약을 지켜서 만든다면 좀 더 효율적인 코드 개발이 가능해지겠습니다.바로 활용 예시를 몇개 확..