Posts 시스템 디자인 개념정리: Latency, Throughput, CDN, Availability
Post
Cancel

시스템 디자인 개념정리: Latency, Throughput, CDN, Availability

Latency & Throughput

시스템 디자인에서 정말 중요한 개념이다.

Latency(지연시간)

  • 네트워크에서 하나의 데이터 패킷이 한 지점에서 다른 지점으로 보내지는 데 소요되는 시간을 말한다.
  • 보통 요청이 왔을 때 요청을 처리하고 응답할 때까지의 시간을 말한다.
  • 일반적으로 Latency는 두 네트워크의 거리가 멀 때 높아진다.

latency 위에서 총 지연시간

  • 클라이언트 → 서버
  • 서버 → DB
  • DB에서의 작업 (read / search / write)
  • DB → 서버
  • 서버 → 클라이언트

Accessing

  • 1MB 를 Memory에서 sequencially 읽는다면 ⇒ 250ms(0.25s)
  • 1MB를 SSD에서 읽는다면 ⇒ 1000ms(1s)
  • 1MB를 HDD에서 읽는다면 ⇒ 20,000ms

Throughput

throughput

  • 서버가 감당할 수 있는 number of request
  • 일정 시간 동안 처리하는 작업의 양이다.

보통 Latency가 짧으면 Throughput은 높지만, 항상 성립되는 것은 아니다. 멀티 태스킹에 최적화된 서버는 실시간 시스템에 비해 Latency는 길지만 Throughput은 훨씬 높다.

전 세계에 전략적으로 분산되어 있는 서버 네트워크이다. 사용자가 리소스를 다운로드할 수 있는 대체 서버 노드를 제공해 작동한다. 이런 노드는 전 세계에 퍼져 있기 때문에 지연시간 감소로 인해 컨텐츠의 빠른 응답과 다운로드 시간을 제공함으로써 사용자에게 더 가까운 전략적 이점을 제공한다.

cdn-1

  • 한국에 main 서버를 열었다고 하자.
  • 이때, 영국에 있는 Kevin이 한국의 main서버에 접근하려고 하면 대륙 횡단을 해서 와야 한다. 단순히 서버에 접근하는 것이 아니라 HTML, CSS, JS, Image 등 정적 파일을 갖고 와서 Kevin의 컴퓨터에 렌더링을 하는 데까지 걸리는 시간까지 생각하면 정말 느릴 것이다.
  • 이러한 문제를 해결하기 위해서 나온 개념이 CDN이다.
  • 영국에 Cache Server를 놓는다면, Kevin이 요청할 때 우선 캐시 서버에 해당 리소스가 있는지 없는지 확인한다. 없다면 main서버에 접근하여 리소스를 받아온다. 이때, 리소스 중 static contents를 asynchronous 하게 영국 CDN에 저장해둔다.
  • 그럼 그 다음 요청부터는 같은 리소스를 요청할 때 main서버까지 가는 것이 아니라 Cache Server에서 가져와 속도가 아주 빨라진다. 이제 Kevin뿐만 아니라 영국에 있는 Tom도 CDN에서 static contents를 받아올 수 있게 되었다.

cdn-2

  • 글로벌 서비스는 이러한 CDN방식을 사용한다.
  • 이렇게 한 서버에서 static contents를 공급해주는 것이 아니라 여러 지역에 Cach Server을 두고 저장해서 이를 가져오는 방식을 사용하기 때문에 Distrubuted System이라고도 한다.
  • CDN을 개발할 필요는 없다. 실제로 세계 각지에 데이터 센터를 가지고 있고 CDN 서비스를 제공해주는 회사들이 있는데, 이를 사용하면 된다. AWS Cloudfront, Cloudflare 등이 대표적이다.

Availablity(가용성)

  • 서버와 네트워크, 프로그램 등의 정보 시스템이 정상적으로 사용 가능한 정도를 말한다.
  • 정상적인 사용 시간(Uptime)을 전체 사용 시간(Uptime + Downtime)으로 나눈 값을 말한다.
  • availability가 99%이면 좋은 걸까? 아니다. 이는 서버가 1년 동안 5일 정도를 쉰다는 의미이다. 물론 availability가 100%일 수는 없다. 그렇다면 어느 정도가 가용성이 좋다고 말할 수 있을까?
  • HA(Highly Availability; 높은 가용성)의 기준은 99.999%이다. 이를 Golden Stand, 5 nines 라고 부르기도 한다.
    • 이 정도로 서버가 available하다면 1년 중에 5분 정도를 쉰다는 의미이다.
  • 이렇게 5 nines로 구성한다 하더라도 서버가 1년에 5분은 작동하지 않는데, 이를 해결하기 위해서 서버 구축을 할 때 다양한 방법이 사용될 수 있다. (replica, redundency 등)
  • 서비스 수준 목표
    • SLA(Service Level Agreement): IT 서비스를 제공하는 업체와 사용하는 업체 간의 협약을 의미한다. 제공하는 서비스의 성능과 가용성 등 일정한 서비스 수준을 보장하기 위해 맺는 업체 간 계약이다.
    • SLO(Service Level Object)
This post is licensed under CC BY 4.0 by the author.

Docker란 무엇인가

캐시 전략

Loading comments from Disqus ...