
1장에서는 한 명의 사용자를 지원하는 시스템부터 최종적으로는 몇백만 사용자를 지원하는 시스템으로 발전하는 과정을 담고 있습니다. 발전해 나가는 과정을 보며, 규모 확장성과 관련된 설계 문제를 푸는데 유용한 지식들을 얻어갈 수 있는 챕터입니다.우선, 가장 간단한 단일 서

캐시는 값비싼 연산 결과 또는 자주 참조되는 데이터를 메모리 안에 두고, 뒤이은 요청이 보다 빨리 처리될 수 있도록 하는 저장소입니다. 애플리케이션의 성능은 데이터베이스를 얼마나 자주 호출하느냐에 크게 좌우되는데, 캐시는 그런 문제를 완화할 수 있는 방법입니다.캐시 계

『가상 면접 사례로 배우는 대규모 시스템 설계 기초』에서 캐시 계층에 대한 내용을 읽으며, 캐시 전략 관련 참고 자료를 함께 살펴보게 되었습니다. 이 글에서는 캐시 전략의 종류와, 각각의 전략이 어떤 상황에서 선택되는지를 정리해보려 합니다.캐싱은 시스템 성능을 향상시키

웹 계층을 수평적으로 확장하기 위해선 상태 정보(사용자 세션 데이터 등)를 제거해야 합니다. 일반적으로 상태 정보를 RDB나 NoSQL 같은 영속성을 지닌 저장소에 보관하고, 필요할 때 가져오도록 하는 방법이 있습니다. 이렇게 구성된 웹 계층을 무상태 웹 계층이라고 합

저장할 데이터가 많아지면 데이터베이스에 대한 부하도 증가하게 됩니다. 그때가 오면 데이터베이스를 증설할 방법을 찾아야 합니다. 데이터베이스의 규모를 확장하는 방법엔 두 가지가 있습니다. 하나는 수직적 규모 확장이고 다른 하나는 수평적 규모 확장법입니다.수직적 확장은 S

시스템 설계 면접을 진행하는 과정에서 때로는 시스템 용량이나 성능 요구사항을 개략적으로 추정해 보라는 요구를 받기도 합니다. 이를 효과적으로 수행하기 위해선 규모 확장성을 표현하기 위한 기본기에 능숙해야 합니다. 2장에서는 기본기인 2의 제곱수, 응답지연 값, 고가용성