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

HashiDays 2023

Patrick Koch
January 02, 2024
19

HashiDays 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?
• How could IaC, especially Terraform help us?

Patrick Koch

January 02, 2024
Tweet

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 | | 13 June 2023 | / 4

    Public Today’s agenda 4 3 2 Brief overview about the AVL, and the legacy software application Introduction 1 Once upon a time ... and it‘s still there What happened before the cloud? Why Windows containers? The cloud migration journey Let‘s follow the cloud native way! Next steps What’s next? We are still at the beginning ... Conclusion & outlook 6 5 Our derived key learnings Benefits of using IaC
  3. Patrick Koch | | 13 June 2023 | / 5

    Public AVL List GmbH Founded 1948 More than 11,000 worldwide 4,000 in Graz (headquarters) 45 affiliates worldwide Export quota of 97% AVL List GmbH (“AVL”) is the world’s largest independent company for development, simulation and testing in the automotive industry, and in other sectors. Drawing on its pioneering spirit, the company provides concepts, solutions and methodologies to shape future mobility trends.”
  4. Patrick Koch | | 13 June 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 | | 13 June 2023 | / 8

    Public Traditional use case: the engine test bed
  6. Patrick Koch | | 13 June 2023 | / 9

    Public Data processing with AVL CONCERTO
  7. Patrick Koch | | 13 June 2023 | / 11

    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 ..
  8. Patrick Koch | | 13 June 2023 | / 12

    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
  9. Patrick Koch | | 13 June 2023 | / 13

    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
  10. Patrick Koch | | 13 June 2023 | / 14

    Public The solution idea 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)”
  11. Patrick Koch | | 13 June 2023 | / 15

    Public The goal of the first implementation Azure Container Registry Azure Kubernetes Service Azure Virtual Machine Azure File Share Container 1 2 3 4
  12. Patrick Koch | | 13 June 2023 | / 16

    Public The result of the first implementation
  13. Patrick Koch | | 13 June 2023 | / 18

    Public mid-term approach for migrating to the cloud 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
  14. Patrick Koch | | 13 June 2023 | / 19

    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
  15. Patrick Koch | | 13 June 2023 | / 20

    Public Architecture of the cloud native product „AVL Data Analytics“ Logo/Picture Sources: Azure: https://icons8.de/icons/set/azure- | Prefect: https://www.prefect.io/ | AKS: https://learn.microsoft.com/en-us/azure/architecture/icons/ | ACR: https://learn.microsoft.com/en-us/azure/architecture/icons/ | Kafka: https://kafka.apache.org/ | KEDA: https://keda.sh/ | Clickhouse: https://clickhouse.com/ | PostgreSQL: https://www.postgresql.org/ | MySQL: https://docs.azure.cn/en-us/mysql-database-on-azure/ | Elastic: https://www.elastic.co/de/elasticsearch/ | Terraform: https://www.terraform.io/ Azure Provisioned by: Azure Kubernetes Service Container
  16. Patrick Koch | | 13 June 2023 | / 22

    Public Empower the developer • Developers are capable of provisioning the resources they need • Less dependency • Have fun with provisioning/destroying/changing the infrastructure AKS icon source: https://learn.microsoft.com/en-us/azure/architecture/icons/
  17. Patrick Koch | | 13 June 2023 | / 23

    Public Infrastructure can be version controlled • Version control the configurations → Git repository • Be able to reproduce specific versions of your infrastructure • Feel free to experiment Git icon source: https://git-scm.com/downloads/logos
  18. Patrick Koch | | 13 June 2023 | / 24

    Public Automation – Establish Pipelines Terraform Configurations Azure Azure DevOps Pipeline • Create pipelines for conducting the Terraform commands • Controlled way of provisioning/destroying the resources • Everyone can trigger the pipeline
  19. Patrick Koch | | 13 June 2023 | / 25

    Public Automation – Establish Pipelines • Create pipelines for conducting the Terraform commands • Controlled way of provisioning/destroying the resources • Everyone can trigger the pipeline Video source: Azure Portal
  20. Patrick Koch | | 13 June 2023 | / 26

    Public Decrease the costs • Provision when you need it, destroy it otherwise • Estimate costs upfront using dedicated tools
  21. Patrick Koch | | 13 June 2023 | / 27

    Public IaC as part of your product for the customer • Provide the customer the configurations • Reproduce the same environment for finding bugs Terraform icon: https://www.terraform.io/
  22. Patrick Koch | | 13 June 2023 | / 28

    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 • Terraform 2022 • First development of Linux container • Python Integration • Prefect as Workflow Automation •Established IaC 2023 – 202? • Become a Data Analytics Platform, several cloud resources as part of the product • SaaS • Less focus on Windows desktop
  23. Patrick Koch | | 13 June 2023 | / 29

    Public Conclusion Decide for a cloud migration strategy first Start lightweight with your first implementation Use an Infrastructure as Code approach Increase your automation
  24. Patrick Koch | | 13 June 2023 | / 31

    Public Picture Sources https://www.genardmethod.com/blog/ your-speechs-introduction-how-to- make-it-powerful https://hashidays.com/ https://www.avl.com Slide 1 Slide 2 https://pixabay.com/photos/car- citroen-france-vintage-vehicle- 2184905/ Slide 7 Windows: https://commons.wikimedia.org/wiki/Fi le: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 https://pixabay.com/de/photos/geb%C 3%A4ude-kran-baustelle- ger%C3%BCstbau-1804030/ Slide 10
  25. Patrick Koch | | 13 June 2023 | / 32

    Public Picture Sources Engine Test Bed: http://www.avl.com Battery Cell: https://www.avl.com/en/testing- solutions/e-mobility-testing/battery-testing/avl- battery-cell-ts Slide 11 https://www.pexels.com/photo/man- jumping-on-intermodal-container- 379964/ Slide 12 & Slide 18 https://learn.microsoft.com/de- de/azure/cloud-adoption- framework/migrate/ Slide 14 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 Slide 15 Azure: https://icons8.de/icons/set/azure- | Prefect: https://www.prefect.io/ | AKS: https://learn.microsoft.com/en- us/azure/architecture/icons/ | ACR: https://learn.microsoft.com/en- us/azure/architecture/icons/ | Kafka: https://kafka.apache.org/ | KEDA: https://keda.sh/ | Clickhouse: https://clickhouse.com/ | PostgreSQL: https://www.postgresql.org/ | MySQL: https://docs.azure.cn/en-us/mysql-database-on- azure/ | Elastic: https://www.elastic.co/de/elasticsearch/ | Terraform: https://www.terraform.io/ Slide 20
  26. Patrick Koch | | 13 June 2023 | / 33

    Public Picture Sources AKS Logo: https://learn.microsoft.com/en- us/azure/architecture/icons/ Slide 22 Slide 23 Git icon source: https://git- scm.com/downloads/logos Slide 27 Terraform icon: https://www.terraform.io/ Python: https://icons8.de/icons/set/python Linux: https://icons8.de/icons/set/linux Prefect: https://www.prefect.io/ Terraform: https://www.terraform.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 28 Slide 28