일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- nandtotetris
- 시간 윈도우
- 스트리밍 아키텍쳐
- MySQL
- 구문 분석
- InnoDB
- 메모리 세그먼트
- s3
- 추적 데이터 마이닝 파이프라인
- vm머신
- 리눅스
- 밑바닥부터 만드는 컴퓨팅 시스템
- apm
- SpanId
- 텀블링 윈도우
- 마운트
- 분산추적
- 스트리밍 데이터 아키텍쳐
- OTEL
- 도커
- 피벗 추적
- APM 만들기
- Terraform
- 실시간 스트리밍 데이터
- vm번역기
- 스택머신
- jack 문법
- 컴퓨터 아키텍쳐
- ec2
- 핵심 데이터 모델링
- Today
- Total
목록전체 글 (102)
이것이 점프 투 공작소
추적 시스템에서 데이터 마이닝은 필수적인 작업입니다.마이닝 작업 중 가장 보편적이고 구현하기 쉬운 작업 중 하나인 '피쳐 추출' 시스템과 각 요소들에 대해 간단히 알아보려고 합니다.피쳐란?'피쳐((feature))'는 단일 스팬에서 계산할 수 없는 하나 이상의 값을 계산하는 프로세스를 의미합니다.피쳐 데이터들은 어떤게 있을까?피쳐는 거의 실시간으로 계산됩니다.따라서 APM은 이를 시계열로 보거나 추세를 모니터링하거나 경보를 제공하게 됩니다.피쳐로 추출되어 보여지는 대표적인 데이터들은 아래와 같습니다.추적의 총 대기 시간추적 시간 시간스팬 수네트워크 호출 횟수루트 서비스 및 해당 엔드포인트 이름클라이언트 타입대기 시간 분석: CDN, 백엔드, 네트워크, 스토리지 등다양한 메타데이터: 클라이언트 호출 발신 ..

피벗 추적이란?분산 추적 시스템 내부의 계측 가능한 한 지점에서 측정값을 정의하고.다른 지점에서 지정한 그 값을 기반으로 선택,필터링,그룹화 하여 클라이언트에서 전체 시스템을 관측 할 수 있게 하는 기능입니다. 예를 들어 아래 쿼리는 HBase,맵리듀스,HDFS 클라이언트를 실행하는 다른 클라이언트의 요청을 처리하는 HDFS 데이터 노드에 적용되는 쿼리입니다.즉 분산 시스템 내부에서 "클라이언트가 얼마나 데이터를 읽었는지"를 추적하기 위한 코드입니다.FROM bytesRead IN DataNodeMetrics.incrBytesReadJOIN client IN FIRST(ClientProtocols) ON client => bytesReadGROUP BY client.procNameSELECT cleint..

APM에서는 어플리케이션의 모든 요청을 다 추적하고 분석하지 않습니다.추적 데이터는 실제 어플리케이션의 비즈니스 트래픽을 쉽게 초과할 수 있으며, 이는 서비스에 영향을 주게됩니다. 요청을 100% 샘플링한다면 대퍼 추적기는 검색 작업에 대해 1.5%의 처리량과 16%의 시간지연 오버헤드가 발생한다고 합니다.그렇기에 추적 시스템들은 추적의 특정 부분만을 캡쳐하기위해 샘플링을 사용합니다.만약 추적의 0.01%만 캠쳐하도록 샘플링하면 처리량 오버헤드는 0.06%, 응답시간은 0.20% 감소한다고 합니다. 따라서 적절한 양의 요청들을 샘플링하는건 분산추적 어플리케이션에서 매우 중요한 요소입니다.헤드 기반(head-based) 샘플링upfront sampling이라고도 하며, 들어오는 각각 추적들에 대해서 매번 ..
회사에서 분산추적APM을 사용하며 가장 궁금했던 부분은,'다른 프로세스, 외부 서비스간 이동이 발생이 있었는데, 어떻게 하나의 추적이라고 계속 인식하는거지?' 였습니다.오픈소스인 OTel 자바 프로젝트를 통해 분산추적 구현의 중요한 챕터 중 하나인 Context 전파에 대해서 알아보려고 합니다. https://github.com/open-telemetry/opentelemetry-java-instrumentation GitHub - open-telemetry/opentelemetry-java-instrumentation: OpenTelemetry auto-instrumentation and instrumentation libraries forOpenTelemetry auto-instrumentation ..

APM을 직접 만들어 저의 사이드 프로젝트들에 쓰고싶다는 작은 소망이 있었습니다.지금부터 APM을 만들기 위한 공부들과 만드는 과정들을 같이 포스팅하려고 합니다.화이팅 첫번째로 CNCF 표준이자 분산 추적 프레임워크인 OpenTelemetry, OTel의 구조와 핵심 구성요소Trace, Span, Baggage, Metric, Log 에 대해 알아보겠습니다.OTel이란?이전에 분산추적을 구현하는 방식은 매우 다양했고 대부분 직접 만들어 사용했기에 각 서비스들에 종속되어 있는 방식이었습니다.시간이 지날수록 표준의 필요성이 느껴지게 되었고 두가지 오픈 소스가 만들어졌습니다. 하나는 구글의 내부 라이브러리 집합인 센서스(Census)에서 시작된 오픈센서스(OpenCensus)하나는 CNCF 프로젝트인 Open..

