웹의 기본 아키텍처
- 웹의 복잡도가 증가함에 따라 변화해왔다.
- 3가지관점
- 관심사의 분리
- 관측가능한 시스템
- 효율적인 리소스 사용
대용량 시스템의 모습
대용량시스템은 왜 병목인가
병목의 뜻
- 병목(영어: bottleneck) 현상은 전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상을 말한다. "병목"이라는 용어는 물이 병 밖으로 빠져나갈 때 병의 몸통보다 병의 목부분의 내부 지름이 좁아서 물이 상대적으로 천천히 쏟아지는 것에 비유한 것이다.
스케일 업과 스케일 아웃
- 스케일업: 서버의 크기자체를 늘려서 성능을 높이는 것
- 스케일 아웃: 서버를 여러대두어 성능을 높이는 것
스케일업 | 스케일 아웃 | |
유지보수 및 관리 | 쉬움 | 여러노드에 적절히 부하분산 필요 |
확장성 | 제약이 있음 | 스케일업에 비해 자유로움 |
장애복구 | 서버가 1대, 다운타임이 있음 | 장애 탄력성이 있음 |
데이터 베이스의 스케일 아웃
- 데이터베이스는 데이터라는 상태를 관리하고 있어 서버보다 스케일 아웃을 하기 위해서는 훨씬 많은 비용이 필요하다.
- 현재 서버 아키텍처는 상태관리를 데이터베이스에 위임하고, 서버는 상태관리를 하지 않는 방향으로 발전
- 스케일 아웃외에도 데이터베이스는 디스크의 데이터를 접근해서 가져온다.
대용량시스템이란?
대용량 트래픽 / 데이터 처리가 어려운 이유
- 하나의 서버 또는 데이터베이스로 감당하기. 힘든 부하
-> 다수의 서버와 데이터베이스를 마치 하나인 것처럼 동작시켜야 한다. - 여러개의 서버에서 유입되는 데이터의 일관성을 보장할 수 있어야 함
- 웹 서비스들은 24시간동안 중단되지 않는다.
-> 잘못된 코드 한줄이 미치는 영향의 범위가 크다. - 여러 마이크로 서비스들이 복잡한 의존 관계를 가진다.
대용량시스템이 갖춰야하는 필수 조건
- 고가용성: 언제든 서비스를 이용할 수 있어야 한다.
- 확장성: 시스템이 비대해짐에 따라 증가하는 데이터와 트래픽에 대응할 수 있어야 한다.
- 관측가능성: 문제가 생겼을 때 빠르게 인지할 수 있어야 하고 문제의 범위를 최소화 할 수 있어야 한다.
대용량시스템 구조
- 로드 밸런서: 한쪽의 서버로 몰리지 않도록 함, 대부분 라운드로빈 알고리즘 또는 혼합알고리즘 사용
- 캐시: 글로벌캐시(redis로 서버공유 캐시), 로컬캐시(각 서버 메모리에 저장)
- 비동기큐: 대외기관(알림,이메일) 속도를 빠르게 하기 위함(kafka 등)
'I leaned > Etc' 카테고리의 다른 글
클라우드 서비스 (0) | 2023.07.05 |
---|---|
Redis (0) | 2023.06.27 |
도커(Docker) (0) | 2023.05.30 |
텍스트파일과 바이너리파일 (0) | 2023.05.11 |
HTTP기본개념/ 요청,응답 (0) | 2023.05.11 |