Home.TechStack
TechStack
We are the
DevOps Team.
Our mission is to make the
Product Development Team
efficient and happy.
We live in this technical landscape
(Technical Map)
Platform Infrastructure Components:
Identity and
Access Management (IAM):Keycloak, Java
Reverse Proxy:
Yarp, C#
Bus System:
RabbitMQ
Database:
MSSQL
Secrets:
HashiCorp Vault
Observability:
Loki, Tempo, Prometheus
Infrastructure (cloud):
Kubernetes: Dockerfiles, Kubernetes Manifests, Kustomize
Azure: ARM-Templates, Powershell
Infrastructure (on premise):Infrastructure (on premise):
Windows: Windows-Installer (WIX-Tool), C# (custom extensions), SSL, Firewalls
(linux vs windows (we live in a world of 90% linux
and 10% windows - with the core technologies being 100% open-source and linux driven)Development Platforms and Automation Tools:
Azure DevOps:
- Pipelines: Yaml Pipelines, Powershell
- Scrum Board
- Artefact feeds (nuget, npm)
- Git, Mono Repository
- Wiki
Microsoft 365:
- Office, Outlook, Teams
IDE: Visual Studio, VS Code
Internal Tools: Angular, React, NodeJS, C#, Python
Product Development: Angular, JavaScript, C#, .Net
We implement exciting concepts
DevOps concepts:
CICD
- release flow - automatic SemVer tags based on git branch
- continuous integration (CI): automatically build each module (written in azure- pipelines yaml, powershell, bash)
- continuous deployment (CD): automatically deploy each module into production (written in azure-pipelines yaml, powershell, bash, internal tools written in C# and JavaScript)
Infrastructure as Code (IaC)
provision Azure resources using ARM
templates (VMs, Storage Accounts, DBs, virtual networks, Key Vault, DNS Zone)Policy as Code (PaC)
bring policies into code and collaborate
together as a team, e.g. Workflows, Roles and Permissions to access Azure and other platformsGitOps (Git Operations) - Configuration as Code
GitOps Operato
- watch new docker tags and trigger deployments (based on predefined rules)
- run deployment - generate kubernetes manifests from kustomize templates, apply changes to the cluster
internal tools to bridge the full deployment automation gap
- deployment-status-controller - reports on the latest versions, so that the deployment pipeline can check if all the deployment changes have taken place
- sql-configurator - sets up an initial database and creates users and schemas so that the applications can pick up from there (otherwise the initial setup would have to be done by a sysadmin)
- iam-configurator - create/update users and permissions (the configuration is stored in code)
ChatOps (Chat Operations)
the visual abstraction layer on top of
infrastructure automation APIs for convenient use UIs, leverage git ops and generate audittrails, make automation APIs more accessible (democratize)- Chats - talk to a chatbot that can access lower level automation APIs
- Dashboards - see your infrastructure all in one place and make configuration changes conveniently over an UI
- Wizards - user workflows via UI for complex human-machine processes, e.g. create new release (1. create release branch, 2. build all modules, 3. create release notes)
SecOps (Security Operations)
work with security engineers early on
to avoid big surprisesAIOps (Artificial Intelligence Operations)
@future: use machine learning and big data to
enhance IT operations analytics, e.g.: performance monitoring, event correlations, anomaly, fault and failure (AFF) detection and analysis.different execution runtimes - design a
system that runs on different execution runtimes- windows-desktop
- windows-server
- kubernetes
Quality Assurance
-
acceptance tests written in Given-When-Then
1. all modules in a single process and in-memory,
2. separate processes with mocks&stubs,
3. staging system with real external dependencies,
4. in production
style (Gherkin) that serve as the communication
layer for the 3 amigos (tester, developer,
product owner)
- build testable systems - software cell, ports and adapters
- build test infrastructure: create building blocks to fully automate the testing process
- pipeline automation: automatically create new environments, deploy platform modules, execute acceptance tests