대용량 시스템 관련

soyeon·2023년 4월 28일
post-thumbnail

웹의 기본 아키텍처는 클라이언트 / 서버 / 데이터베이스이다.

요즘에는 웹의 요구사항이 복잡해지면서 서버가 웹서버 / 웹 애플리케이션 서버로 나뉘는 형태로 발전해왔다. 웹 서버는 정적인 데이터를 서빙하고, 웹 애플리케이션 서버 동적으로 변하는 데이터를 서빙한다.
이와 같은 나눔은 관심사의 분리, 관측가능한 시스템, 효율적인 리소스 사용의 장점이 있다.

스케일 업과 스케일 아웃

스케일 업(scale up): 하나의 서버의 사양을 높여 더 많은 요청을 처리하도록 한다.

스케일 다운(scale out): 서버의 댓수를 늘린다.

스케일 업스케일 다운
유지보수 및 관리쉬움여러 노드에 적절히 부하분산 필요
확장성제약이 있음비교적 자유로움
장애복구서버가 1대, 다운타임이 있음장애 탄력성이 있음

위의 표를 통해 비교를 하면 스케일업 보다는 스케일 다운이 더 좋아보이지만

데이터베이스를 스케일 아웃하면 어떨까에는 제약이 있다.
스케일다운을 하려면 상태가 없어야하는데 데이터라는 상태를 관리하고 있기 때문에 서버보다 스케일 아웃을 하기 위한 비용이 많이 든다.

이로 인해 현대 서버 아키텍처는 상태관리를 데이터베이스에 위임하고 서버는 상태관리를 하지 않도록 발전해왔다.

대용량 시스템이 어려운 이유

  • 하나의 서버로 감당하기 힘들기때문에 대부분 여러개의 서버 또는 데이터베이스를 사용하는 데 여러개의 서버에서 유입되는 데이터의 일관성을 보장할 수 있어야한다.
  • 코드 한줄이 데이터에 미치는 영향범위가 굉장히 커진다.
  • 여러 서비스들이 얽혀있어 시스템 복잡도가 높다.

이런 어려움을 이기고 대용량 시스템은 어떠해야하는가?

대용량 시스템 조건

  • 고가용성: 언제든 서비스를 이용할 수 있어야 한다.
  • 확장성: 시스템이 비대해짐에 따라 증가하는 데이터와 트래픽에 대응이 가능해야 한다.
  • 관측가능성: 문제가 생겼을 때 빠르게 인지할 수 있어야 하고 문제의 범위를 최소화 할 수 있어야 한다.
profile
사부작 사부작

0개의 댓글