레디스 큐에서 작업을 하나씩 처리하던 구조를 전용 실행 풀(ThreadPool) 기반 병렬 파이프라인으로 바꿔 처리량과 지연을 동시에 개선한 사례를 정리해보려고 합니다.배경 / 문제기존 구조@Scheduled로 1개 스레드가 주기적으로 Redis 큐에서 한 건씩 꺼내 처리문제점트래픽 상승 시 큐 적체 증가 → 응답/완료 지연스케줄러 스레드가 오래 점유되면 다음 틱 지연 (fixedDelay라도 실질 주기 늘어남)처리량, 동시성, 백프레셔(backpressure) 제어가 어려움위와 같은 배경과 문제로 저는 아래와 같이 목표를 정했습니다.처리량 확장(Throughput↑)과 대기시간 감소(Queue wait↓)안전한 백프레셔(과부하 시 자연 감속 or 재큐잉)장애 시 at-least-once 보장(손실 없이..
Micrometer운영 중인 서비스에서는 다음과 같은 다양한 시스템 지표(metrics) 를 수집하고 모니터링하는 것이 매우 중요합니다.CPU 사용률메모리 사용량HTTP 요청 수 및 응답 시간DB 커넥션 수사용자 요청 트래픽 등이런 지표들을 잘 관리하면,문제가 발생하기 전에 조기 대응할 수 있고문제가 발생한 후에는 빠르게 원인 파악 및 복구가 가능합니다.실제 운영 환경에서는 Prometheus, Datadog, New Relic, Graphite 등 다양한 모니터링 툴이 사용됩니다.하지만 각 모니터링 시스템은 지표를 수집하는 방식과 포맷이 서로 다릅니다.Micrometer는 이러한 문제를 해결해주는 지표 수집 추상화 라이브러리입니다.쉽게 말해, "모니터링 툴과 애플리케이션 사이의 번역기" 역할을 합니다...
먼저 Mybatis 에서는 단일if문은 제공하지만, if~else if 문을 사용할 수가 없다. 하지만 문을 if ~ else if 문 처럼 사용이 가능하다. 예제1. 조건이 단일(1개) 일 때 위에 조건이 맞을시 실행할 구문 조건1이 틀릴경우 실행할 구문 예제2. 조건이 여러개(N개) 일 때 위에 조건이 맞을시 실행할 구문 위에 조건이 맞을시 실행할 구문 위에 조건이 맞을시 실행할 구문 조건1, 조건2, 조건3이 틀릴경우 실행할 구문 예제3. 조건에서 연산자(and, or) 사용 위에 조건이 맞을시 실행할 구문 위에 조건이 맞을시 실행할 구문 위 조건이 전부 틀릴경우 실행할 구문
Spring vs Spring Boot 우리가 흔히 알고 있는 자바 기반 대표적인 프레임워크인 Spring Framework와 Spring에서 불편한점 들을 고치고자 태어난 Spring Boot의 차이점을 알아보자. [ Spring ] 먼저 Spring Framework란 무엇인가? Spring 홈페이지에서 소개글 중 핵심적인 문단을 한국어로 번역하자면 이렇다. "Spring은 어떤 종류의 배포 플랫폼에서도 최신 자바 기반 기업용 애플리케이션을 위한 종합적인 프로그래밍 및 구성 모델을 제공해준다." "Spring의 핵심 요소는 애플리케이션 수준에서의 인프라 자원이다. Spring은 기업용 애플리케이션의 plumbing에 초점을 맞춰 팀이 특정 배포 환경과 불필요한 시도없이 애플리케이션 수준의 비지니스 로..
- Total
- Today
- Yesterday
- Controller
- AI
- 코드업
- Git
- HTML
- codeup
- JSP
- class
- Java
- 알고리즘
- 프로그래머스
- 자바
- Python
- Delete
- Servlet
- JDBC
- Claude
- 파이썬
- jquery
- FOR
- function
- list
- oracle
- db
- Spring
- ArrayList
- CSS
- JavaScript
- Ajax
- 코딩테스트
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
