ArchUnit으로 아키텍처 규칙 검증하기
·
Java
들어가며프로젝트를 진행할 때 가장 먼저 하는 일 중 하나는 코딩 컨벤션을 정하는 일입니다. 작게는 코드 포맷부터 변수명, 메서드명, 그리고 더 나아가 전체적인 폴더구조와 아키텍처까지 다양한 컨벤션을 정하고 프로젝트를 시작합니다. 이러한 컨벤션들은 대개 문서화로 남겨두게 되죠.팀원들이 모두 이러한 컨벤션에 잘 맞춰서 개발한다면 좋겠지만, 실제로는 이해도의 차이가 있기 마련입니다. 특히 신규 팀원이 들어온 경우에는 이런 문서를 온전히 이해하고 적용하기가 쉽지 않습니다. 그래서 보통 코드 리뷰라는 과정을 거치면서 이를 맞춰나가게 되는데, 이 과정에서 의사소통 비용이 발생하게 됩니다. 코드 리뷰에서는 비즈니스 로직이 잘 설계되었는지를 중점적으로 봐야 한다고 생각합니다. 자잘한 컨벤션까지 일일이 지적하는 것은 여..
MySQL의 데드락 탐지는 왜 느릴까?
·
MySQL
들어가며구글에서는 프라이머리 키 기반의 조회 및 변경이 아주 높은 빈도로 실행되는 서비스가 많았는데, 이런 서비스는 매우 많은 트랜잭션을 동시에 실행하기 때문에 데드락 감지 스레드가 상당히 성능을 저하시킨다는 것을 알아냈다. 그리고 MySQL 서버의 소스코드를 변경해 데드락 감지 스레드를 비활성화할 수 있게 변경해서 사용..- RealMySQL 8.0 중에서얼마 전 RealMySQL 8.0 책을 읽다가 이 문장을 보고 의문이 생겼습니다. 아무리 느리다고 해도 구글 같은 기업이 MySQL의 핵심 안전장치 중 하나인 데드락 탐지를 아예 꺼버린다니, 대체 이 데드락 탐지 메커니즘이 얼마나 비효율적이기에 그런 결정을 내렸을까요? 이 의문을 해결하기 위해 MySQL InnoDB 엔진의 소스 코드까지 파헤치게 되었..
Java 21: 새로운 LTS 버전의 주요 기능 톺아보기
·
Java
Java 21 출시Java 21이 2023년 9월 19일에 정식으로 출시되었습니다. Java 17 이후 새로운 LTS(Long-Term Support) 버전으로, Java 21은 다양한 개선 사항과 기능이 추가되었습니다. 이번 포스팅에서는 JDK 17 이후부터 JDK 21까지 통합된 JEP(JDK Enhancement Proposal) 중 개발자들의 코드 작성에 직접적인 영향을 미치는 주요 기능들을 살펴보겠습니다.잠깐, JEP란? JEP는 "JDK Enhancement Proposal"의 약자로, Java 개발자들이 Java 플랫폼의 새로운 기능, 개선 사항 또는 변경 사항을 제안하기 위한 공식적인 절차입니다. JEP는 Java 언어, 라이브러리, 도구 또는 JDK 전반에 걸친 개선을 다루며, 새로운 기..