목록2022/07/20 (3)
Blockchain & Devops
모든 프로세스에 DB를 거치기 때문에 시스템을 고성능으로 유지하기 위해선 DB의 구조와 매커니즘 또한 아주 중요한 요소 중 하나다. 문제상황 : 너무 많은 읽기 연산 해결책 : 데이터베이스 다중화 Primary를 복제해서 Secondary와 Teriary로 분할한다. 다중화(레플리케이션)의 이점 더 나은 성능(읽기 성능은 부 DB의 갯수와 비례한다)과 CQRS(commit command 책임 분리) 안정성 가용성 주 DB에 문제가 생기면 부 DB가 주 DB로 승격된다. 문제상황 : 너무 많은 데이터(~1TB) 해결책 : 파티셔닝(샤딩) 주 특징은 샤딩된, 나눠진 파티션은 고유한 data만 있다. 그래서 해당 DB를 가지고 하나의 노드를 만들어서 부하분산이 가능해진다. 문제 상황 : 낮은 검색 성능 해결책..

시스템 성능을 파악하는데 주요 메트릭은 Throughput과 Latency다. Throughput 시간당 처리량을 의미한다. 1초에 처리하는 HTTP 요청(Request) 수 혹은 네트워크로 전송되는 데이터 전송 속도가 대표적이다. Throughput을 개선하기 위해서는 병목 구간이 어디인가를 먼저 파악하는 것이 중요하다. 대체로 2가지의 개선방법이 있다. 어플리케이션 개선 : 개발된 어플리케이션을 개선하는 것이다. 현상을 먼저 파악 (APM, Application Performance Monitoring)을 시작으로, 알고리즘 개선, I/O 최소화 등의 개선 방안이 따른다. DevOps가 이를 모니터링하고 개발자가 여러 도구를 통해서 개선해야한다. 하위 시스템의 확장 : 대부분 Throughput 개선..

가용성과 확장성 가용성(Availability)는 시스템이 정상적으로 사용 가능한 정도를 의미한다. 정상 사용시간(Uptime)을 정상사용시간과 사용불가시간(Downtime)을 합친 전체 사용시간으로 나눈값을 표현한다. 가용성 99.95%는 1년에 4시간 22분의 다운타임이 된다. 서비스 사용 불가시간을 최소로 하는 것이야말로, 더 높은 가용성을 달성하는 것이다. 또한, 가용성의 핵심으느 단일 장애점(Single Point of Failure)를 없애는 것이다. 어떤 한 노드가 장애가 발생하더라도, 다른 노드가 대체할 수 있어야한다. 이것을 시스템 확장이라고 말한다. 확장성(Scalability)은 요구되는 시스템의 성능에 따라서 동적으로 서버 구성이 변경되고, 시스템 처리 능력을 최적화할 수 있는 것을..