☕ Java
PQC(Post Quantum Cryptography) in Java
2026년 새 사업의 일환으로 양자 내성 암호의 시작을 알리는 소개글로 시작한다.Java 24(2025년 3월)에 도입된 두 개의 새로운 JEP는 자바에서 양자 컴퓨터의 공격으로 부터 막기 위한 포스트 양자 암호(Post-Quantum Cryptography, PQC)라는 주제를 다룬다. 해당 JEP는 다음과 같다.JEP 496 – 양자 내성 모듈 격자 기반 키 캡슐화 메커니즘JEP 497 – 양자 내성 모듈 격자 기반 디지털 서명 알고리즘이상적인 암호 시스템은 두 당사자가 사전에 비공개 채널을 통해 키를 교환하는 방식이지만, 이는 대규모 환경이나 장거리 통신, 혹은 사전에 서로를 알지 못하는 당사자 간의 통신에서는 현실적으로 작동하지 않는다.이 문제를 해결하기 위해 공개 키 암호화는 일방향 함수(one..
[Java] Garbage Collection의 STW(Stop The World) 부하 테스트
목표 Java의 가장 대표 격인 GC인 G1GC에서의 Stop The World를 빈번하게 유도해보고 초저지연 GC도 사용해보겠습니다.얕게 배워본 초저지연 GC로 일단 테스트부터 해보며 어떤 상황일 때 ZGC를 사용해볼 법한지 알아보겠습니다.JDK 17에서의 G1GC 테스트우선 JDK 17에서 아무 설정도 건드리지 않으면 G1GC로 선택이 되니 바로 테스트해 보겠습니다.일단 10MB를 배열에 지속적으로 할당과 해제를 반복하는 것을 1000번 진행합니다.private static final int SIZE = 10 * 1024 * 1024 * 10; // 100MB씩 할당public void createMemoryPressure() { // 메모리를 빠르게 할당하고 해제하면서 GC를 유도 for (in..
[Java] JMH(Java Microbenchmark Harness)를 이용한 성능 테스트
개요테스트 소스는 깃헙에 있습니다.JMH(Java Microbenchmarking Harness)는 Java 애플리케이션에서 작은 코드 조각, 즉 "마이크로벤치마크"의 성능을 정확하고 신뢰성 있게 측정할 수 있습니다. 예를 들어 문자열을 +로 결합하는 방식과 StringBuilder의 속도 차이 등을 벤치마크 해볼 수 있습니다.그 외에도 synchronized, Lambda와 반복문. hashCode() & equals(), 배열 처리 방식(병렬, 순차), 기본 타입과 객체 타입 간 변환 성능 차이 등 작은 코드 조각에 대한 성능을 확인해볼 수 있습니다.요즘에는 컴퓨터 성능이 다 좋아서 웬만하면 신경을 쓰지 않아도 된다고 주장하는 경우도 있습니다.하지만 클라우드 환경에 대한 성능을 최소한으로 사용해서 비..
[Spring] DTO는 어디서 변환할까? (feat. DDD)
MVC와 헥사고날일반적으로 규모가 작은 MVC 개발 방식(도메인 중심이 아닌 경우)은 일반적으로 모든 서비스 레이어에서 DTO를 파라미터로 받고 return도 DTO로 합니다.헥사고날에서는 계층 간의 시스템적인 완벽한 분리를 추구하기 때문에 서비스 레이어에서는 일반적으로 도메인 객체만을 담당하게 됩니다. 비교는 MVC와 헥사고날로 한 것이지만 더 넓게 보자면 SQL 중심의 개발 방식 vs DDD 개발 방식 을 두고 얘기한 것 이기도 합니다.헥사고날의 코드 구조와 장점이제 헥사고날 코드를 잠깐 구경하겠습니다.Member라는 도메인 객체가 있고 해당 객체를 서비스 레이어에서 다루는 코드 입니다.public class Member { private Long id; private String name; ..