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.
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.
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.
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
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:
- RESTful API implementation with ASP.NET Core
- Consumers implementation with Golang
- UI implementation with Flask
- Tnmon SIEM implementation with React
- Domain Driven Design fundamentals
- SQL and NoSQL databases (SQL Server, , InfluxDB)
- Distributed caching with Redis
- CQRS, Commands, Queries & Events handlers
- Using RabbitMQ as a message queue
- Dealing with asynchronous requests, Process Managers and Sagas
- Monitoring with App Metrics, Grafana, Influxdb
- Logging with Serilog, and ELK stack
- Building Docker images, managing containers, networks and registries
- Defining Docker compose stacks
- Managing your own Azure Nuget feeds
- CI & CD with build services such as Azure Devops, Azure Pipelines
- Deploying services to the Linux Servers and configuring Nginx
- Orchestrating services on your VM or in the Cloud using Kubernetes
Please clone the following repositories and put them into the same working directory:
- Noctools-Sauron
- Noctools-Sauron-MonitoringClient
- Noctools-Sauron-ZabbixApi
- Noctools-Sauron-Cacti-Consumer
- Noctools-Sauron-InfluxApi
- Noctools-Sauron-MessageBridge-WebHook
- Noctools-Sauron-Anakin-Consumer
- Noctools-Sauron-Monitor-Api
- Noctools-Sauron-Monitor-Client
- Noctools-Sauron-Test-Automation
- Noctools-Sauron-Test-Automation-TnMon
- NocTools-Sauron-Test-Automation.Tnmon.v2
- Noctools-Sauron-SeffaflikSayfasi
- Noctools-Sauron-Scripts
- Noctools-Sauron-PPPSessionDataCollector
- Noctools-Sauron-L2TP_Sessions
- Noctools-Sauron-CereusTransporter
- Noctools-Sauron-wiki
$ 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
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'
https://stackshare.io/turknet-noctools-team/turknet-noctools-team
- 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
- planned operation
- telekom ssg
- noctools admin panel
- customer icmp
- customer utilization
- ssg icmp
- ssg utilization
- tnsauron customer nonpppoe utilization api (include burstable)
- tnsauron customer pppoe from tr69 utilization api
- tnsauron ssg sla api for ivr
- 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
- Cluster Influxdb
- Network elements
- Customer equipments
- Service Monitoring
- Quality Monitoring
- Wi-Fi Monitoring
- Simple design
- Automate repetitive tasks
- TDD
- CI
- DDD
- SOLID
- Clean Code
- Fast Feedback
- Continuous Delivery
- Stable and repeatable release processes
- https://turk.net/wholesale/network
- https://turk.net/wholesale/data-center
- https://turk.net/hakkimizda/altyapimiz
- https://www.tocinstitute.org/the-goal-summary.html
- https://erolcalisyolveinsaatmak.wordpress.com/teknik-dokumanlar/
PS : The art of system design is the Picking the right architecture = Picking the right battles + Managing trade-offs