본문 바로가기

전체 글134

Devops Day 64 (6.7) 성능 테스트_병목 찾기 Throughput 개선 고속도로의 예를 다시 빌려, 다음과 같이 세 도시를 연결하는 두 개의 고속도로 중 대구-부산 간 고속도로가 병목을 일으키고 있다고 가정합시다. 서울-부산 사이의 Throughput은 최소값인, 200대/시간에 불과합니다. 이런 경우에는 도로 확장 공사를 통해 병목을 해결합니다. 확장 공사를 마친 대구-부산 간 고속도로의 Throughput이 800대/시간으로 개선되었습니다. 병목이 아닌 구간(서울-대구)을 개선하는 것은, 전체의 Throughput을 개선하는 데에 전혀 도움이 되지 않습니다. 도리어 대구-부산 간의 정체가 늘어나 Throughput이 감소할 수도 있습니다. 따라서, Throughput 개선을 위해서는 병목 구간이 어디인가를 먼저 파악하는 것이 가장 중요합니다. L.. 2023. 6. 8.
Devops Day 64 (6.7) 성능 테스트_가용성과 확장성 + 부하 테스트 기본 가용성과 확장성 가용성(Availability)이란 시스템이 정상적으로 사용 가능한 정도를 말합니다. 정상적인 사용시간(Uptime)을 정상사용시간과 사용불가 시간을 합친 전체사용시간(Uptime + Downtime)으로 나눈 값을 표현하며, 예를 들어 가용성 99.95%는 약 1년에 4시간 22분의 다운타임이 됩니다. 가용성의 핵심은 바로 단일 장애점(Single Point of Failure)을 없애는 것이어야 합니다. 즉, 어떤 한 노드가 장애가 발생해도, 동일한 처리 능력을 가진 다른 노드로 대체될 수 있어야 합니다. 이를 위해 필요한 것이 바로 시스템 확장입니다. 확장성 확장 가능한 시스템: 요구되는 시스템의 성능에 따라 동적으로 서버 구성이 변경되고, 시스템 처리 능력을 최적화할 수 있는 시스.. 2023. 6. 8.
Devops Day 63 (6.5) 서비스 모니터링_서비스 수준 목표 서비스 수준 관련 용어 서비스를 운영하는 데 있어서, 사용자에게 필요한 적정 수준을 정의하고 제공하기 위해, 서비스 제공자와 사용자는 서로 서비스 수준 협약(Service Level Agreements, SLA)을 맺습니다. 하지만 고객과의 약속이라는 것은 "어느 정도의 서비스를 제공해야 제대로 제공했다고 말할 수 있는 것인지"를 정확하게 명시하지 않으면 안 됩니다. 따라서, SRE 엔지니어는 척도를 통한 목표를 이해하고, 실제로 목표를 세우는 방법을 알아야 합니다. 여기서는 서비스 수준 관련 용어에 대해서 학습합니다. SLI (서비스 수준 척도, Service Level Indicator) 서비스 수준 지표(SLI)는 기업이 고객에 대한 서비스 수준을 측정하는 데 도움이 되는 구체적인 지표입니다. SL.. 2023. 6. 5.
Devops Day 62 (6.2) 서비스 모니터링_Prometheus + Grafana Prometheus 모니터링 시스템 프로메테우스는 오픈소스 모니터링/알림 시스템입니다. 프로메테우스는 쿠버네티스, 노드, 프로메테우스 자체를 모니터링할 수 있습니다. CNCF에서 프로메테우스 역시 관리하고 있으며, 이 두 도구를 비롯해 시각화를 담당하는 Grafana와 함께 세 도구 조합은 정석적으로 널리 사용되고 있습니다. 프로메테우스 구성 요소 · 프로메테우스는 시계열(time series) 데이터를 저장합니다. · 프로메테우스 서버는 다양한 exporter로부터 각 대상의 메트릭을 pull하여 주기적으로 가져오는 모니터링 시스템입니다. o 예를 들어, 쿠버네티스 관련 메트릭을 가져오고 싶다면 쿠버네티스 exporter를, mongoDB 관련 메트릭을 가져오고 싶다면, mongodb exporter를.. 2023. 6. 4.
Devops Day 62 (6.2) 서비스 모니터링_쿠버네티스 클러스터 모니터링 쿠버네티스 클러스터 모니터링 쿠버네시트의 경우 클러스터안에 다수의 노드 그리고 그 안에 파드를 비롯한 다앵한 워크로드가 많게는 수백 개가 실행되는 형태로 구성되어 있습니다. 단일 노드의 경우 리눅스 명령어를 이용하여 하드웨어의 상황을 파악하고, 각 프로세스 모니터링을 했다면, 쿠버네티스의 경우 각 노드는 전적으로 컨트롤 플레인에 의해 관리되므로 우리는 모니터링에 대해 다른 접근 방법을 가져야 합니다. 클러스터 환경에서의 문제 해결의 어려움 클러스터 모니터링에서도 노드가 사용하는 리소스를 확인할 수 있습니다. 대표적으로 kubectl top 명령어가 있습니다. 이 명령어는 노드와 파드가 각각 얼마만큼의 CPU/메모리 리소스를 사용하고 있는지 확인할 수 있습니다. 여러 개의 마이크로서비스가 워크로드로서 실행.. 2023. 6. 3.
Devops Day 61 (6.1) 서비스 모니터링_Sprint Auto Scaling + CloudWatch를 이용한 알림 Bare Minimum Requirement · EC2 서버를 ASG를 통해 구성합니다. 구성은 다음을 따릅니다. · CloudWatch 알람을 통해 ASG의 스케일 인/아웃을 진행합니다. · 스케일 인/아웃이 진행될 때 디스코드에 알림을 보냅니다. · 메트릭을 바탕으로 장애 발생 예상 시점에 디스코드에 알림을 보냅니다. · CPU 사용률(CPUUtilization) 값이 특정 값 이상일 때 경보가 발생하게 하세요 Getting Started 시작 템플릿 구성 ASG를 위한 시작 템플릿 구성은 다음을 따릅니다. · 그룹 정보 o 원하는 용량: 1 o 최소 용량: 1 o 최대 용량: 3 · 시작 템플릿은 다음 구성을 따릅니다. o Ubuntu Server (LTS) o t2.nano o 기존 혹은 신규 키.. 2023. 6. 1.