콘텐츠로 건너뛰기

바닥부터 알아보는 웹 서비스 모니터링 시스템 구조

바닥부터 알아보는 웹 서비스 모니터링 시스템 구조

신호 시스템에대한 그냥.개인적인 제 생각과 정리를 한 글들일 뿐입니다. 1. 신호란 무엇인가? 또한, 신호는 주기와 주파에 응답하는 크기값을 가지며 이것을 그래프로 표현하면 신호의 형태파형을 알수있습니다. 그래서 우리는 신호의 파형을 통해 신호의 특성을 알수있습니다. 하지만 대부분의 신호는 해석이 쉬운 주기신호가 아닌 비주기신호이기 때문에 이를 해석하기위해서 먼저 주기신호의 자세한 해석이 선행되어져야 합니다. 그러므로 자세한 해석을 위하여 표현법이라는 아이디어가 도입되었습니다.

표현법은 시간영역표현과 주파수영역표현으로 나눌수 있으며 이 표현법 안에서 신호는 정현파신호 고유한 주파수만을 가지는 고정된 너무 간단한 신호의 합으로 표현됩니다.


데이터 전달
데이터 전달

데이터 전달

이제 데이터를 어떻게 서버와 주고 받을지를 결정을 해야 합니다. 다소 모니터링 시스템에서는 두 가지 방법이 있습니다. Polling 일정 주기마다. 저장된 데이터를 서버에서 불러오는 방법 Streaming 통합 통로를 제작해서 데이터가 수집될 때마다. 실시간으로 보내는 방법 두 방법 중 어떤 것을 선택하느냐에 따라 전체적인 개발 방식이 크게 바뀐다. 대략적으로 보시면 다소 Polling 방식이 저희들이 익숙하며 쉬운 방식일 가능성이 크며, 반면 Stremaing 계획을 도입할 경우, 새로운 기술을 공부해야할 수도 있습니다.

지금부터 두 방식에 대하여 개별적으로 알아보려고 합니다.

Polling 방식
Polling 방식

Polling 방식

만약 웹 페이지를 만든다면 가장 간단한 방식은 일정 시간마다. 서버에 API를 호출하는 방법입니다. 2. 데이터 전달 에서 Polling 계획을 사용했다면, 아마 그 시작은 여기에서부터일 것입니다. 1. 페이지에서 서버로 데이터 호출 2. 서버에서 저장소로 데이터 호출 3. 페이지에서 데이터 렌더링 페이지에서는 매 n초마다. 한 번씩 위의 과정을 반복하면 됩니다.

Polling 계획을 사용할 경우 데이터 처리

Polling 계획을 사용한다면 데이터를 가져오는 방법은 보통 두 가지를 고민할 수 있어요. 다소 데이터 전달 방식에 그러므로 달라진다. 데이터 처리를 저장소에서 직접 진행하고 그 결과만 가져오기 만약 DB를 사용한다면 어떤 데이터든 통계 처리 쿼리를 제공하고 있을 것입니다. DB에서 적절한 Aggregation, Reduce 기능을 수행하면 데이터를 쉽게 가져올 수 있어요. 요즘 ElasticSearch를 이용해서 개발을 했었는데, 굉장히 집계 쿼리를 실행하기 쉽게 되어 있었어요.

데이터를 저장소에서 가져와서 모니터링 서버에서 처리하기 두 차례 방식은 데이터들을 가져와서 내 메모리에 저장해 놓고 내 방식으로 처리를 하는 방식입니다.

데이터 처리

보통 모니터링 시스템을 개발한다고 하면, 직접 코딩을 해야하는 부분이 바로 이 3번 부분입니다. 각자의 언어와 프레임워크를 이 부분에서 선택하게 됩니다. 여기 데이터 처리 부분에서는 데이터를 분석하고 집계합니다. 즉 모인 무의미한 데이터들을 유의미한 데이터로 가공하는 부분이기 때문에 가장 핵심 부분이라고 할 수 있어요. 데이터 처리 부분은 웬만하면 위의 데이터 전달 에서 고르는 기술에 따라 결정될 것입니다. 전달 부분에서 Polling을 사용하느냐 Streaming을 사용하느냐에 따라 그에 대한 처리가 굉장히 달라지기 때문에, 이번에도 그 두가지를 나누어서 설명하고자 합니다.

왜 모니터링 시스템의 구조를 파악해야 하는가

사실 모니터링 시스템은 굳이 직접 구축할 필요가 없기는 합니다. 이미 오픈소스 모니터링 시스템들이 많이 있고, 돈을 내고 기업 단위에서 사용할 수 있는 솔루션들도 많이 있습니다. 특히 요새는 Prometheus 라는 괜찮은 오픈소스 모니터링 솔루션도 있습니다. 이것과 그래픽 툴인 Grafana를 같이 사용한다면 모니터링 시스템은 어렵지 않게, 그리고 강력하게 구축이 가능합니다. 그렇다면 굳이 만들 필요가 없는데, 왜 나는 모니터링 시스템을 어떻게 만드는 지에 관하여 설명하려고 하는가. 또한 내가 이 글을 쓰는 이유는 무엇인가. 2. 다음으로는 혹시나 직접 모니터링 시스템을 개발해야 할 일이 생겼을 때 밑그림을 제공하기 위해서입니다.

이 글을 쓰면서 느낀 것은 결국 모니터링 시스템을 구축해야하는 것은 고유한 데이터 파이프라인을 구성하는 것과 비슷한 것 같다. 데이터를 잘 수집하고 그것들을 어떻게 처리하고 확인하느냐에 대한 과정이 동일하기 때문입니다. 물론 그와는 다르게 실시간성이 중요합니다.는 점에서, 조금 더 고된정도 있는 어플리케이션임은 확실합니다. 다시 한 번 말하지만, 아마 모니터링 시스템을 직접 구성할 일은 없을 가능성이 크다. 좋은 모니터링 서비스를 잘 골라 사용하면 됩니다.

이후에 그 서비스를 이용할 때 더 잘 이용할 수 있기를 바라며 이 글을 정리해 보았습니다.

자주 묻는 질문

데이터 전달

이제 데이터를 어떻게 서버와 주고 받을지를 결정을 해야 합니다. 궁금한 내용은 본문을 참고하시기 바랍니다.

Polling 방식

만약 웹 페이지를 만든다면 가장 간단한 방식은 일정 시간마다. 자세한 내용은 본문을 참고 해주시기 바랍니다.

Polling 계획을 사용할 경우 데이터

Polling 계획을 사용한다면 데이터를 가져오는 방법은 보통 두 가지를 고민할 수 있어요. 좀 더 자세한 사항은 본문을 참고하시기 바랍니다.