Przejdź do treści głównej

Cloud Solutions and Cloud Migration

Author:Michał Wojciechowski
16 min read

Scalable production infrastructure in Azure, AWS, Google Cloud Platform, and Hetzner Cloud. Kubernetes, DevOps, and Infrastructure as Code for modern applications.

AzureAWSHetznerKubernetesDevOpsTerraform
Modern data center with cloud servers

Photo: Brett Sayles / Pexels

Cloud migration is not just a technology trend – it's a strategic business decision that can transform how your company operates. In 2025, with 94% of enterprises using cloud services, the question is not "if" but "how" to migrate, to maximize benefits and minimize risk.

Over the years, we've helped dozens of companies transform their IT infrastructure. From startups building MVPs in the cloud, through medium enterprises migrating legacy systems, to corporations implementing multi-cloud architecture. In this article, we share practical knowledge from these projects.

Benefits of Cloud Migration

Cloud migration is an investment that pays off many times over. Here are the most important benefits confirmed by my clients:

💰 Cost Reduction (30-60%)

Elimination of data center maintenance costs, energy, cooling, and IT personnel. Pay-as-you-go model means paying only for used resources.

Case study: E-commerce company saved 45% of infrastructure costs by migrating from own servers to Azure, eliminating the costs of maintaining 3 server rooms.

📈 Automatic Scaling

Kubernetes auto-scaling responds to load in real-time. Application automatically increases resources during promotions and reduces them at night.

Example: Online store handled 10x higher traffic during Black Friday without manual intervention – auto-scaling launched additional instances in 2 minutes.

🔒 Enterprise-Grade Security

Azure, AWS, and GCP invest billions in security: SOC 2, ISO 27001 certificates, encryption at rest/in transit, automatic patches, DDoS protection.

  • Automatic backups every 15 minutes
  • Multi-factor authentication (MFA)
  • Zero-trust network architecture
  • Compliance: GDPR, HIPAA, PCI DSS

⚡ High Availability (99.95% SLA)

Multi-region deployment with automatic failover. If one data center stops working, traffic is redirected to the backup in milliseconds.

Real case: Banking system with 99.98% uptime over 2 years. Even during the failure of an entire Azure region, the application worked without interruption.

ROI from Cloud Migration

Typical return on investment (ROI) after cloud migration - time to achieve depends on project scale:

  • Break-even point: Most projects pay for themselves in the first year of use
  • Short-term: 30-45% reduction in IT costs through elimination of physical infrastructure
  • Medium-term: Additional savings through optimization (reserved instances, spot instances)
  • Long-term: 40-60% faster time-to-market for new features

Azure vs AWS vs GCP – Which to Choose?

Server infrastructure in professional data center

Photo: Panumas Nikhomkhai / Pexels

This is the most common question from my clients. The answer depends on many factors – tech stack, budget, business strategy, team competencies. Here's a practical comparison - more details in theAzure vs AWS vs GCP article.

FeatureAzureAWSGCP
Ideal forEnterprise + Microsoft stackStartups, largest ecosystemData science, ML/AI projects
KubernetesAKS - excellent integrationEKS - most popularGKE - best-in-class
PricingAverage, hybrid licensingMost expensive (without optimization)Cheapest, sustained use discounts
DevOpsAzure DevOps, GitHub ActionsCodePipeline, wide choiceCloud Build, GitOps native
ServerlessAzure FunctionsLambda (market leader)Cloud Functions, Cloud Run
ComplianceExcellent (EU data residency)Very good, largestGood, strong in privacy

🎯 Our recommendation for European companies:

Azure is the best option for most European enterprises for several reasons:

  • Data centers in Europe (multiple regions) – GDPR compliance, low latency
  • Integration with Microsoft 365, Active Directory, Teams – most companies already use these
  • Azure Hybrid Benefit – use existing Windows/SQL Server licenses (40% savings)
  • Strong support for .NET, C#, TypeScript – popular stack in Europe
  • Local documentation and technical support in multiple European languages

🚀 When to choose AWS?

  • Startup with dynamic growth – largest startup ecosystem
  • You need the most exotic services (AWS has 200+ services)
  • Global expansion – most regions worldwide (32 regions)
  • Team with AWS experience (easiest to find specialists)

🤖 When to choose GCP?

  • AI/ML project – TensorFlow, AutoML, Vertex AI (best-in-class)
  • Kubernetes-native architecture – GKE is the best managed Kubernetes
  • Big Data, analytics – BigQuery is unmatched in performance
  • Budget critical – sustained use discounts automatically (up to 30% savings)

