본문 바로가기
반응형

분류 전체보기140

Polling, Long Polling, WebSocket 웹소켓, 폴링, 롱폴링은 클라이언트와 서버 간에 실시간 또는 거의 실시간으로 데이터를 주고 받는 다양한 방식들이다. 각각의 장단점과 동작 방식에 큰 차이가 있다. 1. 폴링(Polling)동작 방식은 다음과 같다.클라이언트가 주기적으로 서버에 새로운 데이터가 있는지 요청(HTTP GET 요청)을 한다.서버는 요청 시점에 가지고 있는 최신 데이터를 클라이언트에게 응답한다.클라이언트는 일정 시간(예: 1초, 5초)을 기다린 후 다시 서버에 요청한다.특징은 구현이 가장 간단하다. 일반적인 HTTP 요청-응답이니까. 그래서 비효율적이다. 새로운 데이터가 없어도 클라이언트는 계속해서 서버에 요청을 보내야하고 이는 불필요한 네트워크 트래픽과 서버 자원 낭비를 초래한다. 또 클라이언트가 요청하는 주기만큼 데이터 업데.. 2025. 10. 21.
Replica Lag이 무엇인지, 그리고 개선! 새로 이직한 회사에서 replica lag 문제를 개선하라는 테스크를 받게 되었다. 이 과정에서 분석 내용과 어떻게 해결 했는지를 공유하고자 한다. Replica Lag이란?우선 replica lag이 무엇인지 알아보자. 레플리카 렉이란 데이터 베이르 Replication 환경에서 마스터 서버의 데이터 변경 사항이 slave 또는 replica 서버에 반영되는데 걸리는 시간 지연을 의미한다.복제는 즉시 (real-time)으로 이루어지지 않고 항상 약간의 시간 지연이 발생할 수 있다. 랙이 발생하는 원인은 보통 다음과 같다.네트워크 지연레플리카 처리 지연 읽기 부하 : 레플리카 서버에 과도한 읽기 쿼리가 몰려 마스터로부터 받은 변경 사항을 적용하는 작업 (SQL Thread)이 지연될 수 있다. 하드.. 2025. 10. 1.
redo log(mysql 8.0) MySQL 8.0 에서 Redo log는 데이터베이스의 성능과 안정성을 모두 잡기 윈한 핵심 장치로 사용된다. 모든 데이터 변경은 실제 데이터 파일보다 Redo log에 먼저 기록되어, 시스템 장애 시에도 데이터를 안전하게 복구하고 평상시에는 빠른 쓰기 성능을 보장한다. 안정성 (Crash Safety) : 커밋(Commit)된 트랜잭션의 변경 사항은 Redo log에 먼저 기록이 보장된다. 따라서 서버 전원이 갑자기 꺼지는 등의 장애가 발생해도, 재시작 시 Redo Log를 보고 미처 데이터 파일에 반영되지 못한 내용을 다시 실행하여 데이터를 복구할 수 있다.성능 (Performance) : 디스크의 여러 곳에 흩어져 있는 데이터 파일에 데이터를 쓰는 작업(Random I/O)은 느리다. Redo Lo.. 2025. 9. 16.
[TypeScript] dto enum 값 as const + 유니온 조합으로 설정하기 프로젝트 진행 도중 dto 값 중 하나의 필드가 ai 혹은 user만 들어가야 되는 상황이였다. 여기서 전통적인 타입스크립트에서의 방법은 바로 enum을 사용하는 것이다. export enum Role { USER = 'user', AI = 'ai',}export class CreateChatDto { @IsEnum(Role) role: Role;} 타입스크립트에서의 enum은 편리하지만 문제가 있어 요새는 잘 쓰이지 않는다고 하는데 이유는 다음과 같다.런타임 시 js 코드로 남음(컴파일 후 객체가 됨)예시→ 컴파일 후var Role;(function (Role) {Role["User"] = "user";Role["Ai"] = "ai";})(Role || (Role = {}));enum Role.. 2025. 7. 11.
반응형