스트리밍 시스템에서 모은 많은 데이터들은 시스템 안에서 효율적으로 분석되고 집계되어야합니다.아무래도 실시간이고 방대한 데이터를 대상으로 하는 만큼 '확률적인 알고리즘'이 많이 사용됩니다.또 대량의 데이터에 대해서 랜덤 추출, 카더널리티, 빈도, 이전 유입 여부를 확인하는 4개의 알고리즘들에 알아보겠습니다.무작위 샘플 데이터 추출 - 레저부아 샘플링(Reservior Sampling)스트림 데이터에서 무작위로 샘플 데이터 추출이 필요할 때가 있습니다.만약 시스템에서 분당 1,000만 건의 로그가 들어온다고 했을 때, 우리는 모든 로그를 다 메모리에 저장해서 빠르게 분석할수는 없습니다.이런 상황에서는 랜덤 표본 데이터를 추출해서 원하는 비즈니스 결과를 만들 수 있습니다. 레저부아 샘플링 알고리즘은 스트림 데..

실시간 데이터 처리를 공부하다가 윈도우 기법에 대해서 보게되었습니다,슬라이딩윈도우는 네트워크나 알고리즘을 공부하다 볼 수 있기에, 비교적 익숙했지만 텀블링 윈도우는 잘 몰랐습니다.스트림 시스템에서 두 기법에 어떤 차이가 있는지 또 어떻게 쓰이는지 한번 정리해보려 합니다!타임 스큐 (Time skew)프로그램을 만들고 운영하다 보면 시간을 다루는일이 참 많습니다.시스템에 진입한 시점을 말하는 스트림 시간(Stream time) 실제 이벤트가 발생한 이벤트 시간(Event time) 크게 두가지로 볼 수 있을 것 같습니다. 예를들어 스마트 워치에서 피트니스 데이터를 수집 할 때 스트리밍 시스템으로 데이터가 전송된다고 합시다.여기서 스트림 시간은 피트니스 데이터가 시스템의 어떤 단계에 들어온 시점이고, 이벤트..

이전 포스팅에 이어서 스트리밍 시스템에서 사용하는 패턴의 아키텍쳐를 공부해보고자 합니다.실시간 데이터 파이프라인 아키텍쳐를 보고 공부한 내용을 다룹니다!스트리밍 데이터 아키텍쳐스트리밍 아키텍쳐는 크게 6가지 단계로 나눌 수 있습니다.본 포스팅에서는 수집, 접근 단계에 대해 정리해 보려합니다.수집열심히 수집하고 분석한 데이터는 비즈니스에 맞게 적절하게 저장되어야합니다.장기 스토리지(Long-term storage)에 저장스트리밍 시스템에서 처리한 데이터를 S3, HDFS 또는 RDBMS와 같은 장기 저장소에 저장하는 경우가 있습니다.이는 주로 배치 또는 오프라인 접근을 위한 저장입니다. 분석단계에서 매시지를 보낼때 즉시 저장하거나, 배치로 장기 저장소에 저장할수도 있지만,배치로더를 통해 저장할수도 있습니다..

일반적인 스트리밍 시스템에서 사용하는 패턴의 아키텍쳐를 공부해보고자 합니다.실시간 데이터 파이프라인 아키텍쳐를 보고 공부한 내용을 다룹니다!스트리밍 데이터 아키텍쳐스트리밍 아키텍쳐는 크게 6가지 단계로 나눌 수 있습니다.수집 단계클라이언트에서 생성되는 데이터가 시스템에 들어오는 스트리밍 시스템의 첫 단계입니다.수집을 위한 몇가지 패턴들이 존재하며 이중 하나를 선택하여 사용합니다.요청/응답 패턴발행/구독 패턴단방향 패턴요청/확인응답 패턴스트림 패턴요청/응답 패턴 (Request/response pattern)클라이언트가 서버로 요청을 보내면 서버가 응답하는 웹 브라우저에서 자주 사용되는 일반적인 패턴입니다.반비동기(Half-async), 비동기(Full-async) 방식으로 요청/응답 패턴을 구현할 수 있..

이제부터 읽었던 책들에 대해서 블로그에 간단히 개인적인 후기를 남겨놓으려고 합니다.저의 첫 독서 후기는 유동오님의 책 '핵심 데이터 모델링' 후기입니다! 이 책을 선택한 이유?처음 회사에서 일을 하면서, 우리 시스템의 데이터 모델들이 과연 잘 정리되어 있는 걸까? 라는 의문이 들 때가 종종 있었습니다.하지만 그럴 때마다 저는 그저 "잘 되어 있겠지", "원래 이렇게 쓰는 거겠지.." 하면서 명확한 기준이 없는 상태로 사내 데이터 모델링들이막연하게 정답이라고 생각하고 받아들였습니다. 데이터의 효율적인 적재와 활용은 개발자의 중요한 업무 중 하나라고 생각했지만,부끄럽게도 저 스스로 데이터 모델링에 대해 본격적으로 공부하지 않았던 제 모습을 반성하기 위한 첫 시작으로 이 책을 결정했습니다. (쓰다보니까 생각..