본문 바로가기

전체 글130

[Kafka] 면접 결과 기다리다가 멘탈 나갈 것 같아서 시간 때우기 위해 공부하는 카프카 0. 개요시간 때우기 용으로 그동안 궁금했던 Redis Streams가 영향을 받은 카프카에 대해 공부해보고자 한다. '쉬운 코드' 유투브 채널과 카프카 공식 문서 참고했다. https://www.youtube.com/@ezcdhttps://kafka.apache.org/ 1. 카프카란? Apache Kafka is an open-source distributed event streaming platform 여러 대의 컴퓨터를 네트워크로 연결하여 하나의 거대한 시스템처럼 동작하는 환경에서 사용하는 (distributed)sw 시스템에서 발생한 어떤 사실을 나타내는 불변의 데이터를 (event)목적지까지 끊임없이 실시간으로 흐르게 하는 (streaming)플랫폼 (platform) 즉, 카프카를 통.. 2026. 6. 18.
[Redis] Multiplexing & Event Loop 0. 개요Redis의 내부 작동 원리에 대해 학습하다 multiplexer와 event loop 개념이 나와서 이에 대해 정리하고자 정리한다. 1. Multiplexing이란? 멀티플렉싱의 어원은 '다중화'로,I/O 관점에서는 '단 하나의 스레드가 수천개의 소켓(file descripter)를 동시에 감시하는 기술'을 의미한다. -> 시스템 자원 효율화ex) epoll, kqueueHTTP 관점에서는 '하나의 통신로를 활용해 여러개의 독립된 신호를 전송하는 기술'을 의미한다. -> 지연시간 단축ex) http 1.1 keep alive, http 2.0 stream I/O Multiplexing의 주요 매커니즘은 다음과 같다. 방식특징알고리즘 복잡도select감시 소켓 수 제한(보통 1024개)이 있고,.. 2026. 1. 22.
[DB] MySQL Master-Slave 복제(Replica) 과정과 Binlog란? 0. 개요회사에서 prd 환경에 Master, Slave MYSQL을 사용하고 있어, 해당 과정에 대해 공부해보았다. 1. NCloudhttps://www.ncloud.com/v2/product/database/cloudDbMysql#detail NAVER CLOUD PLATFORMcloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certificationwww.ncloud.comDB에 대한 HA를 보장하기 위해 Master와 Slave, 그리고 Standby Master DB가 있다.Standby Master DB는 Master DB가 죽었을때 Master로 승격된다.. 2026. 1. 16.
[Spring] Redis ShedLock 이론과 구현 스케줄러로 API를 요청해 데이터를 받아오고 있었는데, 다중 서버 환경에서 스케줄러가 각 노드마다 개별 동작하여 동일한 API 요청이 서버 대수만큼 중복 발생하는 문제가 있었다. 이로 인해 다음과 같은 현상이 발생했다. 거의 동시에 응답이 왔을 때 redis에 저장되어 있는 응답의 개수가 덮어씌워져(Lost Update) Loki와의 데이터 정합성 문제가 발생API 요청 성공유무를 보여주는 화면 UI에 중복된 상태값이 표시되고, 서버 개수에 따라 관리자에게 보여지는 API 요청 개수가 달라지는 등 부정적인 사용자 경험을 유발외부 서버(PHIS)와 내부 리소스(Redis, Loki)의 불필요한 부하를 초래이러한 멀티 노드 간 중복 작업을 차단하여 파생되는 문제를 방지하기 위해 스케줄러 분산 락 매커니즘(S.. 2026. 1. 16.
[Spring] TaskScheduler 이론과 구현 0. 개요외부 API에 보낸 요청의 상태를 모니터링하는 기능을 개발하던 도중, 기존의 polling 방식이 서버에 불필요한 부하를 만들고 있었음을 파악했다. Polling 했던 목적이 클라이언트(관리자)가 스케줄러를 통한 API 요청에 대한 응답이 잘 오고 있는지 확인하기 위함이었다. 요청 이후 30초안에 응답이 오지 않으면 '지연', 50초 안에 응답이 오지 않으면 '초과'임을 클라이언트에게 전달해주어야 했기에 이를 위해 최대한 빠르게 문제 상황을 전달해 주기 위해서는 짧은 주기의 polling이 요구되었다. 하지만, 이벤트 발생 시에만 클라이언트에게 정보를 전달해주면 되었기에 SSE를 고려하게 되었고, 서버 측에서 정해진 특정 시점에만 확인 후 이벤트를 발생시키면 되었기에 방법을 찾아보았다. Task.. 2026. 1. 15.
[DB] MySQL 8.0 잠금 MYSQL의 내부 동작과 그 원리에 대해 궁금해져, Real MySQL 8.0 책을 읽었는데 정리를 안하니 계속 내용이 휘발되어서 내 방식으로 정리해보고자 글을 쓴다. 잠금은 동시성을 제어하기 위한 기능으로, 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있게 해주는 것이다. MySQL에서 사용하는 잠금은 크게 스토리지 엔진 레벨과 MySQL 엔진 레벨로 나눌 수 있다. - MySQL 엔진 레벨: 글로벌 락 , 테이블 락, 테이블 메타데이터 락, 네임드 락- 스토리지 엔진 레벨: 레코드 락, 갭락, 넥스트 키 락, 자동 증가 락이들에 대해 자세히 알아보자! 1. MySQL 엔진 레벨의 락 [ 글로벌 락 ]가장 범위가 큰 잠금이다. MySQL 서버 .. 2026. 1. 14.