Hetzner Cloud - European Alternative with Best Price-Performance Ratio

Hetzner Cloud is a German cloud provider often overlooked in cloud computing discussions. That's a mistake – for European companies, especially startups and SMBs, Hetzner offers an unbeatable value proposition. It won't replace AWS for global corporations, but in its segment, it's unmatched.

About Hetzner Cloud

Hetzner Online GmbH is a German company founded in 1997, with over 25 years of experience in hosting and cloud infrastructure. Data centers in Germany (Falkenstein, Nuremberg) and Finland (Helsinki) with ISO 27001 certifications and 100% renewable energy.

Key Services

  • Cloud Servers (VMs) with NVMe SSD
  • Managed Kubernetes (cloud deployment)
  • Load Balancers with SSL termination
  • Volumes (Block Storage) - scalable disks
  • Floating IPs - portable IP addresses
  • Firewalls - network security rules
  • Private Networks - network isolation

Best For

  • European startups and SMBs
  • GDPR-compliant projects
  • Cost-sensitive projects
  • Dev/staging/test environments
  • Simple infrastructure (VMs + K8s)

Price Comparison: Hetzner vs AWS vs Azure

TypeSpecHetznerAWSAzure
VM Standard4 vCPU, 8GB RAM, 160GB NVMe€13.40/mo~€60/mo (t3.large)~€55/mo (B4ms)
Managed KubernetesControl plane + 3 nodes~€36/mo~$200/mo (EKS)~€150/mo (AKS)
Block Storage1TB SSD€40/mo~€80/mo (EBS gp3)~€75/mo
Load BalancerBasic LB€5.39/mo~€18/mo (ALB)~€22/mo
Real case: Startup with SaaS app (Kubernetes + PostgreSQL + Redis) pays €120/mo on Hetzner. Same setup on AWS would cost €450-550/mo. Savings: 75%.

✅ When Hetzner Makes Sense

  • Europe-only traffic: Your users are in EU – data centers in DE/FI provide low latency
  • GDPR compliance: German data centers, EU-based company, data residency guaranteed
  • Budget critical: Startup/SMB where every €100/mo matters – 3-5x savings
  • Simple architecture: You need VMs + Kubernetes + storage – no exotic services
  • Dev/test environments: Perfect for non-production – staging for €20/mo
  • Performance matters: NVMe SSD, dedicated vCPU, no "noisy neighbors"

⚠️ Hetzner Cloud Limitations

  • No global presence: Only EU data centers (DE, FI) – no US, Asia, Australia
  • Smaller service catalog: ~15 services vs AWS 200+ – no managed databases, queues, ML services
  • Enterprise support: Less premium than AWS/Azure – no 24/7 phone support baseline
  • Not for multi-region: If you need 5+ regions worldwide, AWS/Azure are better
  • Smaller community: Fewer tutorials, fewer third-party integrations vs hyperscalers
  • Compliance gaps: No HIPAA, FedRAMP certifications (has ISO 27001, GDPR compliant)

Our Experience with Hetzner Cloud

We use Hetzner Cloud for 30% of our projects – mainly European startups, staging environments, and budget-critical projects. Some observations from production:

Performance is legit: NVMe SSD delivers 3-5x faster I/O vs AWS gp2. Network 20 Gbit/s even on small instances.
Reliability solid: 99.9% uptime in my projects (18 months). One outage (2h downtime) in 2024 – transparent communication.
Kubernetes works well: Managed K8s is simple – no hidden costs, easy integration with Helm/GitOps, auto-upgrades.
Support is slower: Ticket response 4-8h (vs AWS 1h premium support). But response quality is good, often engineers with deep knowledge.
No managed databases: You must host PostgreSQL/MySQL/Redis yourself in K8s or VM – no RDS/Cloud SQL equivalent. More work, but more control.

Open Source Ecosystem for Kubernetes

One of Hetzner Cloud's greatest advantages is its active open source tooling ecosystem, which makes managing Kubernetes on Hetzner as easy as on AWS/Azure/GCP. The community around Hetzner is growing dynamically, delivering production-ready solutions.

hcloud-cloud-controller-manager

Official

Official controller integrating Kubernetes with Hetzner Cloud API (Load Balancers, Networks).

GitHub →

hcloud-csi-driver

Official

CSI driver enabling dynamic persistent volume provisioning in Kubernetes.

GitHub →

hetzner-k3s

Community

Community tool for automated k3s cluster deployment on Hetzner Cloud.

GitHub →

