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

Scale-Up-360 Microservices-Software-Architectures: Migration of a containerized Legacy Application to the Cloud​ (June 2022)

Scale-Up-360 Microservices-Software-Architectures: Migration of a containerized Legacy Application to the Cloud​ (June 2022)

The automotive industry is on its way to e-mobility, which is another reason why software products are increasingly coming into focus. Due to the ever increasing amount of data to be processed, scalable concepts for software applications are needed that can process more data in less time.

In order to be able to continue to support customers with high-performance services, a system migration is taking place within AVL, aiming at the implementation of Kubernetes services for the orchestration of containers in the cloud. This will ensure a continuous and scalable provision of services tailored to ever-changing customer requirements.

The presentation will focus on:

Why and for what purposes container orchestration with Kubernetes is used
How the technical implementation is designed
Which use cases (e.g. test beds for emission and acceleration tests) can be implemented using this technology

Patrick Koch

June 02, 2022
Tweet

More Decks by Patrick Koch

Other Decks in Programming

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

    View Slide

  2. Patrick Koch | | 01 June 2022 |
    / 2
    Public
    Today’s Agenda
    4
    3
    2
    Who am I? My employer, our legacy
    software application
    Introduction
    1
    Once upon a time ...
    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

    View Slide

  3. Patrick Koch | | 01 June 2022 |
    / 3
    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.”

    View Slide

  4. Patrick Koch | | 01 June 2022 |
    / 4
    Public
    Who am I?
    Patrick
    Koch
    Graz
    AVL since 2014
    Mail: [email protected]
    Blog: patrickkoch.dev
    Twitter: @PK_KOCH
    LinkedIn: patkoch87
    cloud, kubernetes,
    container, cicd

    View Slide

  5. Patrick Koch | | 01 June 2022 |
    / 5
    Public
    Evolved to
    platform product
    Container,
    K8s
    Automation
    Framework
    Web
    components
    AVL CONCERTO
    Why legacy?
    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. ”

    View Slide

  6. Public
    What happened before the cloud,
    k8s, container?

    View Slide

  7. Patrick Koch | | 01 June 2022 |
    / 7
    Public
    Use Case: Engine Test Bed
    Source: https://blog.applus.com/better-engine-test-bed/

    View Slide

  8. Patrick Koch | | 01 June 2022 |
    / 8
    Public
    Use Case: Data Processing with Concerto

    View Slide

  9. Public
    how and why the 1st challenge started …

    View Slide

  10. Patrick Koch | | 01 June 2022 |
    / 10
    Public
    An evolution happens – why even more automation?
    2021 ..
    ~ 30 years
    Huge testbed for single unit under test (UUT)
    1 Operator per testbed
    Very high costs
    Exchanging of unit is labour-intesive
    How to increase the degree of automation?
    One testing unit for multiple UUTs (Battery Cells)
    1 Operator for whole lab
    Costs per UUT are much lower
    UUT exchange works automated
    2021 ..

    View Slide

  11. Patrick Koch | | 01 June 2022 |
    / 11
    Public
    The Mission (impossible?)
    Move your custom
    legacy application into
    the
    cloud. Find a
    migration strategy
    that works! Right
    now!

    View Slide

  12. Patrick Koch | | 01 June 2022 |
    / 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

    View Slide

  13. Patrick Koch | | 01 June 2022 |
    / 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

    View Slide

  14. Patrick Koch | | 01 June 2022 |
    / 14
    Public
    Architecture Solution for PoC
    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)”

    View Slide

  15. Patrick Koch | | 01 June 2022 |
    / 15
    Public
    Pain Points
    ▪ Container Registry is not properly attached to the Kubernetes Cluster
    ▪ Deployment Rules of Workload
    ▪ License Server (Virtual Machine) can‘t be reached
    nodeSelector:
    kubernetes.io/os: windows
    allow {
    protocol = "tcp"
    ports = ["22", "80", "443", "2017", "7861", "8080", "9491", "1000-2000", "27000", "49152-65535"]
    }

    View Slide

  16. Patrick Koch | | 01 June 2022 |
    / 16
    Public
    Start lightweight – without complex Infrastructure

    View Slide

  17. Patrick Koch | | 01 June 2022 |
    / 17
    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)”

    View Slide

  18. Patrick Koch | | 01 June 2022 |
    / 18
    Public
    Azure K8s Service – Deployment of a Kubernetes Workload

    View Slide

  19. Patrick Koch | | 01 June 2022 |
    / 19
    Public
    Azure – Automated Resource Provisioning with Azure
    DevOps Server and Terraform
    Terraform
    .tf
    .tfstate
    Azure
    Azure DevOps Server

    View Slide

  20. Public
    What’s next? Cloud
    Windows Containers

    View Slide

  21. Patrick Koch | | 01 June 2022 |
    / 21
    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

    View Slide

  22. Patrick Koch | | 01 June 2022 |
    / 22
    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

    View Slide

  23. Patrick Koch | | 01 June 2022 |
    / 23
    Public
    Future Use Case: Architecture
    3
    4
    5
    6
    1 2
    Logo/Picture Sources:
    Azure: azure.microsoft.com | Prefect: docs.prefect.io | AKS: sharepointeurope.com | ACR: azure.microsoft.com
    Linux: linuxfoundation.org | Python: python.org | docs.dask.org

    View Slide

  24. Patrick Koch | | 01 June 2022 |
    / 24
    Public
    Prefect Flow as Kubernetes Job

    View Slide

  25. Patrick Koch | | 01 June 2022 |
    / 25
    Public
    Prefect Flow as Kubernetes Job: Demo

    View Slide

  26. Patrick Koch | | 01 June 2022 |
    / 26
    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
    2023 ..
    • Further
    improvements
    related to Linux
    Container
    • Introducing Python
    support
    • Prefect as Workflow
    Automation

    View Slide

  27. Patrick Koch | | 01 June 2022 |
    / 27
    Public
    Key Learnings of Social and Technical Aspects
    DON‘T REINVENT
    THE WHEEL
    GET OUT OF YOUR
    COMFORT ZONE
    INFRASTRUCTURE
    AS CODE
    MVP
    FIRST
    ARCHITECTURE DRIVEN
    BY BUSINESS
    DON‘T
    COPY/REBUILD
    ESTABLISHED
    TOOLS -
    STAY
    CURIOUS
    Neglect of cloud
    security
    Internal resistance to
    adoption
    Adopt due to wrong
    reasons
    Skills deficit

    View Slide

  28. www.avl.com
    Public
    Thank you
    Change is the Essence of Innovation.

    View Slide

  29. Patrick Koch | | 01 June 2022 |
    / 29
    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 7 & 10:
    Engine Testbed: https://blog.applus.com/better-engine-test-bed
    Slide 9:
    https://pixabay.com/de/photos/geb%C3%A4ude-kran-baustelle-ger%C3%BCstbau-1804030/
    Slide 11:
    https://i.natgeofe.com/k/7530d2df-8919-4099-be7f-f5f787a60498/switzerland-matterhorn_4x3.jpg
    Slide 12 & 21:
    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 14 & 17:
    https://docs.microsoft.com/de-de/azure/architecture/solution-ideas/articles/migrate-existing-applications-with-aks
    Slide 19:
    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 22:
    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 23:
    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 26:
    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

    View Slide