Search
Duplicate
📒

[아키텍쳐 & 대규모 시스템 설계] 02. 대규모 시스템에서 가장 중요한 품실 속성

상태
완료
수업
아키텍쳐 & 대규모 시스템 설계
주제
CS
연관 노트
3 more properties
참고

대규모 시스템에서 가장 중요한 품질 속성

NOTE
P(Performance, 성능) S(Scale, 확장성) A(Availability, 가용성) T(내결함성)

성능 (Performance)

NOTE
성능의 주요 지표로는 응답시간처리량이 있다!
응답시간
처리시간(비즈니스 처리 속도) + 대기시간(네트워크 지연) 으로 구성된다.
latency는 응답시간 혹은 웨이팅 타임을 혼용해서 자칭한다.
단순히 응답시간이 빠르다고 좋은 성능을 가지는 것은 아니다. (QPS 등의 지표도 중요)
처리량
일정시간 동안 데이터를 얼마나 받아서 처리할 수 있는지를 나타내는 지표이다.

고려할 점

1.
응답시간을 올바르게 측정해야한다.
Request1의 경우는 10ms, Request2의 경우는 20ms가 걸렸다고 생각한다.
대기 큐애 걸린 경우, 마지막 사용자는 응답시간이 늘어날 수 있다.
이런 경우를 방지하기 위해 응답시간은 평균을 구해야 한다.
2.
응답시간 분포
Tail Latencty
Percentile
ex) P90, P95는 x(ms)안에 들어와야한다는 기준
Tail Latency
대부분이 멀쩡한데, 특정 경우에 지연시간이 큰 경우
응답시간/처리량 그래프를 보면 어느순간 응답시간/처리량이 이상해진다.
CPU나, Memory 사용률이 너무 높은경우
너무 많은 IO 연결이 있는 경우 ( network, db .. )
메세지큐가 용량이 꽉찬경우

확장성 (Scale)

NOTE
시스템의 작업 처리능력을 의미한다!
확장성이 좋다는 것은?
리소스 투자 대비 작업 처리 능력 향상이 좋다!
시스템은 3가지 방향으로 확장성을 확보할 수 있다.
1.
수직 확장성
컴퓨터 자체의 리소스를 업그레이드한다!
장점 : 코드 변경 없이 가능, 스케일 업/다운이 쉽다.
단점 : 확장에 한계가 존재하며 고가용성과 내결함성을 갖추지 않음
2.
수평 확장성
새 인스턴스를 추가해, 리소스를 확장한다.
장점 : 확장에 한계가 없으며, 고가용성과 내결함성을 갖춘다.
단점 : 초기 코드 변경이 필요하고 리소스 구성이 복잡해진다.
3.
팀/조직 확장성
하나의 코드베이스를 여러 엔지니어가 작업하게 되면 어느 순간 투입 대비 생산성이 감소한다.
많은 미팅과 참여인원
코드 병합 충돌
비즈니스 복잡도 증가..
코드베이스가 다른 MSA 및 네트워크 구성으로 해결

가용성 (Availability)

NOTE
서버와 네트워크, 프로그램 등의 시스템이 정상적으로 사용가능한 정도를 의미한다!
가용성의 정의 및 공식
MTBF → 유효수명 MTTR → 문제 발견 후 회복까지 시간
가용성 = 업타입 (업타입 + 다운타입)
업타임 : 시스템이 운영되어 접근 가능함을 말한다.
가용성 90%는 절대 높은게 아니다!! (99.9가 표준임) → 90인경우는 하루 2시간 30분가까이 다운되있다는 의미임

내결함성 및 고가용성

NOTE
성능의 주요 지표로는 응답시간처리량이 있다!
HA(고가용성)을 저해하는 원인
휴먼 에러
결함이 있는 구성을 포함
코드 및 명령어 오류
테스트 안된 새 버전 배포
SW 에러
Null Exception
Segment fault
HW 에러
수명 다한 하드웨어
내결함성
일부 구성에 오류가 발생하더라도, 전체 시스템은 정상적으로 가동되게끔 유지하는 기능
내결함성을 위한 방법은 3가지가 존재한다.
1.
결함 예방
중복성의 종류
공간적 중복성 : DB 레플리카, 복제된 서버
시간적 중복성 : 동일한 수행이나 요청을 성공 혹은 포기할 때까지 반복
복제와 중복성의 전략
Active - Active
DB레플리카를 두고, 동기화를 유지한다.
수평확장의 장점 / 동기화 오버헤드
Active - Passive
모든 요청을 받는 주 인스턴스가 있고, 이를 복제하는 스냅샷이 존재한다.
최신의 상태를 유지 /확장능력을 잃는다.
2.
결합 감지 및 고립
1번 인스턴스가 응답이 안되므로, 고립시킨다.
health check로 서비스가 정상적으로 응답하는지 점검하는 모니터링 서비스 실행
만약 응답이 없다면 해당 서비스를 고립시킨다.
3.
복구
트래픽 중단 후 인스턴스 재부팅
롤백

SLA, SLO, SLI

NOTE
SLA(서비스 수준 협약)
가용성, 성능, 내구성, 장애 응답 등 품질에 대한 합의 계약서
보상에 대한 내용도 명시
SLO (서비스 수준 목표)
서비스는 3nines(99.9%)의 가용성을 가진다.
응답속도는 P90 - 100ms를 만족한다.
장애 대응은 48시간 내로 이루어진다.
SLI (서비스 수준 척도)
모니터링 시스템을 사용해서, 측정된 실제 숫자값이 나온다.
SLO의 합/불 여부를 판단하는 지표가 된다.