전체 글 55

[Java] 로컬 캐시 3대장 완벽 비교: Caffeine vs Ehcache vs Guava (2)

저번글에서 Caffeine, Ehcache, Guava에 대한 기본 개념과 성능 차이를 알아봤다.이번 글에서는 좀 더 나아가, 왜 이런 차이가 발생하는지 정리하겠다. Guava Guava는 3 캐시 중 성능이 가장 안 나오는 캐시다. 구조는 Java의 ConcurrentHashMap과 동일하다.A Cache is similar to ConcurrentMap, but not quite the same. The most fundamental difference is that a ConcurrentMap persists all elements that are added to it until they are explicitly removed. ConcurrentMap과 동일하게, 여러 Segment로 나눠서 데..

Java 2026.02.16

[Java] 로컬 캐시 3대장 완벽 비교: Caffeine vs Ehcache vs Guava

애플리케이션의 성능을 높이는 가장 확실한 방법 중 하나는 **로컬 캐시(Local Cache)**를 사용하는 것입니다. Redis 같은 분산 캐시보다 훨씬 빠르고 간편한 Java 로컬 캐시의 대표 주자 3종을 분석해 보았습니다. 1. Caffeine Cache: 현시점 최강의 성능Caffeine은 Java 8 이상을 기반으로 한 고성능 최신 캐시 라이브러리입니다. Spring Boot 2.0부터 기본 캐시로 사용될 만큼 성능과 효율성을 인정받았습니다.동작 원리: W-TinyLFU(Window TinyLFU) 알고리즘을 사용합니다. 데이터의 '최근성(LRU)'과 '사용 빈도(LFU)'를 모두 고려하면서도, 아주 적은 메모리 오버헤드로 높은 적중률을 유지합니다.장점:압도적인 읽기/쓰기 속도 (Lock 경합 ..

Java 2026.01.31

JMX(Java Management Extensions)와 Spring Actuator

Java로 어플리케이션을 개발했다면, 모니터링은 어떻게 할까?Java에는 어플리케이션 모니터링을 위한 JMX(Java Management Extensions)가 있다.이번 글에서는 JMX가 어떻게 Java 어플리케이션을 모니터링하는데 도움을 주는지 정리하겠다. 여기에 더해 Spring Actuator가 어떻게 JMX를 사용하고 있는지도 정리하겠다. JMX 정의와 동작 방식 JMX는 크게 3가지 컴포넌트로 구성되어 있다. Instrumentation쉽게 설명하면, 모니터링하고자 하는 리소스에 계측기를 다는 과정이다.이는 엄청 간단하다, JMX Specification에 따라 MBean을 구현하고, MBean 서버에 등록하면 된다. JMX AgentJMX Agent는 자원을 직접 제어하고, 자원들을 워녁 관..

Java 2026.01.12

Java Virtual Machine JIT Compiler

이번 글에서 Java Virtual Machine에 대해 정리한다.기본적인 개념, 동작 원리에 대해 살펴보고 그 중 성능과 관련이 큰 JVM의 Execution Engine에 대해 정리한다. JDK vs JRE vs JVM본격적인 내용에 앞서 세 가지 핵심 용어의 차이를 정리한다. JDK(Java Development Kit) : 자바 프로그램을 개발, 컴파일, 디버그 및 실행을 위한 환경과 도구. JRE + 여러 개발 도구들로 구성됨.JRE (Java Runtime Environment) : 자바 애플리케이션을 구동하기 위해 사용되는 소프트웨어 컴포넌트들의 묶음. JVM + 자바 프로그램에 필요한 Class + Property Files로 구성됨.JVM (Java Virtual Machine) : 자바..

Java 2025.12.29

편안함의 습격

2025.12.26 을 읽고 나서 여러 산업의 발전 덕분에 요즘 사회는 참 편안하다. SNS를 통해 따분함을 날리고, 배달 앱과 근처 식당들 덕분에 배고픔을 느끼기도 전에 원하는 음식을 먹을 수 있다. 따뜻한 집에서 추위 걱정 없이 편안하게 생활하기도 한다. 그런데 과연 이러한 편안함이 우리에게 정말로 도움이 될까? 저자는 이러한 편안함의 대가로 우리가 여러 가지를 잃고 있다고 말한다. 가장 공감이 갔던 부분은 건강한 삶을 살고 싶다면 스스로를 '컴포트 존(Comfort Zone)'에서 벗어나게 해야 한다는 점이었다. 생각해보면 정말로 건강하고 행복하다고 느꼈던 순간들은 항상 컴포트 존을 벗어나 인내한 뒤 성취를 맛본 순간들이었다. 실제로 이 과정을 통해 정신적, 육체적으로 건강해지는 기분도 느꼈다. 2..

독후감 2025.12.26

Java 라이브러리 개발 실전 로그: Gradle 의존성, Maven 배포, 그리고 Spring 자동 설정

Java로 라이브러리를 개발하는 과정은 단순히 기능을 구현하는 것에서 끝나지 않습니다. 내가 만든 라이브러리를 사용자가 얼마나 편리하게 이용할 수 있는지 고민하는 것이 핵심입니다.이 글은 라이브러리를 개발하면서 겪었던 고민과 해결 과정을 정리한 '실전 로그'입니다. 다음 세 가지 주제를 중심으로 라이브러리의 완성도를 높이는 방법을 공유합니다.Gradle Dependencies: api와 implementation의 차이를 명확히 이해하고 의존성을 올바르게 전파하는 방법Maven Repository: 개발한 라이브러리를 maven-publish 플러그인을 이용해 배포하는 과정Spring Auto Configuration: Spring Boot 환경에서 라이브러리가 '마법처럼' 동작하도록 자동 설정을 제공하..

개발 경험기 2025.11.15

AI로 다시 만드는 커리어 with 잡코리아 후기

최근 뉴스에 AI 시대가 오면서 개발자라는 직업이 사라진다는 말들이 많다. 이와 관련해 같은 업계에 종사하시는 분들의 생각은 어떤지 궁금했고 실제로 AI를 어떻게 활용하고 계신지도 궁금했다. 그런데 마침, 잡코리아에서 'AI로 다시 만드는 커리어'를 주제로 밋업을 주최해 주셨다. 이번 글은 밋업의 내용과 느낀점을 기록해보려고 한다. 연사 3분이 오셔서 발표 해 주셨다. 모두 현업으로 바쁘실텐데 좋은 인사이트를 주셔서 너무 감사했다. [AI 자동화로 더 나은 개발자 되는 방법 - 조민규님 (toss)]AI 도구들을 이용해 AI가 할 수 있는 일들을 자동화한 방법들을 공유 해 주셨다.업무를 진행하면서 내가 하는 업무를 AI를 이용할 수 없을지 고민하시고, 실제로 자동화하여 생산성을 향상시킨게 인상깊었다. ..

Conference 2025.11.01

서버 개발자가 알면 좋은 MySQL Tips

서비스를 개발하는 서버 개발자라면, 빼놓을 수 없는 고민은 데이터를 어떻게 저장하고 어떻게 읽을지에 대한 고민이다.대부분의 서비스는 데이터를 저장하기 위해 RDB에 저장하고, 많은 RDB 솔루션 중 MySQL을 가장 많이 이용한다. 실제로 나도 MySQL을 이용해 데이터를 저장하고, 서빙하고 있다. 그러다 문득, "내가 MySQL이라는 솔루션을 제대로 이해하고 사용하는건가?"라는 의문이 들었다. 그래서 MySQL 서적 중 가장 많이 읽히는 RealMySQL을 읽었다. 이번글에서는 RealMySQL을 읽으면서 서비스 개발자가(내가..) 알고있으면 좋은 지식들을 정리하겠다. MySQL 아키텍쳐MySQL Engine : MySQL의 두뇌에 해당하는 처리를 수행한다. 요청된 SQL 문장을 분석하고, 최적화해 ..

Infrastructure 2025.08.31

Spring 우아하게 종료하기

우아하게 종료해야 하는 이유: Graceful Shutdown의 필요성API 서버를 운영하다 보면 배포나 오토스케일링(HPA) 등으로 인해 서버 프로세스가 갑작스럽게 종료될 수 있다. 만약 이 과정에서 현재 처리 중이던 요청이 강제로 중단된다면, 사용자에게는 불완전한 응답이 전달되고 데이터 손실이나 서비스 장애로 이어질 수 있다. 이러한 문제를 막기 위해서는 프로세스가 종료되더라도 기존에 진행하던 작업들은 끝까지 완료하도록 하는 '우아한 종료(Graceful Shutdown)' 처리가 필수적이다. 이번 글을 통해 Spring이 종료되는 흐름과, 우아하게 종료하려면 어떤 설정들을 추가해야 하는지 정리하겠다. 스프링이 종료되는 과정 Kubernetes 환경에서는 보통 SIGTERM을 이용해 수행중인 Proc..

Spring 2025.08.18