1. JVM의 체크포인트 생성과 복구를 위한 CRaC 프로젝트 [ CRaC 프로젝트란? ] CRaC(Coordinated Restore at Checkpoint) 프로젝트는 실행 중인 Java 인스턴스에 체크포인트(이미지 혹은 스냅샷의 생성)를 생성하고 복구하는 방법을 연구한다. 이 프로젝트의 주요 목표는 자바 프로그램에 체크포인트 생성과 복구를 알리는 새로운 표준이 되는 독립적인 API를 개발하는 것이다. CRaC은 Azul Systems에서 개발하였으며 AWS Lambda에서 지원했던 기능으로, 현재는 OpenJDK 프로젝트이다. 이는 리눅스(Linux)에서 체크포인트/복원 기능을 구현한 CRIU 프로젝트를 기반으로 하며, 자바 애플리케이션에 맞게 몇 가지 개선 및 조정 사항이 추가되었다.이를 통해 ..
1. EmptyResultDataAccessException 예외가 발생한 SQL 쿼리와 파라미터 로깅하기 [ 요구 사항 ] 서비스를 개발하다 보면 존재하지 않는 리소스에 접근하여 EmptyResultDataAccessException 에러가 발생하는 경우가 있다. 하지만 EmptyResultDataAccessException를 통해서는 어떤 쿼리의 어떤 파라미터로 인해 문제가 발생했는지 정확한 파악이 어렵다. 만약 여러 개의 레포지토리에 접근하는 중에 리소스를 접근하고 있다면 더욱 파악이 어렵다. 따라서 에러가 발생한 쿼리를 로깅하여 에러 로그를 보완하도록 하자. [ 기능 추가 ] 쿼리와 파라미터를 저장하기 위한 컨텍스트 추가 파라미터를 컨텍스트에 저장하기 위한 AOP 추가 실행 쿼리를 컨텍스트에 저장..
1. 가상 스레드(Virtual Thread)를 지원하기 위한 스프링의 작업들 스프링 부트(Spring Boot) 3.2부터 가상 스레드를 공식적으로 지원하기 시작했다. 스프링은 구체적으로 가상 스레드를 지원하기 위해 다음과 같은 작업들을 진행해왔는데, 각각 자세히 살펴보도록 하자. 가상 스레드 사용 여부 프로퍼티 추가 스레드 모델 Enum(Threading)과 Condition 어노테이션 추가 가상 스레드 사용 여부에 따른 빈 등록 [ 가상 스레드 사용 여부 프로퍼티 추가 ] 스프링 부트는 애플리케이션 구성을 위한 메타 데이터를 spring-boot-autoconfigure 모듈의 spring-configuration-metadata.json으로 관리한다. 가상 스레드를 지원하기 위한 프로퍼티 역시 해..
아래의 내용은 해당 포스팅을 번역 및 정리한 내용입니다. 해당 포스팅은 2013년의 글이므로 이를 번역하는 현재 시점과 많이 다를 수 있음을 참고해서 읽어주시면 좋을 것 같습니다. 1. Project Oxygen, 관리자의 필요성에 대한 구글의 실험 [ 관리자(Manager)의 필요성에 대한 의문 ] 구글 초창기부터 회사 내의 관리자의 가치에 대해 의문을 제기하는 사람들이 있었다. 구글의 엔지니어 Eric Flatt는 “구글은 엔지니어가 엔지니어를 위해 만든 회사다”라고 말할정도로 구글은 기술중심적인 회사이며, 관리자에 대한 회의적 관점은 극도로 기술중심적인 문화에서 비롯되었다. 구글 뿐만 아니라 대부분의 엔지니어는 상사와 커뮤니케이션하거나 다른 엔지니어의 진행 상황을 감독하기보다는 시스템 설계와 디버깅..
1. 실용주의 철학 실용주의 프로그래머는 태도와 스타일 그리고 문제와 해법에 접근하는 철학에 차이가 있다. 그들은 직면한 문제 너머를 생각하며, 문제를 항상 더 큰 맥락에 놓고, 항상 더 큰 그림을 보려 한다. 그들의 또 다른 성공의 열쇠는 자신이 하는 모든 일에 책임을 진다는 점이다. 책임감이 있기 때문에 프로젝트가 방치된 채로 끝장나는 걸 게으르게 옆에서 지켜보고만 있지 않는다. [ 고양이가 내 소스코드를 삼켰어요 ] 실용주의 철학의 초석 중 하나는 경력 향상, 프로젝트, 일상 업무의 면에서 자신과 자신의 행동에 대해 책임을 지는 것이다. 자신의 무지나 실수를 인정하기를 두려워하지 않고, 전문가답게 정직하고 솔직해지려고 노력한다. 자신의 능력에 대해 자부심을 가질 수 있지만, 실수나 무지와 같은 단점..