모든 블로그
우아한 형제들

우아한 형제들

주요 카테고리 AI · 백엔드 · 프론트엔드

활동 요약

대표 인기 포스트하네스 엔지니어링(harness engineering)으로 팀 맞춤형 AI 환경 구축하기471 조회
최근 30일
6개
평균 조회
64
누적 조회
7,177
전체 글
113개
마지막 발행
2026. 11. 13.
블로그 방문

우아한 형제들 기술 블로그 글 (23)

백엔드

비가 오면 사장님이 먼저 압니다: SSE로 만든 실시간 기상악화 알림

기상악화 상태를 파트너에게 즉시 알리기 위해 SSE 기반 실시간 알림 구조를 설계했습니다. Kafka fan-out과 연결·메모리·재연결 운영 전략을 함께 다뤘습니다.

#SSE#Kafka#Kubernetes
6200

백엔드

사장님 입점신청 자동승인 주기를 10분에서 10초로

자동승인 대기 지연을 줄이기 위해 아웃박스 큐를 걷어내고 단일 폴링 구조로 바꿨습니다. 후보 조회와 재시도를 분리해 외부 부하는 유지한 채 처리 시작 시간을 10초 이내로 개선했습니다.

#MySQL#동시성#폴링
3800

백엔드

기술블로그 세 번째 책 《요즘 우아한 백엔드 개발》 출간

우아한형제들 기술블로그 글을 엮은 《요즘 우아한 백엔드 개발》 출간 소식입니다. 아키텍처, 트래픽, 데이터, AI 활용 사례를 현장 경험 중심으로 담았습니다.

#Java#Kotlin#Spring Boot
3300

백엔드

장시간 비동기 작업, Kafka 대신 RDB 기반 Task Queue로 해결하기

장시간 엑셀 생성 작업에서 Kafka Consumer 타임아웃으로 중복 발송이 발생했습니다. RDB 기반 Task Queue와 Heartbeat로 재시도와 장애 복구를 안정화했습니다.

#Kafka#RDB#Redis
4700

백엔드

이제 Redis를 멈춰보겠습니다: @CacheEvict 파헤치기

`@CacheEvict(allEntries = true)`가 내부적으로 어떻게 동작하는지 Spring Cache와 Redis 구현 레벨에서 살펴보았습니다. 기본 `KEYS` 전략이 운영 환경에서 위험할 수 있어 대안도 함께 정리했습니다.

#Spring Boot#Spring Data Redis#Redis
7100

백엔드

코드 리뷰 봇으로 시작된 팀 문화의 변화

코드 리뷰 봇으로 개인별 미처리 MR을 알려주고 리뷰어를 자동 배정해 리뷰 지연을 줄였습니다. 이후 휴가자 알림, 스크럼 문서, 온콜 관리까지 확장하며 팀 문화를 개선했습니다.

#Kotlin#Spring Boot#GitLab API
14500

백엔드

Server-Sent Events로 실시간 알림 전달하기

MQTT 기반 알림의 제약을 해결하기 위해 AWS IoT와 SSE를 도입했습니다. 정형화된 메시지, 재전송, 수신 확인으로 실시간성과 안정성을 높였습니다.

#SSE#MQTT#AWS IoT
12800

백엔드

Jira Automation으로 반복 업무를 효율적으로 관리해보자

Jira Automation으로 반복적인 티켓 관리와 필드 입력을 줄이는 방법을 소개했습니다. 트리거, 조건, Smart Value, 웹 요청을 활용한 Slack 알림 사례도 다뤘습니다.

#Jira#자동화#REST API
4000

백엔드

Redis New Connection 증가 이슈 돌아보기

Redis 신규 커넥션 증가 현상을 추적해 파이프라이닝과 커넥션 풀, Elasticache timeout의 영향을 확인했습니다. FIFO 전환과 IDLE 커넥션 정리 방법도 함께 정리했습니다.

#Redis#Lettuce#Spring Boot
5600

백엔드

Spring Cache(@Cacheable) + Spring Data Redis 사용 시 record 직렬화 오류 원인과 해결

Spring Cache와 Redis에서 record 캐싱 시 발생하는 역직렬화 오류의 원인과 해결책을 정리했습니다. Jackson의 타입 정보 처리와 GenericJackson2JsonRedisSerializer의 동작 방식까지 함께 설명했습니다.

#Spring Boot#Redis#Jackson
11700

백엔드

Java야…, 우리 그만 헤어져. Kotlin으로 환승연애

Java 기반 레거시 포인트 시스템을 Kotlin으로 전환한 과정과 기준을 정리했습니다. 테스트 강화와 점진적 배포로 안정성과 코드 품질을 함께 높였습니다.

#Kotlin#Java#Spring Boot
9000

백엔드

배차 정확도를 높이는 실거리 시스템 구축하기: OSRM, Kafka, 그리고 Redis

실거리 기반 배차 정확도를 높이기 위해 OSRM, Kafka, Redis를 활용한 저장·처리 구조를 설계했습니다. 지역 단위 이벤트 순서 보장과 캐시 재사용으로 대량 경로 계산 부하를 줄였습니다.

#OSRM#Kafka#Redis
13400

백엔드

B마트 OMS의 물류주문관리를 통한 출고 최적화

B마트 OMS를 중심으로 예약배달 출고 분산과 동적 출고예정시각 산정을 소개했습니다. 현장 부하와 라이더 대기시간을 함께 줄이기 위한 설계와 성과를 정리했습니다.

#OMS#배송#출고
4000

백엔드

실시간 마케팅을 위한 PoC 개발기

실시간 마케팅을 위해 SNS-Lambda-Kinesis-Flink-DB 파이프라인 PoC를 진행했습니다. 12k RPS 목표를 기준으로 병목을 찾아 SQS 추가와 Flink 최적화로 개선했습니다.

#AWS#Lambda#Kinesis
2800

백엔드

IllegalArgumentException은 400 Bad Request인가?

IllegalArgumentException을 무조건 400으로 매핑하면 서버 오류를 클라이언트 문제로 오인할 수 있습니다. 명백한 클라이언트 오류는 커스텀 예외로 분리해 4xx와 5xx를 구분하는 것이 좋습니다.

#Java#Spring Boot#REST API
4500

백엔드

데이터카탈로그에서 DataHub를 이용하는 방법

DataHub를 그대로 노출하지 않고 OpenSearch와 DB를 직접 활용해 데이터카탈로그에 맞는 검색·리니지·BI 통합 기능을 구현했습니다. 또한 버전업과 수집 성능 문제를 개선해 운영 적합성을 높였습니다.

#DataHub#EKS#MySQL
13100

백엔드

RADIUS 인증 실패 분석 및 해결 사례

Globalsign 인증서 갱신 후 RADIUS 인증 실패가 발생한 원인과 해결 과정을 정리했습니다. 폐쇄망 특성상 교차 체인 적용이 핵심이었고, 서버 인증서에 Cross Root를 추가하는 방향으로 대응했습니다.

#RADIUS#EAP-TLS#인증서
4900

백엔드

카프카 컨슈머에 동적 쓰로틀링 적용하기

카프카 컨슈머 처리량을 외부 DB 부하에 맞춰 동적으로 조절하는 방법을 다뤘습니다. Thread.sleep()의 한계와 pause()/resume()을 활용한 리밸런싱 회피 방식을 설명했습니다.

#Kafka#Spring Boot#Spring Kafka
11600