본문 바로가기

전체 글669

[독서 기록] 웹 개발자를 위한 대규모 서비스를 지탱하는 기술 대규모 서비스를 지탱하는 기술 대규모 서비스를 개발ㆍ운용하는 기술자를 위한 입문서! 『웹 개발자를 위한 대규모 서비스를 지탱하는 기술』은 저자가 서버 1대부터 시작하여 1,000대의 호스트를 운영하기까지 수없이 많이 겪었던 시행착오와 해결책, 먼 길을 돌고 돌아서 비로소 체득한 대규모 서비스 개발과 운용에 관한 핵심 노하우들을 전한다. OS 및 컴퓨터의 동작원리, DB 분산방법, 실전적인 알고리즘을 시스템에 적용하는 방법, 대규모 데이터를 요리하는 검색엔진의 원리와 구조, 시스템 전체를 조망하기 위한 인프라 설계지식 등을 다양한 샘플 코드와 함께 자세하게 소개하고 있다. 저자 다나카 신지, 이토 나오야 출판 제이펍 출판일 2011.02.28 1. 대규모 웹 서비스 개발 오리엔테이션 이 책의 근원이 되는 .. 2024. 4. 14.
[독서 기록] 일류의 조건 일류의 조건도서 《일류의 조건》이 국내 첫 출간 후 18년 만에 필름출판사에서 복간되었다. 《일류의 조건》은 일본 메이지 대학교 교수로 재직 중인 사이토 다카시의 대표작으로, 그의 저서는 국내에도 많이 소개되며, 누적 1,000만 부 이상의 판매 부수를 기록하고 있는 베스트셀러 작가이다. 이 책은 2006년 국내 출간 이후 오랜 시간 절판되어, 중고 거래를 통해 책을 구하는 사람들이 많았다. “책이 절판되어 동네 도서관에서 찾아보고 있다”, “책 읽어보고 싶은데 절판되어 구할 수가 없다”, “중고로도 구하기 어려워서 다시 출간되었으면 좋겠다” 등 연일 독자의 출간 요청이 끊이지 않고 이어져 온 책이다. 《일류의 조건》은 한 분야에 있어 통달한 전문가, 즉 ‘일류’가 되기 위해서는 근본적인 조건 세 가지인.. 2024. 4. 13.
백엔드 응답 속도 500ms 줄이고 7배 개선한 썰 목차사전 이해를 위한 구조 설명문제 상황1차 개선: 캐시 도입2차 개선: mesh 방식으로의 전환추가 개선 포인트: ForkJoinPool을 이용한 병렬 처리 & ConnectionPool 조정최종 테스트도대체 왜?! - 답은 늘 쉬운 곳에결론번외편 - 데드락 만들기본 글에 대해서주차 도메인 업무를 하면서 정기권 서비스를 개발했습니다. 해당 서비스의 성능을 개선하면서 시도한 방법과 시행착오들을 다룹니다. 실제 코드는 컨셉 코드로 대체하였고 일부 로직은 간소화하거나 대체하였음을 밝힙니다.  사전 이해를 위한 구조 및 테스트 환경 설명스프링 MSA 환경에서 API 오케스트레이션과 사가(도메인)를 구분하는 패턴을 사용한다.엔드포인트는 오케스트레이션에서 받고, 오케스트레이션에서 도메인 서비스를 호출하여 필요한 .. 2024. 4. 12.
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.