Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DevOpsPro Europe 2023

DevOpsPro Europe 2023

A classic legacy desktop application is usually not designed to operate in the cloud, not even as a container. Nevertheless, cloud adoption can't be refused and the need for scaling resources on demand - is to be opened up for new business areas. So the decision was made to take the plunge with a MS Windows-based monolith - whose development began more than two decades ago - and to conduct the cloud migration. The start of the changeover raised more questions than answers.

• Which technology services are included in the technology stack?
• What are the long-term plans?
• Who is the main driver regarding the efforts toward cloud migration and scalability?
• What about the obstacles?

Patrick Koch

January 02, 2024
Tweet

More Decks by Patrick Koch

Other Decks in Technology

Transcript

  1. Patrick Koch AVL List GmbH (Headquarters) Public Don't give up

    just because it's legacy Migration of a containerized Legacy Application to the Cloud
  2. Patrick Koch | | 23 May 2023 | / 3

    Public Who am I? @PK_Koch patkoch87 patrickkoch.dev Graz (Austria) DevOps Engineer Patrick Koch Icon sources: icons8.de
  3. Patrick Koch | | 23 May 2023 | / 4

    Public Today’s Agenda 4 3 2 Introduction 1 Once upon a time ... and it‘s still What happened before the cloud? Why the hell Windows containers? 1st Challenge – Let’s do a PoC Linux containers, finally! Next logical step What’s next? We are still at the beginning ... Conclusion & Outlook 5
  4. Patrick Koch | | 23 May 2023 | / 6

    Public Evolved to platform product Container, K8s Automation Framework Web components Started > 25 years ago Python support REST interface 2014 New Generation (unmanaged legacy (C++) and managed (C#) code). Windows® application (component & full integration in internal products) 2018 ~ 8200 files ~ 2,9 Mio LOC Linux components (data, Python) 2022 ... “A legacy system is outdated computing software and/or hardware that is still in use. ” ~ 800 customers ~ 23000 users The application to migrate in the cloud: AVL CONCERTO
  5. Patrick Koch | | 23 May 2023 | / 7

    Public The „traditional“ use case 2021 .. 2021 .. Data
  6. Patrick Koch | | 23 May 2023 | / 9

    Public An evolution happens – why even more automation, and more data? 2021 .. Huge testbed for single unit under test (UUT) 1 Operator per testbed Very high costs Exchanging of unit is labour-intesive One testing unit for multiple UUTs (Battery Cells) 1 Operator for whole lab Costs per UUT are much lower UUT exchange works automated 2021 ..
  7. Patrick Koch | | 23 May 2023 | / 10

    Public Short-term approach for migrating to the cloud Run your legacy SW as a Windows container on a hybrid cloud platform! Lift & Shift (Rehost) Whole application is taken and pushed into container not possible / would cause to much costs Refactoring Rebuild
  8. Patrick Koch | | 23 May 2023 | / 11

    Public The mixed cloud architecture - an example What is already supported? Managed Cloud Service On Premise Public Cloud Data Server CONCERTO Message Broker VPN Report
  9. Patrick Koch | | 23 May 2023 | / 12

    Public Azure K8s Service – Deployment of a Kubernetes Workload Source: https://docs.microsoft.com/de-de/azure/architecture/solution-ideas/articles/migrate-existing-applications-with-aks “Easily migrate existing application to container(s) and run within the Azure managed Kubernetes service (AKS)”
  10. Patrick Koch | | 23 May 2023 | / 13

    Public The goal of the first implementation Azure Container Registry Azure Kubernetes Service Azure Virtual Machine Azure File Share Container 1 2 3 4
  11. Patrick Koch | | 23 May 2023 | / 14

    Public Data Processing using an automated way in Azure
  12. Patrick Koch | | 23 May 2023 | / 15

    Public Data Processing using an automated way in Azure
  13. Patrick Koch | | 23 May 2023 | / 16

    Public Data Processing using an automated way in Azure
  14. Patrick Koch | | 23 May 2023 | / 17

    Public Data Processing using an automated way in Azure
  15. Patrick Koch | | 23 May 2023 | / 18

    Public Data Processing using an automated way in Azure
  16. Patrick Koch | | 23 May 2023 | / 19

    Public Automated Resource Provisioning in Azure with ADO Pipelines and Terraform Terraform Configurations Azure Azure DevOps Pipeline
  17. Patrick Koch | | 23 May 2023 | / 20

    Public Automated Resource Provisioning in Azure with ADO Pipelines and Terraform Terraform Configurations
  18. Patrick Koch | | 23 May 2023 | / 22

    Public mid-term approach for migrating to the cloud & automation Refactor core parts of your monolith and run them as Linux container Lift & Shift (Rehost) Whole application is taken and pushed into container Next logical step Refactoring Rebuild
  19. Patrick Koch | | 23 May 2023 | / 23

    Public Determine the core components selected for refactoring Native Data management subsytem COM .Net Managed subsytem Native application Managed GUI Native GUI COM REST Python Python pybind Python Python Python Python Native Data management subsytem Windows Linux
  20. Patrick Koch | | 23 May 2023 | / 24

    Public Future Use Case: Architecture Logo/Picture Sources: Prefect: https://www.prefect.io/ | ACR & AKS Icon: https://learn.microsoft.com/en-us/azure/architecture/icons/ | Python: https://icons8.de/icons/set/python| Azure: https://icons8.de/icons/set/azure-devops Prefect Flow Python Script AKS Prefect ACR Report
  21. Patrick Koch | | 23 May 2023 | / 25

    Public Outlook / Roadmap 2019 • Containerization • Concerto runs within a (Windows) Container 2020 • Deployment and Hosting at Rancher • CI/CD Pipeline Integration for Container at Azure DevOps 2021 • Proof of Concept at Microsoft‘s Kubernetes Service within Azure Cloud with Windows and Linux Container Workloads 2022 • First development of Linux container • Python Integration • Prefect as Workflow Automation •Established IaC 2023 – 202? • Become a Data Analytics Platform based on Python and Linux • SaaS • Less focus on Windows desktop
  22. Patrick Koch | | 23 May 2023 | / 26

    Public Conclusion Decide for a Cloud Migration Strategy Avoid to start with a too complex implementation – start lightweight Don‘t do manual provisioning – use Infrastructure as Code approach Be aware of the costs, monitor them
  23. Patrick Koch | | 23 May 2023 | / 28

    Public Picture Sources https://icons8.de/icons/set/job https://icons8.de/icons/set/home-town https://icons8.de/icons/set/contact https://icons8.de/icons/set/twitter https://icons8.de/icons/set/linkedin https://icons8.de/icons/set/blog https://www.genardmethod.com/blog/ your-speechs-introduction-how-to- make-it-powerful https://devopspro.lt/ https://www.avl.com Slide 1 Slide 2 Slide 3 https://pixabay.com/photos/car- citroen-france-vintage-vehicle- 2184905/ Slide 5
  24. Patrick Koch | | 23 May 2023 | / 29

    Public Picture Sources Windows: https://commons.wikimedia.org/wiki/File:Windows_ Logo_(1992-2001).svg PCs: https://www.impulse.de/wp- content/uploads/2015/10/gebrauchte- hardware_fotolia620-620x340.jpg Python: https://www.python.org/ Linux: https://upload.wikimedia.org/wikipedia/commons/d /dd/Linux_logo.jpg Slide 6 Engine Test Bed: avl.com Slide 7 https://pixabay.com/de/photos/geb%C 3%A4ude-kran-baustelle- ger%C3%BCstbau-1804030/ Slide 8 Engine Test Bed: avl.com Battery Cell: https://www.avl.com/en/testing- solutions/e-mobility-testing/battery-testing/avl- battery-cell-ts Slide 9 https://www.pexels.com/photo/man- jumping-on-intermodal-container- 379964/ Slide 10 & Slide 22
  25. Patrick Koch | | 23 May 2023 | / 30

    Public https://learn.microsoft.com/de- de/azure/cloud-adoption- framework/migrate/ Slide 12 Picture Sources Azure VM Icon: https://learn.microsoft.com/en- us/azure/architecture/icons/ AKS Icon: https://learn.microsoft.com/en- us/azure/architecture/icons/ Azure Share Icon: https://learn.microsoft.com/en- us/azure/architecture/icons/ ACR Icon: https://learn.microsoft.com/en- us/azure/architecture/icons/ Container Icon: https://icons8.de/icons/set/container Screenshot: Microsoft - Azure Portal https://portal.azure.com Slide 13 Terraform Icon: https://registry.terraform.io/providers/hashicorp/tfe/latest Azure DevOps Icon: https://learn.microsoft.com/en- us/azure/architecture/icons/ Azure Icon: https://de.m.wikipedia.org/wiki/Datei:Microsoft_Azure_Logo.svg Slide 19 Prefect: docs.prefect.io | AKS: sharepointeurope.com | ACR & AKS Icon: https://learn.microsoft.com/en- us/azure/architecture/icons/ | Python: python.org | Azure: https://icons8.de/icons/set/azure-devops Slide 24 Terraform Icon: https://registry.terraform.io/providers/hashicorp/tfe/latest Slide 20
  26. Patrick Koch | | 23 May 2023 | / 31

    Public Python: https://icons8.de/icons/set/python Linux: https://icons8.de/icons/set/linux Prefect: https://www.prefect.io/ Docker: https://icons8.de/icons/set/docker Kubernetes: https://icons8.de/icons/set/kubernetes AKS: https://learn.microsoft.com/en- us/azure/architecture/icons/ Azure DevOps Service: https://learn.microsoft.com/en- us/azure/architecture/icons/ Azure: https://icons8.de/icons/set/azure- Windows: https://icons8.de/icons/set/windows Slide 25 Slide 25 Picture Sources
  27. Patrick Koch | | 23 May 2023 | / 32

    Public Icon/Picture Sources Slide 5: Windows: https://commons.wikimedia.org/wiki/File:Windows_Logo_(1992-2001).svg GCP: https://cloud.google.com, https://www.unbelievable-machine.com/google-cloud-platform/ AWS: https://de.wikipedia.org/wiki/Amazon_Web_Services Azure: https://www.itprotoday.com/iaaspaas/microsoft-azure-cloud-platform-what-works-what-s-needed PCs: https://www.impulse.de/wp-content/uploads/2015/10/gebrauchte-hardware_fotolia620-620x340.jpg Slide 9: https://pixabay.com/de/photos/geb%C3%A4ude-kran-baustelle-ger%C3%BCstbau-1804030/ Slide 10: Engine Testbed: https://blog.applus.com/better-engine-test-bed Slide 11: https://i.natgeofe.com/k/7530d2df-8919-4099-be7f-f5f787a60498/switzerland-matterhorn_4x3.jpg Slide 12 & 19: https://www.projekt-promotion.at/artikel/das-containerhaus-die-sparsame-und-nachhaltige-wohnalternative Slide 13: Windows: https://de.m.wikinews.org/wiki/Datei:Windows_logo_-_2012.png Slide 15: https://docs.microsoft.com/de-de/azure/architecture/solution-ideas/articles/migrate-existing-applications-with-aks Slide 17: Terraform: https://commons.wikimedia.org/wiki/File:Terraform_Logo.svg Azure DevOps: https://visualstudio.microsoft.com/de/subscriptions/ Azure Pipeline: https://azure.microsoft.com/de-de/blog/topics/data-warehouse/ Azure Services: https://www.portal.azure.com Azure: https://www.itprotoday.com/iaaspaas/microsoft-azure-cloud-platform-what-works-what-s-needed Slide 20: Linux: https://cdn.picpng.com/linux/linux-unix-tux-penguin-cute-43298.png Windows: https://de.m.wikinews.org/wiki/Datei:Windows_logo_-_2012.png Slide 21: Azure: azure.microsoft.com Prefect: docs.prefect.io AKS: sharepointeurope.com ACR: azure.microsoft.com Linux: linuxfoundation.org Python: python.org Dask: docs.dask.org Slide 23: Docker: https://icon-icons.com/de/symbol/docker-logo/145331 Rancher: https://icon-icons.com/de/symbol/rancher-logo/169808 Azure Pipeline: https://icon-icons.com/de/symbol/azure-Rohrleitungen-logo/145465 Azure DevOps: https://icon-icons.com/de/symbol/microsoft-azure-devops/138386 Kubernetes: https://icon-icons.com/de/symbol/kubernetes/137461 Azure: https://icon-icons.com/de/symbol/microsoft-azure/135406 Microsoft: https://icon-icons.com/de/symbol/Microsoft/23401 Linux: https://icon-icons.com/de/symbol/code-linux-os/85584 Python: python.org Prefect: docs.prefect.io