본문 바로가기

System Design17

[사용자 수에 따른 규모 확장성] 콘텐츠 전송 네트워크(CDN) CDN은 정적 컨텐츠를 전송하는 데 쓰이는, 지리적으로 분산된 서버의 네트워크입니다. 이미지, 비디오, CSS, JavaScript 파일 등을 캐시할 수 있습니다. 참고 동적 컨테츠 캐싱: 요청 경로(request path), 질의 문자열(query string), 쿠키(cookie), 요청 헤더(request header) 등의 정보에 기반하여 HTML 페이지를 캐시하는 것입니다. CDN 동작 원리 어떤 사용자가 웹사이트를 방문하면, 그 사용자에게 가장 가까운 CDN 서버가 정적 콘텐츠를 전달하게 됩니다. 사용자가 CDN 서버로부터 멀면 멀수록 웹사이트는 천천히 로드될 것입니다. 사이트 로딩 시간을 개선하기 위해 CDN이 사용되는 예시 CDN 동작 설명 사용자 A가 이미지 URL을 이용해 image.p.. 2021. 9. 2.
[사용자 수에 따른 규모 확장성] 캐시 캐시는 값비싼 연산 결과 또는 자주 참조되는 데이터를 메모리 안에 두고, 뒤이은 요청이 보다 빨리 처리될 수 있도록 하는 저장소입니다. 캐시 계층 캐시 계층(cache tier)은 데이터가 잠시 보관되는 곳으로 데이터베이스보다 훨씬 빠릅니다. 별도의 캐시 계층을 두면 성능이 개선될 뿐 아니라 데이터베이스의 부하를 줄일 수 있고, 캐시 계층의 규모를 독립적으로 확장시키는 것도 가능해집니다. (캐시 서버를 두는 방법 중 하나) 요청을 받은 웹 서버는 캐시에 응답이 저장되어 있는지를 봅니다. 만일 저장되어 있다면 해당 데이터를 클라이언트에 반환합니다. 없는 경우에는 데이터베이스 질의를 통해 데이터를 찾아 캐시에 저장한 뒤 클라이언트에 반환합니다. 이러한 캐시 전략을 읽기 주도형 캐시 전략(read-throug.. 2021. 9. 1.
[사용자 수에 따른 규모 확장성] 수직적 규모 확장 vs 수평적 규모 확장 수직적 규모 확장 소위 '스케일 업(scale up)'이라고 하는 수직적 규모 확장(vertical scaling) 프로세스는 서버에 고사양 자원(더 좋은 CPU, 더 많은 RAM)을 추가하는 행위를 말합니다. 서버로 유입되는 트래픽의 양이 적을 때는 수직적 확장이 좋은 선택이며, 이 방법의 가장 큰 장점은 단순함입니다. 수평적 규모 확장 '스케일 아웃(scale out)'이라고도 하는 수평적 규모 확장 프로세스는 더 많은 서버를 추가하여 성능을 개선하는 행위를 말합니다. 대규모 애플리케이션을 지원하는 데는 수평적 규모 확장법이 보다 적절합니다. 수직적 규모 확장의 단점 수직적 규모 확장에는 한계가 있습니다. 한 대의 서버에 CPU나 메모리를 무한대로 증설할 방법은 없습니다. 수직적 규모 확장법은 장애에.. 2021. 8. 31.
[사용자 수에 따른 규모 확장성] 데이터베이스 사용자가 늘면 서버 하나로는 충분하지 않아서 여러 서버를 두어야 합니다. 하나는 웹/모바일 트래픽 처리 용도고, 다른 하나는 데이터베이스용입니다. 어떤 데이터베이스를 사용할 것인가? 전통적인 관계형 데이터베이스(relational database)와 비-관계형 데이터베이스 사이에서 고를 수 있습니다. 관계형 데이터베이스 관계형 데이터베이스 관리 시스템(Relational Database Management System, RDBMS)이라고 부릅니다. RDBMS 가운데 가장 유명한 것으로는 MySQL, 오라클 데이터베이스, PostgreSQL 등이 있습니다. 관계형 데이터베이스는 자료를 테이블과 열, 칼럼으로 표현합니다. SQL을 사용하면 여러 테이블에 있는 데이터를 그 관계에 따라 조인(join)하여 합칠.. 2021. 8. 31.