terraform-provider-hcloud

Official

Official Terraform provider for managing Hetzner Cloud infrastructure as code.

GitHub →

hetzner-kube

Community

CLI tool for easy Kubernetes cluster management on Hetzner Cloud.

GitHub →

Practical takeaway: These tools make Hetzner Cloud as easy to manage as managed Kubernetes from AWS/Azure/GCP. A single hetzner-k3s command or terraform apply creates a production-ready Kubernetes cluster in minutes. The community is active and solves problems quickly.

Our Recommendation: Hetzner vs Hyperscalers

Hetzner Cloud won't replace AWS for global enterprises, but for European businesses, it offers unbeatable value.

Use Hetzner if:

  • Your application runs ONLY in Europe (100% traffic from EU)
  • You need simple infrastructure: VMs, Kubernetes, storage, networking
  • Budget matters – save 70-80% vs AWS/Azure
  • GDPR compliance is a priority (German data centers FTW)
  • Team has DevOps competencies – Hetzner requires more self-management

Stick with AWS/Azure/GCP if:

  • You need multi-region deployment (US + EU + Asia)
  • You use exotic services (ML, IoT, Big Data managed services)
  • Enterprise compliance (HIPAA, FedRAMP, SOC 2 Type II)
  • No DevOps team – you need more managed services
  • 24/7 premium support is must-have

In practice, many of my clients use hybrid: Production on Azure (Microsoft stack, enterprise support), staging/dev on Hetzner (80% cheaper, identical Kubernetes configuration). Best of both worlds.

More information:

Kubernetes and Container Orchestration

Network cables in data center - cloud infrastructure

Photo: Pixabay / Pexels

Kubernetes is the de facto standard for container orchestration. We use it in 90% of cloud projects – from small APIs to complex microservice systems handling millions of requests. Detailed guide available in the Azure AKS in Production article.

Why Kubernetes?

Auto-scaling

Horizontal Pod Autoscaler (HPA) and Vertical Pod Autoscaler (VPA) automatically scale applications based on CPU, RAM, custom metrics (e.g., queue length).

Self-healing

Automatic restarts of crashing containers, pod replicas, health checks (liveness/readiness probes), automatic rollback on failed deployment.

Zero-downtime deployment

Rolling updates, blue/green deployment, canary releases. Deploy new versions without service interruption – even under full load.

Multi-cloud portability

The same Kubernetes manifest works on Azure AKS, AWS EKS, GCP GKE, on-premise. Avoid vendor lock-in and migrate between clouds.

Production Example: E-commerce on Kubernetes

System for online store processing 50,000 orders/day:

Architecture: 12 microservices (products, cart, checkout, payments, inventory, notifications)
Auto-scaling: 3-50 replicas per service depending on load
Database: PostgreSQL (Azure Database) + Redis cache + RabbitMQ
CI/CD: GitHub Actions → Docker build → push to ACR → Helm deploy to AKS
Monitoring: Prometheus + Grafana + Azure Monitor + Application Insights
Result: 99.96% uptime, deployment 15x/day, 60% cost reduction vs VMs

⚠️ Kubernetes is not for everyone

Kubernetes has a steep learning curve. Consider simpler options if:

  • You have a simple monolithic application – Azure App Service / AWS Elastic Beanstalk is enough
  • Team has no experience with containers – start with Docker + managed services
  • MVP/proof-of-concept – use serverless (Azure Functions, AWS Lambda)
  • Limited budget – managed Kubernetes (AKS/EKS) costs $70-150/month baseline

Infrastructure as Code (IaC)

Manually clicking in Azure Portal or AWS Console is a recipe for disaster. Infrastructure as Code (IaC) is the foundation of modern DevOps – entire infrastructure defined in code, versioned in Git, automatically deployed.

