[개발 일기] 2025.04.24 - MongoDB의 쓰기 속도가 빠른 이유?
·
개발 일기
💡 개요 오늘은 MongoDB의 쓰기 속도가 빠른 이유에 대해 정리해 보자. 🛠️ MongoDB 쓰기 작업 MongoDB가 MySQL보다 빠르게 작업을 수행할 수 있는 이유는 간단하다. 바로 트랜잭션 처리의 엄격성이 MySQL보다 떨어지기 때문이다. 우리가 아는 트랜잭션의 원칙은 ACID를 기반으로 이루어졌다. Atomicity (원자성) : 모든 작업이 모두 성공하거나, 모두 실패해야 함Consistency (일관성) : 트랜잭션 전 후의 데이터가 항상 유효한 상태여야 함Isolation (격리성) : 동시에 실행되는 트랜잭션은 다른 트랜잭션에게 영향을 주어선 안됨Durability (지속성) : 트랜잭션 종료 후 결과는 영구적으로 반영되어야 함 하지만 MongoDB는 이러한 전통적인 ACI..
[Spring] MySQL, MongoDB 전략 패턴
·
Spring
현재 진행 중인 ‘스킨 판매 플랫폼’에서는 판매자에게 문의할 때 사용되는 채팅이 모두 MySQL에 저장된다. 하지만 채팅이라는 기능의 특성을 생각해 봤을 때, 자주 INSERT 작업이 실행되는 기능이다. 그렇기 때문에 MySQL은 적합하지 않을 수 있다. 이 과정에서 고려한 두 가지 방안은 다음과 같다. Redis에 저장 후, 일정 시간 이후 or 일정 채팅 개수를 초과한 경우 Batch를 사용해 MySQL에 채팅 데이터 저장채팅 데이터만 MongoDB에 저장 여기서 난 두 번째 방안을 적용하기로 했다. 그 이유는 아직까지 하나의 DB를 사용하다가, 한 프로젝트에서 다른 DB를 적용한 기억이 없기 때문이다. ⚙️ MongoDB MongoDB란 대표적인 NoSQL DB로 채팅 데이터를 저장하는..
[개발 일기] 2025.04.23 - 왜 두 번씩?
·
개발 일기
💡 개요 React를 사용하다 보면 모든 요청이 두 번씩 요청되는 것을 볼 수 있다. 그 이유가 뭘까? 🛠️ React가 두 번씩 요청을 보내는 이유 이유는 아래 URL에 접속하면 알 수 있다. How to Upgrade to React 18 – ReactThe library for web and native user interfacesreact.dev 결론부터 말하자면 별 상관 없다. React 18에서는 Strict Mode가 활성화되어 컴포넌트의 리렌더링을 강제로 두 번 수행하기 때문인데, 이는 애플리케이션의 안정성을 위한 메커니즘으로, 실제 배포 환경에서는 한 번만 요청이 발생한다. 따라서 개발 환경에서만 요청이 두 번 발생한다고 걱정할 필요는 없다. 그리고 현재 환경이 개발 환경인..
[개발 일기] 2025.04.22 - 프로세스 생명 주기
·
개발 일기
💡 개요 오늘은 프로세스 생명 주기에 대해 정리해보자. 🛠️ 프로세스 생명 주기 프로세스 생명 주기란 컴퓨터에서 프로그램이 할당되어 실행 가능한 상태인 프로세스가 되고, 이 프로세스가 실행된 후 종료되는 과정을 나타낸 것이다. 주요 과정은 다음과 같다. 1. New 프로세스가 생성중인 상태를 의미한다. 여기서 프로세스란 프로그램이 실행을 통해 OS로 부터 리소스를 할당받고, PCB(Process Control Block)이 만들어지고 준비중인 단계이다. PCB란 프로세스를 관리하기 위한 OS의 핵심 자료구조이다. 말 그대로 프로세스에 대한 정보를 담고있는 객체를 의미한다. PCB가 담고있는 정보는 다음과 같다. 항목설명프로세스 ID (PID)각 프로세스를 식별하기 위한 고유한 번호프로세..
[개발 일기] 2025.04.21 - Docker 익명 볼륨
·
개발 일기
💡 개요 저번 달엔 Docker에서 사용되는 볼륨에 대해 정리했었다. 오늘은 그 볼륨 중에서 익명 볼륨에 대해 정리해보자. 🛠️ 익명 볼륨 Docker 컨테이너에서 사용되는 익명 볼륨이란, 개발자가 볼륨 이름이나 경로를 명시적으로 지정하지 않았을 때 Docker가 자동으로 생성하는 볼륨을 말한다. 위 이미지에서 볼 수 있는 이름이 복잡하고 랜덤한 형태의 볼륨들이 모두 익명 볼륨이다. Docker를 사용해 본 사람이라면 알겠지만, 컨테이너를 반복해서 내렸다 올리는 작업을 하다 보면 이러한 익명 볼륨들이 점점 쌓이게 된다. 나도 처음엔 컨테이너를 삭제하면 자동으로 익명 볼륨도 함께 삭제되는 줄 알았지만, 실제로는 삭제되지 않고 그대로 남아 있는 경우가 많다. 그렇기 때문에 컨테이너 삭제함과 ..
[개발 일기] 2025.04.20 - Docker 포트 번호가 2개?
·
개발 일기
💡 개요 오늘은 Docker 컨테이너에서 사용하는 포트가 2개인 경우에 대해 정리해보자. 🛠️ Docker 포트 아래 코드는 내가 사용 중인 Kafka 컨테이너 배포에 사용되는 코드이다. version: '3'services: zookeeper: image: wurstmeister/zookeeper container_name: zookeeper ports: - "2181:2181" kafka1: image: wurstmeister/kafka container_name: kafka1 ports: - "9092:9092" - "29092:29092" environment: KAFKA_BROKER_ID: 1 KAFKA..