DevOps Consulting and Platform Engineering
DevOps is a way of working in which software is built, tested and released to production through automation and shared responsibility. We set the scope to fit your needs: sometimes a CI/CD (continuous integration and continuous delivery) pipeline for a single application, sometimes a Kubernetes platform shared by several teams, along with infrastructure automation and monitoring. We work in the cloud, in your own data center and in hybrid environments.
- Environments
- AWS, Azure, Google Cloud, local cloud providers, data center, hybrid
- Platforms
- Kubernetes (EKS, AKS, GKE), OpenShift, Rancher
- Working model
- Project · ongoing consulting · managed services
- First step
- Free initial consultation or free assessment
When does DevOps support come into play?
As your software team and the number of systems grow, your delivery process needs to mature with them. We decide together where to start, based on your current situation.
- Releases depend on manual steps. Automating those steps lets you release more often and makes rollbacks predictable.
- Environments differ from one another. Building test and production environments from the same definitions reduces unexpected differences.
- You run Kubernetes and the operational load is growing. Version upgrades, capacity planning and a standard way of operating become necessary.
- Infrastructure changes need to be recorded. Being able to trace who changed what and when matters for both operations and audits.
- Monitoring and alerting need a fresh look. Bringing metrics, logs and alerts into a single setup, so issues are visible before users notice them.
- Teams handle similar infrastructure work separately. Shared templates and self-service environments reduce repetitive work and waiting times.
What changes with the engagement?
The goal is not to install tools but to improve how your team's day-to-day work gets done. The table summarizes starting points we often see and the target setup.
Our working principles
- Infrastructure, delivery pipelines and policies are defined as code.
- Changes are reviewed and kept on record.
- The platform itself is tested and versioned.
- Success is measured by delivery metrics, not by the number of tools installed.
- Where possible, portable and open tools are preferred.
| Starting point | Target state |
|---|---|
| Manual release steps | A repeatable automated pipeline that runs on every change |
| Infrastructure changes made from the console | Versioned and reviewed infrastructure code |
| Different pipelines from team to team | Shared templates and a recommended path |
| Environments created on request | Self-service environments with predefined rules |
| Scattered logs and alerts | Monitoring in one place and meaningful alerts |
| Operational knowledge held by individuals | Runbooks and documented procedures |
What do we do in DevOps and platform engineering?
A single area or end to end, depending on your needs.
Kubernetes platform
Installation, version upgrades, multi-cluster management and capacity planning on EKS, AKS, GKE, OpenShift, Rancher or in your own data center.
CI/CD pipelines
Pipelines that automate build, test, security scanning and deployment, built on shared templates and repeatable across teams.
Infrastructure as code (IaC) and GitOps
Terraform/OpenTofu for infrastructure, Ansible for server configuration, Argo CD or Flux for deployments; every change tracked in Git.
Observability
Dashboards that bring metrics, logs and traces together in one place; meaningful alerts and service level objectives (SLOs).
Internal developer platform
A self-service setup in which teams create their own environments, services and pipelines within defined rules.
Containerization
Containerizing applications and moving them to Kubernetes, planned together with the infrastructure and code sides.
What is platform engineering, and when do you need it?
Platform engineering means building a self-service internal platform shared by teams, so that DevOps practices remain sustainable as the number of teams grows. Instead of rebuilding infrastructure, teams use the platform's ready-made, approved paths.
Golden path
A ready-made, approved path for a new service: template, pipeline, monitoring and security checks are included from the start.
Self-service
Teams create environments, databases or pipelines themselves, within defined limits, without opening a ticket.
Rules in the platform
Security, cost and compliance rules are built into the platform, so each team does not have to apply them separately.
When do you need it?
When several teams handle similar infrastructure work separately, a platform is needed; for a single team, good CI/CD is often enough.
Pilot first, then roll out.
We introduce changes in stages. The output and success criteria of each stage are defined at the start, and you track progress against the same criteria.
What do we measure?
The five metrics the DORA research program uses for software delivery performance. We choose together which ones to track, based on the data you have:
- Deployment frequency
- Change lead time
- Change fail rate
- Failed deployment recovery time
- Deployment rework rate
Discovery and analysis
We review your current architecture, release process, team structure and risks.
Output: Findings and goalsTarget architecture and roadmap
We select tools and platforms with documented reasoning and prioritize the work.
Output: Architecture document, phased planPilot
We build end to end with one application and one team, then measure and improve.
Output: Working pilot and first measurementsRollout
We extend the setup validated in the pilot to other services and teams.
Output: Pipelines and environmentsHandover and operations
We train your team and hand over the runbooks; if you prefer, we keep operating it with you as a managed service.
Output: Documentation, trained teamWhat you have at the end of a DevOps engagement.
Deliverables depend on the scope of work; they are documented, usable by your team and handed over in your own tools.
Architecture documentation
Target architecture, decision records and their rationale.
Infrastructure code
Terraform and Ansible code, modules and a usage guide.
CI/CD definitions
Pipelines, templates and deployment strategies.
Monitoring dashboards and alerts
Ready-to-use dashboards, alert rules and SLO definitions.
Runbooks
Incident response, backup, rollback and upgrade procedures.
Training and knowledge transfer
Hands-on sessions for your team, with recordings.
We work with your existing investment.
We first assess the tools you already have and recommend a change only when there is a clear benefit.
Containers and orchestration
- Kubernetes
- OpenShift
- Rancher
- Amazon EKS
- Azure AKS
- Google GKE
- Docker
- Helm
CI/CD and GitOps
- GitLab CI
- GitHub Actions
- Jenkins
- Azure DevOps
- Argo CD
- Flux
Infrastructure as code (IaC)
- Terraform
- OpenTofu
- Ansible
- Packer
Platform engineering
- Backstage
- Crossplane
- HashiCorp Vault
Observability
- Prometheus
- Grafana
- Loki
- OpenTelemetry
- Elastic / OpenSearch
Cloud and virtualization
- AWS
- Microsoft Azure
- Google Cloud
- Local cloud providers
- VMware
- Proxmox
Where do you start, given your team's size?
SMEs and small teams
Work usually starts with a CI/CD pipeline for a single application, basic monitoring and backups; the aim is a simple setup that is easy to operate.
Growing software teams
As the number of teams grows, making the release process scalable with shared templates, Kubernetes and self-service environments.
Enterprise IT teams
Specialist support in a specific area alongside your existing team; designs that take modernization and regulatory requirements into account.
Making the first meeting productive.
None of these is a prerequisite; whatever you have makes the first conversation more concrete.
What you can prepare, if available
- Existing architecture diagrams and a list of environments
- A short description of your release process and examples of recent outages
- Team structure: who is responsible for what
- Regulatory or customer-driven requirements
About DevOps consulting
References and standards
- DORA metrics guide (opens in a new tab)Software delivery performance metrics
- Kubernetes documentation (opens in a new tab)Official project documentation
- OpenTofu documentation (opens in a new tab)Open-source infrastructure as code tool
- Argo CD documentation (opens in a new tab)Continuous delivery with GitOps
- Google SRE: Service level objectives (opens in a new tab)The SLO concept
Let's clarify your needs together.
In a free initial consultation we discuss your current situation and goals, and share our first impressions and possible next steps in the same meeting.
- A technical conversation with specialists in your area
- First impressions of your situation and possible approaches
- Where it fits, a next step: an assessment, a project proposal or consulting
- A non-disclosure agreement before the meeting when needed
- A reply within 4 business hours
DevOps examples from practice
Illustrative scenarios showing, step by step, how setups we often build actually work.
CI/CD pipeline from code to production
A change moves automatically and under control from merge request to production. Every step has a pass criterion; if it is not met, the pipeline stops.
Merge request
The change arrives on a separate branch; the pipeline starts automatically when a merge request is opened.
- $ git push origin feature/payment-limit
- Merge request !214 opened
- Pipeline #4821 started
Build and test
The application is built as a container image; unit and integration tests run.
- $ docker build -t registry.example.local/payments-api:1.9.0 .
- => naming to registry.example.local/payments-api:1.9.0
- $ pytest -q
- ✓ 214 passed in 38.2s
Security scan
The image is scanned for known vulnerabilities; the pipeline stops on any high or critical finding.
- $ trivy image --severity HIGH,CRITICAL --exit-code 1 payments-api:1.9.0
- Total: 0 (HIGH: 0, CRITICAL: 0)
- ✓ quality gate passed
Deployment to staging
The new version tag is written to the configuration repository; Argo CD syncs the staging environment to that definition.
- $ argocd app sync payments-api-staging
- Sync Status: Synced
- ✓ Health Status: Healthy
Progressive production rollout
After approval, the new version first receives a small share of traffic; if metrics stay on target, the share is increased.
- $ kubectl argo rollouts get rollout payments-api
- Step: 1/3 SetWeight: 10
- $ kubectl argo rollouts promote payments-api
- ✓ SetWeight: 100 Status: Healthy
Monitoring
Error rate and response time are tracked on dashboards; if a threshold is crossed, an alert fires and the previous version can be restored.
- PromQL: error rate (5 min)
- → 0.0021 (threshold 0.01)
- ✓ within service level objective
- GitLab CI
- Docker
- Trivy
- Argo CD
- Argo Rollouts
- Prometheus
Environment setup with Terraform and Ansible
A new environment is defined in code, reviewed and then built. Terraform manages the infrastructure resources; Ansible manages the configuration inside the servers.
Definition
The network, virtual machines and load balancer are defined with Terraform modules; differences between environments are kept in variable files.
- $ terraform fmt -check && terraform validate
- ✓ Success! The configuration is valid.
Plan
The pipeline produces the intended change as a plan and attaches it to the merge request.
- $ terraform plan -out=tfplan
- Plan: 12 to add, 0 to change, 0 to destroy.
Review
A team member reviews and approves the plan; the approval stays on record.
- Merge request !87 · 1 approval
- ✓ review completed
Apply
The approved plan is applied exactly as reviewed; the state file is kept locked in remote storage.
- $ terraform apply tfplan
- ✓ Apply complete! Resources: 12 added, 0 changed, 0 destroyed.
Server configuration
Operating system settings, packages and services are set up the same way on every server with Ansible.
- $ ansible-playbook -i inventories/prod site.yml
- web-01 : ok=38 changed=6 unreachable=0 failed=0
- web-02 : ok=38 changed=6 unreachable=0 failed=0
Drift check
A scheduled job regularly compares the environment with the code to catch manual changes.
- $ terraform plan -detailed-exitcode
- ✓ No changes. Your infrastructure matches the configuration.
- Terraform / OpenTofu
- Ansible
- GitLab CI
Kubernetes deployment with GitOps
How the application runs in the cluster is defined in Git; Argo CD syncs the cluster to that definition. Rolling back means reverting the change in Git.
Desired state in Git
The version, replica count and settings are defined in the configuration repository.
- # values-prod.yaml
- image.tag: 1.9.0
- replicaCount: 3
Drift detection
Argo CD continuously compares the cluster state with the definition in the repository and shows the difference.
- $ argocd app get payments-api-prod
- ! Sync Status: OutOfSync from main (a41c9e2)
Sync
The approved change is applied to the cluster; Kubernetes replaces the old replicas with new ones in turn.
- $ argocd app sync payments-api-prod
- deployment.apps/payments-api configured
- ✓ Synced · Healthy
Rollback
If a problem appears, the change is reverted in Git and the previous definition is applied again. Data is not affected; it has its own backup plan.
- $ git revert a41c9e2 && git push
- ✓ Synced to main (7be2d10)
Audit trail
Every change stays in the Git history with who made it, when and why.
- $ git log --oneline -2
- 7be2d10 Revert "payments-api 1.9.0"
- a41c9e2 payments-api 1.9.0
- Argo CD
- Helm
- Kubernetes
- Git
Monitoring, service level objectives and alerting
Alerts are based on the service quality users experience, not on server metrics. The on-call engineer is notified only when action is genuinely needed.
Data collection
Application metrics, logs and request traces are collected in a standard format with OpenTelemetry.
- $ kubectl get pods -n observability
- otel-collector-6d9f 1/1 Running
- prometheus-0 2/2 Running
Service level objective
A target is set for the success rate users see; for example, 99.9% successful requests over 30 days.
- SLO: successful requests ≥ 99.9% / 30 days
- error budget: 43 min 12 s
Alert
If the error budget starts burning quickly, the on-call engineer is notified; brief fluctuations do not trigger alerts.
- ! ALERT ErrorBudgetBurn severity=page
- burn rate 14.4x (1 h) · 14.4x (5 min)
- → on-call engineer notified
Diagnosis
Dashboards, logs and request traces are opened for the same time window, and the runbook steps are followed.
- {app="payments-api"} |= "timeout"
- 12:04:31 upstream timeout: bank-service 3000ms
Post-incident review
The root cause and lasting improvements are shared in writing; alerts and dashboards are updated where needed.
- Incident #23 · duration 18 min
- ✓ action: timeout and retry settings updated
- OpenTelemetry
- Prometheus
- Alertmanager
- Grafana
- Loki