[Flink] Kafka 의 한계점과 그를 보완할 수 있는 Flink
·
Kafka
이번 프로젝트를 마치고 공부하면서 이번 기술 블로그는 Kafka를 알아보면서 튜터님께서 추가로 함께 공부해보기를 추천해주신 Flink라는 기술 스택을 알아보려고한다.그래서 Flink는 어떻게 작동되고 어떤 특징을 갖고 있는지 알아보자 비교군들과 함께 각 기술의 처리 방식을 봐보면 배치 프로세싱과 실시간 처리 방식이 존재하는데 Flink는 이  가지 모두 가능하다. BatchPrcoessing은 실시간이 아닌 일정 주기를 가지고 배치 처리를 통해 수집한 데이터를 DB에 일괄적으로 전달하는 방식이다. 처리량이 많을 경우 이렇게 배치를 사용하는데 처리량이 많기 때문에 처리속도는 늦지만 정확히 전달할 수 있다는 장점이 있다. 반대로 실시간 처리는 객체의 상태변화에 집중하여 실시간으로 변동되고 보여줘야 하는 것들..
Back off 전략이란? Spring-Retry, 실패처리에 대한 과정
·
카테고리 없음
Backoff 전략과 Spring Retry로 안정적인 재시도 구현하기 시스템을 개발하다 보면 외부 API 호출, 분산락 획득, 네트워크 요청과 같이 일시적인 실패가 발생할 수 있는 작업을 마주하게 됩니다. 이런 실패 상황에서 가장 많이 쓰이는 전략이 바로 Backoff입니다. 이번 포스팅에서는 Backoff 전략의 개념과 종류, 그리고 이를 손쉽게 구현할 수 있는 Spring Retry 라이브러리 활용법까지 정리해봅니다.  Backoff란? Backoff는 실패한 작업을 즉시 다시 시도하지 않고 일정 시간 대기 후 재시도하는 전략입니다.지속적인 충돌과 서버 과부하를 방지하기 위해 사용되며, 대표적으로 API 재시도, 락 획득 충돌 해결 등에 활용됩니다. Backoff의 종류 1. Fixed Backof..
[kafka+redisson] 올리브영의 재고관리시스템 분석
·
Kafka
2025.03.18 - [Kafka] - [kafka+redisson] 올리브영의 재고관리시스템 분석 1편 [kafka+redisson] 올리브영의 재고관리시스템 분석 1편올리브영 재고 시스템 분석튜터님에게 발표한 내용을 기반으로 글을 작성하려고 한다. 위 그림은 레거시 서버에서의 올리브영이 겪고 있는 문제이다. 레거시 모놀리딕 서버에 여러 서버가 접근sunro1994.tistory.com  이전 글에 이어 이번에는 Kafka를 활용한 물류 시스템 재고 처리에 대해서 다뤄보려고 한다.Kafka 도입 이유대표적인 메세지 큐는 Kafka, RabbitMQ, Redis Pub/Sub 정도로 알고 있다. 왜 물류 시스템에는 Kafka를 도입했을까? 트래픽 처리Kafka는 RabbitMQ보다 더 많은 트래픽을 처..
[kafka+redisson] 올리브영의 재고관리시스템 분석 1편
·
Kafka
올리브영 재고 시스템 분석튜터님에게 발표한 내용을 기반으로 글을 작성하려고 한다. 위 그림은 레거시 서버에서의 올리브영이 겪고 있는 문제이다. 레거시 모놀리딕 서버에 여러 서버가 접근하여 재고를 파악하기 때문에 트래픽이 몰리는 피크 시간대에 DB에 부담이 전해질 수 있는 상황이다. 이를 해결하기 위한 올리브영의 기존의 시도는 무엇이 있을까? 배치 + 캐시 캐시처리를 통해 RDB까지 접근하지 않아도 인메모리방식으로 빠르게 데이터를 조회할 수 있도록 하고, 쓰기 처리는 배치작업을 통해 일정량을 묶어 주기적으로 처리할 수 있는 방식을 사용한 것으로 보았다.이 방식에서도 분명 한계점은 존재한다. Caching처리는 TTL이 존재하기에 만료시간에는 DB에 다시 접근해야 할 수 있고 DB와 캐시의 정합성또한 고려해..
전략 패턴(Strategy Pattern): 동적으로 행위를 변경하는 유연한 설계 방법
·
JAVA-기초/Design Pattern
전략 패턴(Strategy Pattern)이란? 전략 패턴(Strategy Pattern)은 객체의 행위를 동적으로 변경할 수 있도록 설계된 디자인 패턴이다. 동일한 기능을 수행하는 여러 알고리즘(전략)을 클래스로 분리하고, 실행 중에 필요에 따라 적절한 전략을 선택할 수 있도록 한다. 이를 통해 유지보수성을 높이고, 코드 수정 없이 기능을 확장할 수 있는 장점이 있다. 예를 들어, 자동차, 기차, 버스 등의 이동 수단을 개발한다고 가정해 보자. 각 이동 수단은 도로 또는 철도를 따라 움직일 수 있는데, 이런 이동 방식이 정해진 것이 아니라 필요에 따라 변경될 수 있다. 전략 패턴을 적용하면 이동 방식을 인터페이스로 정의하고, 실행 중에 도로 또는 철도 이동 전략을 동적으로 선택할 수 있다. 1. 전략 ..
[LeetCode/Java] Surrounded Regions
·
문제 풀이
해석 적기import java.util.LinkedList;import java.util.Queue;class Solution { static int[] dx = {1, 0, -1, 0}; static int[] dy = {0, 1, 0, -1}; public void solve(char[][] board) { int rows = board.length, cols = board[0].length; Queue queue = new LinkedList(); // Step 1: 경계에 있는 'O'를 찾아 큐에 추가하고 'T'로 변경 for (int i = 0; i queue) { queue.add(new int[]{x, y}); ..