본문 바로가기

분류 전체보기127

[DB] MYSQL 엔진 아키텍처 MYSQL의 내부 동작과 그 원리에 대해 궁금해져, Real MySQL 8.0 책을 읽었는데 정리를 안하니 계속 내용이 휘발되어서 내 방식으로 정리해보고자 글을 쓴다. 1. MYSQL 엔진 아키텍쳐MySQL 서버는 크게 아래 두 엔진으로 구분할 수 있다. 1. MySQL 엔진: SQL 분석과 최적화를 담당한다. SQL 파서, SQL 옵티마이저, SQL 실행기 등이 포함된다. 2. 스토리지 엔진: 디스크에 저장, 조회를 담당한다. 이때, 핸들러 API를 이용해 실제 처리(핸들러 요청)를 수행한다. 핸들러는 말 그대로 MySQL 엔진이 스토리지 엔진을 조종하기 위해 사용되는 것이다. MySQL은 아래와 같이 구성되어 있다. 프로그램은 커넥션 핸들러를 통해 DB와 연결된다. 프로그램이 SQL을 전송하면,.. 2026. 1. 12.
[NoSQL] Redis Streams 이론부터 코드까지! A to Z (1) 1. 배경프로젝트에서 Redis Pub/Sub을 SSE로 변경사항을 전송하는 데에 일괄적으로 사용하고 있었는데, 서버가 재배포 되거나 모종의 이유로 인해 서버가 죽어서 SSE 연결이 끊긴다면, 재연결이 되더라도 사용자가 화면을 새로고침하지 않는 이상 이전에 놓친 데이터를 받지 못하는 문제가 발생했습니다. 이로 인해 새롭게 변경 사항이 생기거나 데이터 갱신 스케줄러가 돌기 전까지 클라이언트는 잘못된 데이터를 확인할 수 있었습니다. 일시적 장애에도 최종 일관성을 보장하기 위해서는 재시도가 가능한 at least once 전송 구조여야 합니다. 이를 위해선 메시지 브로커가 메시지를 consumer에게 전달한 후 일정 시간 동안 저장해놓고 있어야 했습니다. 2. Redis Streams vs KafkaAt-.. 2026. 1. 6.
[회고록] 2025년, 대망의 대학교 4학년과 인턴쉽 마침내 끝나긴 하나 100번쯤은 생각했던 대학교 4년이 끝났다. 사실 작년에 비해 나 자체가 정말 많이 달라졌다. 가장 크게 변화한건, 실력 뭐 그런게 아니라 나 자신이 좋아졌고, 내가 가장 열심히 몰입할 수 있는 개발이 좋아졌다. 올해 중순까지만 해도 사람이 '불안' 그 자체였다.지금까지 쌓아온 건 남들과 비슷하게 여럿 있는데 그렇게 나 자신을 잘 드러내고 있는지도 모르겠고, 성인이 되어서 지금까지 해온건 이거 하나뿐인데 내가 남들과 다르게 가지고 있는 경쟁력이 무엇이며 내가 무슨 길을 가야 하는지 몰랐다. (물론 지금도 이런 질문에 대한 답을 찾아가는 과정이긴 하지만..)더 명시적으로는 내가 어떤 걸 할 때 몰두할 수 있는지, 어떤 걸 배울때 어떻게 접근하는지, 누구와 있을때 행복한지에 대해 몰랐다.. 2026. 1. 1.
[NoSQL] Redis Pub/Sub 이론부터 코드까지! A to Z (2) 진행하고 있는 프로젝트의 운영환경의 서버가 다중 인스턴스로 되어 있다. 한 서버로의 변경 요청이 왔을 때, 이를 SSE로 해당 서버와 연결된 모든 클라이언트에 전달하고 있었는데, 다른 서버에 연결된 클라이언트들은 해당 변경 사항을 전달받지 못하는 문제가 생겼다. 해당 문제를 해결하기 위해 메시지 브로커 방식을 고려해 보았고, Redis Pub/Sub을 활용한 메시징 큐 방식을 적용할 수 있었다. 이 과정에서 학습했던 Redis의 Pub/Sub 내용에 대해 정리해보고자 글을 쓴다. 참고한 자료는 Redis 공식문서, Spring Data Redis 공식문서, 개발자를 위한 레디스다. 해당 글은 이전 글에서 다룬 이론을 토대로, Spring Boot 프로젝트에 적용한 코드를 다룬다. Spring Dat.. 2025. 12. 18.
[NoSQL] Redis Pub/Sub 이론부터 코드까지! A to Z (1) 진행하고 있는 프로젝트의 운영환경의 서버가 다중 인스턴스로 되어 있다. 한 서버로의 변경 요청이 왔을 때, 이를 SSE로 해당 서버와 연결된 모든 클라이언트에 전달하고 있었는데, 다른 서버에 연결된 클라이언트들은 해당 변경 사항을 전달받지 못하는 문제가 생겼다. 해당 문제를 해결하기 위해 메시지 브로커 방식을 고려해 보았고, Redis Pub/Sub을 활용한 메시징 큐 방식을 적용할 수 있었다. 이 과정에서 학습했던 Redis의 Pub/Sub 내용에 대해 정리해보고자 글을 쓴다. 참고한 자료는 Redis 공식문서, 개발자를 위한 레디스다. 1. Redis란? https://persi0815.tistory.com/33 2. Redis Pub/Sub이란? Redis의 Pub/Sub은 매우 가볍게 최소한의 .. 2025. 11. 20.
SSE(Server Sent Event) 동작 원리 네트워크 단까지 파해쳐보자! 프로젝트에서 SSE를 적용하게 될 것 같아 공부해보았다. 아래의 자료들을 참고했다. https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-ann-async.html#mvc-ann-async-ssehttps://www.baeldung.com/spring-server-sent-events1. SSE란 무엇일까? 클라이언트의 요청으로 인해 서버와 클라이언트가 TCP 연결을 맺고, 해당 연결을 유지하며 서버가 클라이언트에게 단방향으로 여러차례 스트림 데이터를 전달(스트리밍)하는 것이다. 이를 통해 클라이언트의 지속적인 요청 없이도 서버에 변화가 생기면 즉시 클라이언트에게 전달할 수 있다는 특징이 있다. ResponseBodyEmitter라는 반.. 2025. 9. 2.