Notice
Recent Posts
Recent Comments
Link
반응형
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 티스토리챌린지
- 스프링부트
- 이펙티브자바
- effectivejava
- k8s
- 김영한
- 오블완
- Kotlin
- 이펙티브 자바
- 스프링 핵심원리
- 엘라스틱서치
- 스프링
- springboot
- 자바
- 데이터베이스
- 카카오
- Sort
- ElasticSearch
- 자바스크립트
- 알고리즘
- 알고리즘정렬
- JavaScript
- 예제로 배우는 스프링 입문
- kubernetes
- Effective Java
- 스프링핵심원리
- Effective Java 3
- Spring
- java
- 클린아키텍처
Archives
- Today
- Total
목록2026/01/10 (2)
Kim-Baek 개발자 이야기
DB 복제(Replication)와 샤딩(Sharding) - 확장의 두 가지 길
서버 한 대로는 한계였다Court Alarm이 2년째 운영되면서 사용자가 급증했다.월간 활성 사용자: 10만 명일일 예약: 5,000건동시 접속: 1,000명MySQL 서버 하나로 버티고 있었는데, 점점 한계가 보이기 시작했다.CPU: 90% (쿼리 처리)메모리: 85% (버퍼 풀)디스크 I/O: 포화 (읽기/쓰기)응답 시간: 2초 (평소 50ms)특히 새벽 6시, 예약 오픈 시간에는 서버가 거의 죽었다.두 가지 선택지가 있었다:1. Scale-Up (수직 확장)서버 스펙 업그레이드CPU, RAM, SSD 증설한계: 비용 급증, 물리적 한계2. Scale-Out (수평 확장)서버 추가읽기/쓰기 분산무한 확장 가능당연히 Scale-Out을 선택했다. 그리고 두 가지 기법을 적용했다:Replication: ..
컴퓨터 공학/DB
2026. 1. 10. 15:55
DB 트랜잭션 격리 수준 - 동시성과 일관성의 트레이드오프
같은 쿼리가 다른 결과를 보여줬다예약 통계를 보여주는 대시보드를 만들고 있었다.@Transactionalfun getStatistics(userId: Long): Statistics { // 1. 총 예약 수 val totalCount = reservationRepository .countByUserId(userId) // 2. 예약 목록 val reservations = reservationRepository .findByUserId(userId) return Statistics( totalCount = totalCount, reservations = reservations )}이상한 현상:totalCoun..
컴퓨터 공학/DB
2026. 1. 10. 11:43
