Skip to content

TurkNet/sauron

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Turknet Backbone

Backbone

Turknet Infra

infra

Overall Vission

bigpicture

Motivation

Motivation

Design Overview

Architecture

The 3 Keys of Microservices Governance

Domain-Based

One of the key principles of microservices architectures is to follow domain-driven design (DDD). Having said that, our governance strategy should consider the domain as a first-class citizen wherein business or domain experts should define the information model following the DDD. The business should also be able to define the business capabilities for each of the domains from the information model.

Product-Centric

The business should be able to easily define products from existing information models and business capabilities as well as be able to define business KPIs for products. Governance should also take care of providing a holistic view of existing products, APIs, services, and actual KPIs to the business. This will help the business to align business capabilities with end customers, quickly identify new and innovative products and measure their effectiveness.

Platform-Thinking

With platform-thinking, the enterprise should provide a self-service governance platform for both business as well as IT, wherein both can collaborate and align. The enterprise should be able to define global policies, standards, and guidelines through templates. Teams can build developer templates based on the tools and technologies that they have identified for their domain. The technical artifacts should be auto-generated through templates and deployed to respective run-time environments through a CI/CD pipeline, thereby automating the implementation of policies, standards, and guidelines.

business-architecture

Sauron - Distributed Monitoring System

sauron

What is Distributed ?

It's an in house project sauron, providing in-depth knowledge about building microservices using .NET Core, python and golang framework and variety of tools. One of the goals, was to create a cloud agnostic solution, that you shall be able to run anywhere. Or you can reach out to tutorial from udacity . And you can visit fundamentals of computer sciences

What topics will be discussed?

A lot of them, covering different aspects of building distributed services, whether it comes to implementing the code, managing services discovery and load balancing, configuring logging or monitoring, and eventually deploying to the VM using Docker.

Just to name a few:

⚡ Favorite languages and tools

Which repositories should I clone?

Please clone the following repositories and put them into the same working directory:

How to build?

$ cd scripts
$ sh git-clone-all.sh
$ sh git-pull-all.sh
$ sh docker-build-local-all.sh
$ docker-compose -f docker-compose-prod.yaml up

How to start the solution?

At first, you need to have the following services up and running on localhost (so-called bare minimum):

These can be run as standalone services, or via Docker (recommended approach). You can run them one by one e.g.

docker run --name rabbitmq -d -p 5672:5672 -p 15672:15672 --hostname rabbitmq rabbitmq:3-management
docker run --name redis -d -p 6379:6379 redis
docker run --name grafana -d -p 3000:3000 grafana

Or using Docker compose (first, create a new docker-compose.yml file and then execute docker-compose up command):

version: "3.6"

services:
  influxdb:
    image: "influxdb:latest"
    ports:
      - "8086:8086"
      - "8082:8082"
      - "8089:8089/udp"

  grafana:
    image: grafana/grafana:latest
    ports:
        - "3000:3000"
    depends_on:
      - influxdb
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
    TERM: linux

  rabbitmq:
    image: rabbitmq:3-management
    ports:
      - '5672:5672'
      - '15672:15672'

  redis:
    image: redis
    ports:
      - '6379:6379'

TechStack

https://stackshare.io/turknet-noctools-team/turknet-noctools-team

Known Issues

  • paste tn nuget config for all dotnet apps
  • it must be fix dockerfile as dotnet v5.0 for monitor api
  • add to dockerfile into influx api
  • it must be fix dockerfile for monitor client
  • it must be dockerfile for test automation
  • it must be environment setting for monitoring client
  • tnmon parser install in docker-compose

Todo for replatforming on dotnet 6.0

  • planned operation
  • telekom ssg
  • noctools admin panel

Preparing Dashboards

  • customer icmp
  • customer utilization
  • ssg icmp
  • ssg utilization

Failure Detection System

Roadmap APIs

  • tnsauron customer nonpppoe utilization api (include burstable)
  • tnsauron customer pppoe from tr69 utilization api
  • tnsauron ssg sla api for ivr

Roadmap Consumers

  • ssg sla down into push ssg table - remove netmon port listener
  • customer sla down into push core engineering team
  • ssg down / backbone down into push creatio
  • ssg / backbone utilization threshold increase into push tnmon siem tool > ticket from jira
  • yapa fiber (gpon) down into push yapa fiber table

Roadmap DB

  • Cluster Influxdb

Roadmap Dashboards

  • Network elements
  • Customer equipments
  • Service Monitoring
  • Quality Monitoring
  • Wi-Fi Monitoring

Our Core Pilars

  • Simple design
  • Automate repetitive tasks
  • TDD
  • CI
  • DDD
  • SOLID
  • Clean Code
  • Fast Feedback
  • Continuous Delivery
  • Stable and repeatable release processes

Scale Pilars

scale-pilars

Inspiring books

ddd nw eip howtosolveit implementationpatterns microservicepatterns sre theartofwar thedeep theeffectiveengineer thegoal thesystemarchitectingoforganization

Migration Strategy from vm to k8s

k8s

Zero to Hero

k8s

Useful Links

A Lessons in Learned

PS : The art of system design is the Picking the right architecture = Picking the right battles + Managing trade-offs