본문 바로가기

전체 글631

Hikari Connection Pool 기본 작동 원리 배경 업무를 하며 ForkJoinPool을 이용해 병렬 처리를 하는 작업 중에 DB IO가 발생하는 작업이 있어 커넥션 풀 사이즈 관리가 필요했다. 성능 최적화와 함께 안정적인 설계를 고민하며 Hikari Connection Pool의 기본 작동 원리부터 다시 살펴보았다. 본 글은 이를 정리한 글이다. HikariCp의 기초가 되는 내용인 컴포넌트와 프로세스에 대해서만 다루고, Thread와 Pool Size, 기타 테스트 들에 대해서는 다음 글에서 추가로 확인할 수 있다. 백엔드 응답 속도 500ms, 돌고 돌아 90% 개선한 썰 목차 사전 이해를 위한 구조 설명 문제 상황 1차 개선: 캐시 도입 2차 개선: mesh 방식으로의 전환 추가 개선 포인트: ForkJoinPool을 이용한 병렬 처리 & C.. 2024. 4. 11.
Java 병렬 처리 ForkJoinPool 기본 작동 원리 배경 업무를 하면서 ForkJoinPool을 이용한 병렬 처리를 사용해볼 일이 생겼다. 엄밀히 말하면 Stream API의 parrallelStream()이었다. 본 글은 그에 앞서 간단히 ForkJoinPool의 작동 원리를 공부하면서 정리한 글이다. 작동 원리를 알아보자 ForkJoinPool은 자바 7에서 도입된 프레임워크로, 작업을 작은 단위로 분할하고, 이를 여러 스레드에 할당하여 병렬로 처리한다. 핵심 로직은 '분할 정복 알고리즘'에 기반한다. 먼저 핵심 개념 및 컴포넌트를 살펴보면 다음과 같다. 핵심 컴포넌트 📌 ForkJoinPool ForkJoinTask를 실행하는데 사용되는 스레드 풀로, 알고리즘 작업의 균형을 동적으로 조정하는 역할을 한다. 📌 ForkJoinTask 작업의 기본 단위.. 2024. 4. 11.
REAL MySQL 8.0 - 1권 Real MySQL 8.0 (1권) 《Real MySQL 8.0》은 《Real MySQL》을 정제해서 꼭 필요한 내용으로 압축하고, MySQL 8.0의 GTID와 InnoDB 클러스터 기능들과 소프트웨어 업계 트렌드를 반영한 GIS 및 전문 검색 등의 확장 기능들을 추가로 수록했다. 또한 《Real MySQL 8.0》은 단순 SQL 문법이나 쿼리 작성보다는 MySQL 서버를 활용하는 프로젝트에서 꼭 필요한 경험과 지식을 전달하는 데 집중했다. 이 책을 처음부터 끝까지 정독할 수 있다면 더없이 좋겠지만 필요하거나 관심 있는 내용 위주로 살펴봐도 지금까지 경험했던 수많은 문제들을 해결할 수 있을 것이다. ★ 이 책에서 다루는 내용 ★ ◎ MySQL 설치와 서버 아키텍처 ◎ 트랜잭션과 잠금 ◎ 인덱스 종류의 .. 2024. 4. 1.
자바에서 동시성 문제를 다루는 n가지 방법들(feat. 주식 매수) 이 글에 대해서 자바에서 동시성 문제를 다루는 n가지 방법을 소개합니다. 동시성 이슈가 많이 발생하면서도 중요하기도 한 주식 거래 시스템을 예로 들어, 매수와 매도 상황에서 발생할 수 있는 동시성 문제를 정의하고, 이를 해결하는 다양한 해법들 및 테스트 결과를 소개합니다. 예제로 사용한 소스코드는 다음 링크에서 보실 수 있습니다. https://github.com/renechoi/study/tree/main/java-concurrency-problem/src 전제 기술적 범위 먼저, 본 글에서 다루는 기술적 범위의 한계는 다음과 같다. 서버 인스턴스는 한 대로 가정한다. 분산 환경의 동시성 문제는 더 포괄적인 주제로 분리된 지면을 통해 소개하고자 한다. 해결 아이디어에서 데이터베이스를 이용한 해결 방법은.. 2024. 3. 28.
넥스트스텝 ATDD, 클린 코드 with Spring 8기 수료 회고 소개 소프트웨어 생태계에 선한 영향력을 이라는 모토를 가진 넥스트스텝에서 약 5주간 수행한 교육 과정 회고 글입니다. 자바, 스프링을 사용해 백엔드 어플리케이션을 구현하되, 테스트주도개발(TDD) 방법론을 훈련하는 과정이었습니다. 새로운 지식을 습득하며 익힌 코딩과 리뷰 사이클, 고민하고 풀어냈던 경험을 공유합니다. 어쩌다? 어떻게 알게되었는지 모르겠는데 회사를 다니게 되면 넥스트스텝에서 하는 교육을 들어야지, 하고 막연히 생각하고 있었던 것 같다. 어떻게 알게 되었는지...는 정말 모르겠다 (이것이 무의식 마케팅의 힘인가). 아마 우아한테크코스와의 접점 때문이 아닐까 싶다. 자바 개발을 시작하면서 우아한테크코스 프리코스에 참여했었고 그때 임팩트가 컸던 것 같다. 개발자로서는 처음 걸음마를 시작하는 시점.. 2024. 3. 15.