개발 공부/가상면접 사례로 배우는 대규모 시스템 설계 기초

1장 사용자 수에 따른 규모 확장성

그냥하는티스토리 2022. 11. 28. 11:47
728x90

* Scale up : 수직적 규모 확장( CPU, RAM등을 추가하는 행위)

1. 트래픽의 양이 적을때는 좋은 선택

2. 한대에 서버에 CPU 나 RAM등이 메모리 확장은 한계가 있음

3. 장애에 대한 자동복구 방안이나 다중화 방안을 제시하지 않음. 

=> 따라서 Scale out(수평적 규모 확장)을 서비스를 위한 선택으로 선호 함

* Scale Out : 수평적 규모 확장(더 많은 서버를 추가하여 성능 향상)

 

* 로드 밸런서

부하 분산 집합(load balancing set)에 속한 웹 서버들에게 트래픽 부하를 고르게 분산하는 역할

 

* 데이터 베이스 다중화

읽기 기능만을 제공하는 부 데이터 베이스(replica)를 둠으로써 성능 향상을 꾀함(application은 주로 쓰기 보다는 읽기 동작을 많이 하는데에서 착안)

1. 성능의 향상(query등을 병렬로 수행 하므로 성능이 좋아짐) => 쓰기는 master database, 읽기는 replica에서 수행

2. reliability : 자연 재해 등으로 한 지역의 데이터 베이스중 일부가 파괴되어도 데이터는 보존되기 때문에(만약 지역적으로 떨어진 곳에 데이터를 따로 다중화 한다면)

3.availability : 한 데이터 베이스에 장애가 발생해도 다른 데이터베이스가 동작 할 수 있음

 

* Multi Master Replication 

https://en.wikipedia.org/wiki/Multi-master_replication

 

Multi-master replication - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Method of database replication Multi-master replication is a method of database replication which allows data to be stored by a group of computers, and updated by any member of the gro

en.wikipedia.org

 

* Cache

자주 참조 되는 데이터를 메모리 안에 두고 , 빨리 처리 할 수 있도록 하는 저장소

*캐시 전략

 

* 캐시에 대한 고민들

1. 캐시는 어떤 상황에서 바람직 한지?

2. 어떤 데이터를 캐시에 두어야 할지? persistent 해야 하는 데이터를 두면 안됨(보통 메모리에 두기 때문)

3. 데이터의 만료에 대한 설정

4. 일관성은 어떻게 유지 되는지,

5. 장애에는 어떻게 대처 하는지,

6. 캐시의 크기는 어느정도?

7. 데이터 방출 정책은 무엇인가,(오래된 데이터 삭제하는 방식)

 

* CDN(Content delivery network)

이미지, javascript와 같은 정적파일을 빠르게 보내기 위한 별도 서버 구성,

HTML header의 TTL(Time-To-Live)로 해당 content 유효기간?을 설정,

- 고려해야 될 사항

1. 비용,(CDN은 보통 제 3사업자에 의해 운영되므로 따로 비용이 필요 함)

2. 적절한 만료 시한 설정 : 캐시와 비슷한 느낌인거 같은데, 콘텐츠의 양이 적절히 조절되어야 함

3. 장애 대처 방안 - CDN이 죽었을때 어떻게 대처 해야 할지..

4. 콘텐츠 무효화 방식 - 콘텐츠를 어떻게 삭제 할 것인지(expire 시간 전에)

 

* 무상태(stateless) 웹계층

- 웹계층을 수평적으로 확장하기 위한 방안

session(상태 정보) 값은 전부 database에 저장하여, 서비스와 data를 분리,

이를 통해 수평적 확장이 가능하도록 함.

 

* 지리적 라우팅

지리적으로 가까운 데이터 센터를 사용하는 방식,

예륻들어 미국 서비스는 미국, 아시아는 일본 등등..

 

* Message queue

message들을 저장하고, 이를 소비자들이 가져감,(메세지들이 따로 저장됨)

1. 생산자의 서버가 다운되더라도, message queue에 message가 저장되므로 계속 쓸 수 있음.

데이터베이스의 수직,수평화

수직적 확장(CPU, RAM등의 용량을 업그레이드 시켜 성능 향상을 도모함)

SPOF(Single point of failure)등의 문제가 발생

수평적 확장(대표적으로 샤딩)

샤딩에서 고려해야 될문제들

1. 재 샤딩(특정 데이터베이스로 공간소모가 빠르게 진행 될 경우, 샤딩을 하는 함수를 어떻게 변경 할 것인지)

2. 유명인사문제( 특정 서버에만 과부하가 걸린다면?)

3. 조인과 비정규화(여러 데이터베이스들로 쪼개질경우 조인을 어떻게 할지 => 비 정규화로 처리)

 

 

728x90