[개발 일기] 2025.04.24 - MongoDB의 쓰기 속도가 빠른 이유?
·
개발 일기
💡 개요 오늘은 MongoDB의 쓰기 속도가 빠른 이유에 대해 정리해 보자. 🛠️ MongoDB 쓰기 작업 MongoDB가 MySQL보다 빠르게 작업을 수행할 수 있는 이유는 간단하다. 바로 트랜잭션 처리의 엄격성이 MySQL보다 떨어지기 때문이다. 우리가 아는 트랜잭션의 원칙은 ACID를 기반으로 이루어졌다. Atomicity (원자성) : 모든 작업이 모두 성공하거나, 모두 실패해야 함Consistency (일관성) : 트랜잭션 전 후의 데이터가 항상 유효한 상태여야 함Isolation (격리성) : 동시에 실행되는 트랜잭션은 다른 트랜잭션에게 영향을 주어선 안됨Durability (지속성) : 트랜잭션 종료 후 결과는 영구적으로 반영되어야 함 하지만 MongoDB는 이러한 전통적인 ACI..
[개발 일기] 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..
[개발 일기] 2025.04.19 - 테이블의 기본키로 VARCHAR?
·
개발 일기
💡 개요 오늘은 데이터베이스의 테이블에서 사용되는 기본 키 중, String 즉, VARCHAR 형태의 기본 키에 대해 정리해 보자. 🛠️ VARCHAR 형태의 기본 키 VARCHAR 형태의 기본 키는 주로 UUID를 사용할 때 선택된다. 예를 들어, ORDER-20250419-001처럼 비즈니스적으로 의미 있는 ID를 키로 사용하거나, 전역적으로 유일해야 하는 ID를 관리할 때 유용하다. UUID는 확률적으로 충돌 가능성이 거의 없어, 기본 키로 사용할 경우 고유성을 보장할 수 있다는 장점이 있다. 또한 사람이 읽기 쉬운 형태나 특정 규칙을 따르는 키를 생성할 수도 있어 활용도가 높다. 하지만 대부분의 테이블에서는 기본 키로 BIGINT(즉, Long) 타입의 숫자형 ID를 사용한다. ..