인터페이스 성능 최적화 전략
이전 프로젝트에서 인터페이스 지연 문제를 해결하기 위해 여러 최적화 작업을 수행했습니다. 이번 글에서는 이러한 최적화 방법들을 소개하겠습니다.
인터페이스 최적화 방법
배치 처리: 반복적인 데이터 삽입이나 업데이트는 배치 처리를 통해 한 번에 수행하여 I/O 횟수를 줄일 수 있습니다.
<code>
// 단건 삽입 예시
list.forEach(msg -> {
insert();
} ...
9월 13일 20:36에 게시됨
스레드 풀의 이해와 활용
스레드 풀 사용법
1. 스레드 풀이란 무엇인가
풀: 컨테이너
스레드 풀: 스레드를 저장하는 컨테이너
여기서 누군가 질문할 수 있습니다. 우리가 스레드를 생성해서 작업을 실행하고 작업이 끝나면 스스로 사라지지 않아도 될까요? 왜 컨테이너에 저장해야 할까요?
기억하세요: 스레드 풀은 스레드 재사용 기술입니다. 재사용: 반복 사용
스레드 풀 기술은 스레드를 반 ...
7월 18일 07:57에 게시됨
Promise 상태 전이 구현하기
자체 구현된 Promise의 상태 변화 처리
실제로 Promise를 직접 구현하면서 상태 전이 로직을 어떻게 설계할지 고민해보겠습니다. 먼저 공식 문서에 정의된 Promise의 동작 방식을 분석해 보고, 이를 바탕으로 자신의 클래스를 설계합니다.
// 공식 Promise 사용 예시
new Promise((resolve, reject) => {
resolve(1);
});
이 코드에서 알 수 있듯이 Promise는 자바스 ...
7월 14일 06:43에 게시됨
SpringBoot에서 비동기 처리를 구현하는 네 가지 방법
이 글에서는 Spring Boot에서 제공하는 비동기 처리 기능을 요청 수준과 메서드 수준 두 가지 관점에서 살펴보고, 실제 적용 가능한 네 가지 주요 구현 방식을 설명합니다.
비동기 요청과 동기 요청의 차이
클라이언트, 웹 컨테이너, 비즈니스 처리 스레드 세 가지 요소가 존재하는 시나리오를 고려해보면, 동기 요청은 모든 단계에서 블로킹 상태로 대기하 ...
6월 30일 03:06에 게시됨
BeginInvoke와 EndInvoke를 활용한 비동기 메서드 호출
비동기 처리에서 BeginInvoke는 스레드 풀에서 하나의 스레드를 할당하고, 지정된 메서드를 별도의 스레드에서 실행하도록 합니다. 이 과정에서 BeginInvoke는 호출자 스레드에 IAsyncResult 인터페이스를 통해 상태 정보를 반환합니다. 이 인터페이스는 비동기 작업의 진행 상황을 추적하는 데 사용됩니다.
EndInvoke는 비동기 호출의 결과 값을 가져오며, 해당 ...
6월 23일 01:56에 게시됨
SSM 기반 애플리케이션에서 Kafka 메시지 큐 통합 가이드
Kafka를 활용한 고성능 SSM 아키텍처 설계
분산 마이크로서비스 환경에서 안정적인 비동기 처리를 구현하기 위해 메시지 큐는 필수 요소다. Spring + Spring MVC + MyBatis(SM)로 구성된 전통적인 웹 애플리케이션도 카프카와의 통합을 통해 초고속 트래픽 환경, 예를 들어 플래시 세일(초대박 할인)과 같은 시나리오에 대응할 수 있다. 본 문서에서는 SM 기반 프로젝트에 ...
6월 10일 21:30에 게시됨
Android에서의 비동기 작업 처리: AsyncTask 활용법
AsyncTask를 통한 비동기 처리 이해
Android는 4.0 이후부터 메인 스레드에서 네트워크 요청을 금지하면서, 사용자 인터페이스의 응답성을 보장하기 위해 비동기 처리가 필수적으로 요구됩니다. 이에 따라 개발자는 주 스레드에서 무거운 작업(예: 이미지 다운로드, 서버 요청)을 수행하지 않도록 해야 하며, 이를 위해 AsyncTask 클래스가 제공됩니다.
AsyncTask<Para ...
5월 31일 15:30에 게시됨