Component and Connector View in MetricStore

Primary Presentation

flowchart TB
    slack(["Coinone Slack"])
    subgraph System
        subgraph 1 [Presentation Layer]
            AsyncListener
            AsyncSlackResponse
            AsyncWebClient
        end

        subgraph 2 [Business Layer]
            MetricService
        end

        subgraph 3 [Persistence Layer]
            MetricClient
        end
    end

    subgraph "External Source"
        bigquery[("BigQuery")]
    end

    slack --> |event subscription| AsyncListener
    AsyncListener --> |event listener| MetricService
    MetricService --> |request| MetricClient
    MetricClient --> |response| MetricService
    MetricClient --- |request query & reponse| bigquery
    MetricService --> AsyncWebClient --> AsyncSlackResponse --> slack

C&C 뷰로 분석한 MetricStore 시스템은 위 그림과 같이 Layered 패턴을 띄고 있다. 슬랙 봇과의 대화에서 사용한 슬래시 커맨드 이벤트를 받아 적절한 서비스를 호출한다. 지표를 생성하기 위한 클라이언트는 Persistent Layer 에 속하며 사용자가 원하는 지표를 생성할 수 있도록 쿼리를 생성하고 데이터 웨어하우스에 조회한다. 이렇게 조회된 결과는 슬랙 봇 과의 대화의 메세지로 전송하는 시스템이다.

Element Catalog

Coinone Slack

AsyncListener

MetricService

MetricClient

External Source

AsyncWebClient

AsyncSlackResponse

Context Diagram

컨텍스트 다이어그램은 시스템을 단일 프로세스로 인식하고 외부 엔티티가 시스템과 상호 작용하는 방식을 표시한다.

flowchart LR
    subgraph "MetricStore Application"
        m([MetricStore Application])
    end

    subgraph i [" "]
        b[(BigQuery)]
    end

    subgraph j [" "]
        u[[사용자]]
    end

    subgraph k [" "]
        w[[작업자]]
    end
    
    u --> |retrieve metric| m --> |retrieve data| b --> |from query| m --> |send DM| u
    u --> |request metric| m --> |handle request| w

    linkStyle 0,1,2,3 stroke:blue
    linkStyle 4,5 stroke:red

Variability Guide

Variability Guide(가변성 지침) 은 뷰에 나타난 아키텍처의 일부분인 가변성 지점들의 가변성을 어떤 식으로 활용해야 할지 나타낸다. (소프트웨어 아키텍처 이론과 실제 p459)

지표 질의 변경

Rationale

TODO: 중요한 디자인 결정의 근거를 여기에 설명한다. 또한, 제외된 대안에 대해서도 설명한다. 이 섹션에는 가정, 제약 조건, 분석 및 실험 결과, 보기에 영향을 미치는 아키텍처적으로 중요한 요구 사항도 표시할 수 있다.