System Design 2

[데이터 중심 애플리케이션 설계] 확장성과 부하

시스템 디자인에서 확장성은 "증가한 부하에 대처하는 시스템 능력을" 설명하는 데 사용하는 용어라고 한다. 그럼 확장성을 고려한 설계는 다양한 부하(load)를 고민해 보는 설계가 필요하다. 그럼 이 부하는 어떻게 표현할까? 부하 매개변수와 측정 방법부하는 부하 매개변수(load parameter)라고 부르는 몇 개의 숫자로 나타낼 수 있는데, 이러한 부하 매개변수에 대한 선택은 시스템 디자인에 따라 달라진다고 한다. 예를 들어, 웹 서버의 초당 요청 수, 데이터베이스의 읽기 대 쓰기 비율, 대화방의 동시 활성 사용자, 캐시 적중률 등이 될 수 있다. 그럼 부하가 생겼을 때, 시스템의 성능을 어떻게 검증할 수 있는 지도 알아봐야한다. 온라인 시스템에서 대표적인 부하 관련 지표로는 응답 시간(response..

시스템 디자인 2026.07.26

DB 격리 수준(Isolation Level): Read Committed

DB 격리 수준(Isolation Level)은 크게 4가지로 나뉩니다. 오늘은 그중 하나인 "Read Committed"에 대해서 알아볼까 합니다. Multithreading많은 데이터베이스가 멀티스레딩 기반으로 이루어져있습니다. 아마 2026년 기준으로 PostgreSQL은 싱글 스레드로 알고 있지만, 유명한 DB 시스템인 MySQL, MS SQL, Oracle 등 멀티스레드 기반으로 만들어졌습니다. 그 말은 즉 Race Condtion이 발생할 수 있는 환경에 놓여있다는 거죠. Race Condition 종류와 SolutionDirty WritesDirty Writes는 아직 Commit 되지 않은 데이터에 쓰기(Write)을 하려고 할 때 발생합니다. 예를 들어서 Transaction A와 Tr..