Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

샘플에서는 추가로 DataDog(https://www.datadoghq.com/) 매트릭스 연동하였습니다. ( 클러스터에 발생하는 메시지에대한 모니터링)

Code Block
titledocker-compose.yml
collapsetrue
version: '3.4'

services:
  datadog:
    image: datadog/agent:7
    ports:
      - 8125/udp
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /proc/:/host/proc/:ro
      - /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
    environment:
      DD_API_KEY: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      DD_DOGSTATSD_NON_LOCAL_TRAFFIC: "true"

  lighthouse:
    image: ${DOCKER_REGISTRY-}lighthouse
    build:
      context: .
      dockerfile: LightHouse/Dockerfile
    environment:
      CLUSTER_IP: lighthouse
      CLUSTER_PORT: 4053
      CLUSTER_SEEDS: akka.tcp://actor-cluster@lighthouse:4053

  akkanetcore:
    image: ${DOCKER_REGISTRY-}akkanetcore
    build:
      context: .
      dockerfile: AkkaNetCore/Dockerfile
    depends_on:
     - lighthouse
    ports:
     - 8080:5000
    environment:
      ASPNETCORE_ENVIRONMENT: Development
      MonitorTool: datadog
      MonitorToolCon: datadog
      port: 5000
      akkaport: 7100
      akkaip: akkanetcore
      roles: "akkanet"
      akkaseed: "akka.tcp://actor-cluster@lighthouse:4053"

  akkanetcore2:
    image: ${DOCKER_REGISTRY-}akkanetcore
    build:
      context: .
      dockerfile: AkkaNetCore/Dockerfile
    depends_on:
     - lighthouse    
    environment:
      ASPNETCORE_ENVIRONMENT: Development
      MonitorTool: datadog
      MonitorToolCon: datadog
      port: 5000
      akkaport: 7000
      akkaip: akkanetcore2
      roles: "akkanet"
      akkaseed: "akka.tcp://actor-cluster@lighthouse:4053"

  akkanetcore3:
    image: ${DOCKER_REGISTRY-}akkanetcore
    build:
      context: .
      dockerfile: AkkaNetCore/Dockerfile
    depends_on:
     - lighthouse    
    environment:
      ASPNETCORE_ENVIRONMENT: Development
      MonitorTool: datadog
      MonitorToolCon: datadog
      port: 5000
      akkaport: 7000
      akkaip: akkanetcore3
      roles: "akkanet"
      akkaseed: "akka.tcp://actor-cluster@lighthouse:4053"

데이터 분산처리

DC가 단일 DB라고 가정해봅시다. AKKA에는 메시지를 저장하는 영속성 기능도 지원하지만

중요 도메인 데이터에대해 RDB로 구성된것을 AKKA의 Persist 로 전환하는것은 바람직하지 않습니다.

RDB는 가장 안정적이고 검증이된 Persist역활을 하는 것중 하나이며 ,RDB의 부담을 덜어주는 방향으로

...

측정가능

클러스터에서 발생하는 도메인 메시지에대한 모니터링및 측정은 장애대응/성능향상등을 위해 중요한요소이며

단순하게 CPU사용량/네트워크 사용량만을 이용하지 않습니다. 설계된 메시지에대한 유연한 오브젝트 단위 카운팅이가능하며

다양한 모니터링 툴과 연동 가능합니다. ( 이전장 참고 - 06. 실시간 메시지 성능 카운팅 )

여기서는, 3대를 클러스터로 묶은후 110만 메시지를  분산 전송하고 ,유실여부와 TPS를 측정하였습니다.

Image Added

  • 단일노드 : 1700tps
  • 클러스터(3) :  5100tps

단일노드에서 1700tps정도 나오도록 설계하였으며, 3대의 노드에서 3배의 성능 향상이됨을 검증을 하였습니다.

단일노드가 기대치 이하이거나(100Tps 이하) 자신이 만든 기능에 대해  성능 측정을 할수 없다고 가정해봅시다.


Image Added



데이터 분산처리

메시징은 바

...