db(2)
-
데이터베이스 분리 및 확장 전략 총정리
데이터베이스를 분리하고 분산하는 궁극적인 목표는 성능, 확장성, 가용성, 그리고 관리 용이성을 확보하여 대규모 서비스를 안정적으로 운영하는 것이다.수직 확장 (Vertical Scaling / Scale Up)개념: 기존에 사용하던 단일 DB 서버의 CPU, RAM, 저장 공간(SSD) 등 하드웨어 자원을 단순히 늘리는 것. 더 좋은 성능의 서버로 교체하는 것과 같다.분리 여부: 데이터베이스 자체를 '분리'하는 것은 아니다.주된 목적: 가장 쉽고 빠르게 단일 서버의 성능을 향상시킨다.장점: 구현이 간단한다.단점: 물리적인 한계가 명확하며, 비용이 기하급수적으로 증가하고, 단일 장애 지점(SPOF)이 될 수 있다.복제 (Replication / Read Replicas)개념: 마스터(Master) DB 서..
2025.06.02 -
동시성 제어 : 데이터 일관성을 위한 낙관적 잠금과 비관적 잠금
우리가 프로그램을 사용하다 보면 여러 사람의 요청이 충돌하는 경우가 있다. 예를 들면 한정 판매(콘서트, 극장 예매)나 수강 신청 같은 경우 말이다. 이런 요청들을 데이터베이스 및 시스템 관점에서 트랜잭션(Transaction)이라고 부른다.트랜잭션이란?트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 논리적인 단위다. 프로그램의 데이터는 일반적으로 데이터베이스(DB)에서 관리되는데 이 DB의 데이터에 여러 트랜잭션이 동시에 접근하고 변경할 때, 별도의 조치를 하지 않는다면 여러 오류가 발생할 수 있다. 물건 A의 수량이 1개 남았는데 그것을 2명이 모두 주문에 성공했다면 어떻게 될까? 판매자 입장에선 상당히 난처하겠지만 어느 정도 고객 응대로 해결 할 수 있는 문제다. 하지만 자릿수가 정..
2025.05.31