Terraform (my choice #1)

Multi-cloud IaC tool. One language (HCL) to manage Azure, AWS, GCP, Cloudflare, GitHub, Kubernetes, and 3000+ providers.

Declarative syntax – describe WHAT you want, not HOW to do it
State management – Terraform knows what already exists
Plan/Apply workflow – preview changes before execution
Modules & reusability – DRY principle in infrastructure

Alternatives

Azure Bicep

Native Azure IaC, simpler than ARM templates. Good if 100% Azure.

AWS CloudFormation

Native AWS IaC, YAML/JSON. Good for AWS-only projects.

Pulumi

IaC in TypeScript/Python/Go. Great for dev teams without DevOps experience.

Ansible

Configuration management, better for VM provisioning than cloud resources.

Benefits of Infrastructure as Code

🔁 Reproducibility

Identical dev/staging/production environments. One terraform apply creates entire stack.

📝 Version control

Infrastructure in Git. Full history of changes, code review, rollback to previous version.

🚀 Automation

CI/CD for infrastructure. GitHub Actions/Azure DevOps automatically deploys changes.

📚 Documentation

Code is documentation. No need to guess how infrastructure works – read .tf files.

🔒 Security & compliance

Policy-as-code (OPA, Sentinel). Automatic validation of security rules before deploy.

💰 Cost optimization

Terraform cost estimation before changes. Infracost shows difference in $$$.

Example: Production System Migration to Azure

Case Study: B2B SaaS Platform – 15,000 users

Business Challenge

Software company with ERP system running on-premise (2 physical servers in office). Problems: frequent failures, no scaling, high maintenance costs (IT admin + energy + UPS), no disaster recovery, 2-3 hours downtime monthly.

State BEFORE migration

Uptime:97.5%
Monthly costs:€3,200
Deployment time:4-6 hours
Disaster recovery:None
Scaling:Manual (days)
Backup:1x/day, local

State AFTER migration

Uptime:99.95%
Monthly costs:€1,850
Deployment time:8 minutes
Disaster recovery:Auto-failover
Scaling:Auto (seconds)
Backup:15 min, geo-redundant

Azure Architecture

Compute: Azure Kubernetes Service (AKS) – 3 node pools, auto-scaling 2-12 nodes
Database: Azure Database for PostgreSQL (Flexible Server, HA enabled)
Cache: Azure Cache for Redis (Premium tier, geo-replication)
Storage: Azure Blob Storage (hot/cool tiers) + Azure Files (SMB shares)
CDN: Azure Front Door + Cloudflare (static assets, images)
CI/CD: GitHub Actions → Azure Container Registry → Helm → AKS
Monitoring: Azure Monitor + Application Insights + Grafana dashboards
Security: Azure Key Vault, Azure AD, Private Endpoints, NSG, WAF

Migration process - key stages

  1. Assessment & Planning: Application analysis, dependencies, data volume and business requirements
  2. Infrastructure setup: Terraform scripts, AKS cluster, databases, networking configuration
  3. Containerization: Dockerfiles, Kubernetes manifests, Helm charts for entire stack
  4. Data migration: PostgreSQL dump/restore, blob storage sync, comprehensive tests
  5. Parallel run: Dual running (on-premise + Azure), real-time data synchronization
  6. Cutover: DNS switch, final data sync, monitoring, ready rollback plan

Duration depends on system complexity and available resources. This particular project took about 6 weeks.

Results after 12 months

42%
IT cost reduction
99.95%
Uptime (SLA achieved)
45x
Faster deployment
Zero
Unplanned downtime
3 sec
Avg response time (vs 800ms)
8 min
Deploy time (vs 4-6h)

Key Takeaways from Migration

  • 1.
    Assessment is critical: Spend 20% of time on analysis before starting. Find dependencies, hidden integrations, legacy components.
  • 2.
    Parallel run saves lives: Never do "big bang" cutover. Dual running for 1-2 weeks catches 90% of problems before final switch.
  • 3.
    Rollback plan is mandatory: Always have plan B. In this project rollback was ready (DNS revert + database failback) – fortunately not needed.
  • 4.
    Training matters: 2 days of training for IT team on Kubernetes, Azure, monitoring. Without this they would be helpless after deployment.
  • 5.
    Cost optimization post-migration: First month was more expensive (dual running). Then optimization: reserved instances, spot nodes, storage tiers – 42% savings.

Cloud Migration Best Practices

1. Start small, scale gradually (Strangler Pattern)

Don't migrate the entire monolith at once. Start with a single service, learn, optimize, then next. Strangler Fig Pattern – new functionality in cloud, old on-premise, gradually turn off legacy.

Example: Company migrating CRM started with reporting module (low risk, few dependencies). Success → sales module migration → integrations → backoffice. Total 9 months instead of risky "big bang".

2. Security & Compliance from Day 1

Don't "fix security later". GDPR, ISO 27001, SOC 2 requirements from the start:

  • Encryption at rest (Azure Key Vault, AWS KMS)
  • Encryption in transit (TLS 1.3, certificates)
  • Network isolation (Private Endpoints, VNet peering, zero trust)
  • Identity & Access Management (Azure AD, MFA, RBAC, least privilege)
  • Audit logging (Azure Monitor, CloudTrail, immutable logs)
  • Data residency (EU regions for GDPR compliance)

3. FinOps: Cost optimization continuous practice

Cloud is pay-as-you-go, but without control costs explode. FinOps practices - more in theAzure cost optimization article:

  • Reserved Instances: 1-3 year commitment = 40-60% discount (predictable workloads)
  • Spot/Preemptible VMs: 70-90% cheaper (dev/test, batch jobs, stateless workloads)
  • Auto-shutdown: Dev/test turned off evenings/weekend = 50% savings
  • Right-sizing: Azure Advisor shows over-provisioned resources
  • Storage tiers: Hot/Cool/Archive for different access patterns
  • Monitoring alerts: Alert when budget exceeded (Azure Cost Management)

4. Disaster Recovery & Business Continuity

Define Recovery Time Objective (RTO) and Recovery Point Objective (RPO):

TierRTORPOStrategy
Critical< 1 hour< 15 minMulti-region active-active, auto-failover
Important< 4 hours< 1 hourMulti-region active-passive, manual failover
Standard< 24 hours< 24 hoursBackup & restore, geo-redundant storage

5. Observability: Monitoring, Logging, Tracing

"If you can't measure it, you can't improve it." Full observability stack:

  • Metrics: Prometheus + Grafana (CPU, RAM, disk, network, custom business metrics)
  • Logs: ELK Stack / Azure Log Analytics (centralized logging, full-text search)
  • Tracing: Jaeger / Application Insights (distributed tracing microservices)
  • Alerting: PagerDuty / Opsgenie (on-call, escalation policies)
  • Dashboards: Real-time business metrics (orders/min, revenue, errors)

Ready for Cloud Migration?

I'll help you conduct a safe and effective cloud transformation. From assessment and strategy, through implementation, to long-term support and optimization.

What We Offer

  • ✓ Cloud Readiness Assessment – application and infrastructure analysis
  • ✓ Migration Strategy – platform selection (Azure/AWS/GCP) and architecture
  • ✓ Infrastructure as Code – Terraform, full stack automation
  • ✓ Kubernetes deployment – containerization, orchestration, auto-scaling
  • ✓ CI/CD pipelines – GitHub Actions, Azure DevOps, GitOps
  • ✓ Security & Compliance – GDPR, ISO 27001, zero trust architecture
  • ✓ Cost optimization – FinOps, reserved instances, monitoring
  • ✓ Training & knowledge transfer – documentation, workshops for teams

Why Me?

  • 🏆 10+ years of experience in cloud architecture
  • ☁️ 50+ successful migrations to Azure, AWS, GCP
  • 🎯 Specialization: Kubernetes, microservices, high availability
  • 💰 Average IT cost reduction: 35-50% post-migration
  • 📈 99.9%+ uptime in production projects
  • 🚀 Agile approach – MVP in 4-6 weeks
  • 📞 Long-term support – I don't leave clients after deployment

📧 Email: hello@wojciechowski.app · Response within 24h

Related Articles

References

  1. [1] Microsoft Azure - Official Documentation -https://learn.microsoft.com/en-us/azure/
  2. [2] Microsoft Learn - Azure Training Center -https://learn.microsoft.com/en-us/training/azure/
  3. [3] Kubernetes - Official Documentation -https://kubernetes.io/docs/
  4. [4] CNCF Annual Survey 2023 - State of Kubernetes Adoption -https://www.cncf.io/reports/cncf-annual-survey-2023/
  5. [5] .NET - Official Microsoft Documentation -https://learn.microsoft.com/en-us/dotnet/
  6. [6] .NET Blog - Latest updates and best practices -https://devblogs.microsoft.com/dotnet/
  7. [7] MDN Web Docs - JavaScript Documentation -https://developer.mozilla.org/en-US/docs/Web/JavaScript
  8. [8] Stack Overflow Developer Survey 2024 -https://survey.stackoverflow.co/2024/
  9. [9] Flexera State of the Cloud Report 2024 -https://www.flexera.com/blog/cloud/cloud-computing-trends-2024-state-of-the-cloud-report/
  10. [10] FinOps Foundation - Best Practices -https://www.finops.org/
  11. [11] Gartner - Cloud Computing Research -https://www.gartner.com/en/information-technology/insights/cloud-computing
  12. [12] AWS - Official Documentation -https://docs.aws.amazon.com/
  13. [13] Google Cloud - Official Documentation -https://cloud.google.com/docs

© 2025 Michał Wojciechowski · wojciechowski.app

Cloud Solutions and Cloud Migration | Wojciechowski.app | Wojciechowski.app