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

Cloud-Native-Workshop: Moderne End-to-End-Architekturen in der Praxis

Cloud-Native-Workshop: Moderne End-to-End-Architekturen in der Praxis

Ob Modernisierung oder Neuimplementierung: heutzutage soll es Cloud-Native sein! Doch was bedeutet Cloud-Native eigentlich, und was bedeutet es nicht? Müssen es wirklich immer und überall zustandslose Microservices sein? In diesem Ganztagesworkshop zeigen Christian Weyer und Thorsten Hans anhand verteilter Anwendungsarchitekturen und bewährter Patterns, wie Sie Cloud-Native-Anwendungen erstellen können. Durch praxisorientierte Beispiele werden .NET-Architekten und -Entwickler die unterschiedlichen Herausforderungen aufgezeigt und pragmatische Lösungswege diskutiert. Egal ob Sie als Ziel die lokale Infrastruktur, ein privates Rechenzentrum oder eine Public-Cloud wie Azure haben: Bereiten Sie sich und Ihr Team darauf vor, Anwendungen anhand essenzieller Cloud-Native-Attribute wie Konfigurierbarkeit, Überwachbarkeit, Robustheit, und Skalierbarkeit zu designen.

Christian Weyer

February 20, 2023
Tweet

More Decks by Christian Weyer

Other Decks in Programming

Transcript

  1. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Christian Weyer
    https://thinktecture.com/christian-weyer
    @christianweyer
    Co-Founder & CTO
    Thorsten Hans
    https://thinktecture.com/thorsten-hans
    @thorstenhans
    Consultant & Cloud-Native-Enthusiast

    View full-size slide

  2. Cloud-Native Consultant @ Thinktecture AG
    #Cloud-Native #Kubernetes
    #Azure #Terraform
    Thorsten Hans
    Moderne End-to-End-Architekturen in der Praxis
    Cloud-Native-Workshop
    [email protected]
    thinktecture.com
    thorsten-hans.com
    @ThorstenHans

    View full-size slide

  3. § Cloud-native & serverless architectures
    § Pragmatic end-to-end solutions
    § Mobile & web-based application architectures
    § Independent Microsoft Regional Director
    § Microsoft MVP for Developer Technologies
    ASPInsider, AzureInsider
    § Google GDE for Web Technologies
    [email protected] @christianweyer https://www.thinktecture.com
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Christian Weyer
    Co-Founder & CTO @ Thinktecture AG
    3

    View full-size slide

  4. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Four Blocks – approx. break down
    Intro
    Story
    … a bit booring stuff …
    Please bear with us!
    Architecture
    Technology
    Code
    Architecture
    Technology
    Code
    Architecture
    Technology
    Code
    Recap & Final Q&A
    09.00 – 10.30 11.00 – 12.30
    13.30 – 15.00 15.30 – 17.00
    4

    View full-size slide

  5. The image part with relationship ID rId12 was not found in the file.
    The image part with relationship ID rId12 was not found in the file.
    Special Day
    Cloud-Native Business Applications
    Thema Sprecher Datum, Uhrzeit
    Cloud-Native-all-the-things:
    Definition, Praktiken & Patterns
    Thorsten Hans,
    Christian Weyer
    DI, 21. Februar 2023,
    10.45 bis 11.45
    Containerbasierte Entwicklung für
    .NET-Entwickler
    Tobias Fenster DI, 21. Februar 2023,
    12.15 bis 13.15
    Was guckst du? Observability von
    Cloud-Native-Anwendungen –
    mit OpenTelemetry
    Thorsten Hans DI, 21. Februar 2023,
    15.30 bis 16.30
    Cloud-Native Microservices:
    On-Premises oder in der Cloud – mit Dapr
    Christian Weyer DI, 21. Februar 2023,
    17.00 bis 18.00
    Serverless Containers mit
    Azure Container Apps
    Thorsten Hans DI, 21. Februar 2023,
    19.00 bis 20.00

    View full-size slide

  6. BLOCK I
    Introduction
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    6

    View full-size slide

  7. D E M O
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    7

    View full-size slide

  8. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    End-to-End Demo Application
    8

    View full-size slide

  9. Myth Busting & Definitions
    Aka “WTF?”
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    9

    View full-size slide

  10. Cloud-Native
    What is it NOT
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    10
    Myth Busting & Definitions

    View full-size slide

  11. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    11
    Myth Busting & Definitions

    View full-size slide

  12. Cloud-Native
    What is it
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    12
    Myth Busting & Definitions

    View full-size slide

  13. ”… is highly distributed, must operate in a
    constantly changing environment, and is
    itself constantly changing.”
    Cornelia Davis,
    Author of
    Cloud Native Patterns: Designing change-tolerant software
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Cloud-Native Software
    13
    Myth Busting & Definitions

    View full-size slide

  14. Myth Busting & Definitions
    Cloud-Native Software
    Yes, it is all about Linux.
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    14

    View full-size slide

  15. Disadvantages of Windows Containers
    • Bigger in size
    • longer push/pull times
    • Require more storage (affects Kubernetes & PaaS)
    • Higher resource consumption
    • Windows Containers & Hosts need more CPU & memory
    • Direct impact on infrastructure budged
    • Host & container OS must have same version (strict policy)
    • https://kubernetes.io/docs/concepts/windows/intro/#windows-os-version-support
    • Meaning you may end up with way more infrastructure
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Cloud-Native Software
    15
    Myth Busting & Definitions

    View full-size slide

  16. Myth Busting & Definitions
    Cloud-Native
    Candidate Applications
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    16

    View full-size slide

  17. § Strategic enterprise systems
    that need to constantly evolve
    business capabilities/features
    § Application that requires a
    high release velocity - with
    high confidence
    § System where individual
    features must release without
    a full redeployment of the
    entire system
    § Application developed by
    teams with expertise in
    different technology stacks
    § Application with components
    that must scale independently
    § ℹ Smaller, less impactful LOB
    applications might fare well
    with a simple monolithic
    architecture hosted in a Cloud
    PaaS environment
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Candidates for Cloud-Native
    17
    Myth Busting & Definitions

    View full-size slide

  18. Cloud-Native
    & Microservices
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    18
    Myth Busting & Definitions

    View full-size slide

  19. Cloud-Native Attributes
    What & why
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    19

    View full-size slide

  20. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    20
    Availability
    Scalability
    Resilience
    Configurability
    Observability
    Cloud-Native
    Applications
    Cloud-Native Attributes

    View full-size slide

  21. Cloud-Native Landscape
    Complex affairs
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    21

    View full-size slide

  22. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Our Brainstorming…
    22
    … there is a lot of
    infrastructure-
    related stuff !
    Cloud-Native Landscape

    View full-size slide

  23. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    23
    https://landscape.cncf.io/
    Cloud-Native Landscape

    View full-size slide

  24. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    24
    https://twitter.com/GeertBaeke/status/1577704842541285379
    Cloud-Native Landscape

    View full-size slide

  25. Cloud-Native & Cloud
    What’s in a name?
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    25

    View full-size slide

  26. "Cloud is about where we're computing.
    Cloud-Native is about how.”
    Cornelia Davis,
    Author of
    Cloud Native Patterns: Designing change-tolerant software
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    26
    Cloud-Native & Cloud

    View full-size slide

  27. From
    Build vs. Buy
    to
    Run vs. Rent
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    27
    Cloud-Native & Cloud

    View full-size slide

  28. Cloud Agnosticism
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    28
    Cloud-agnostic Cloud vendor-coupled
    More complex Complex
    Cloud-Native & Cloud

    View full-size slide

  29. Cloud Agnostism
    Going fully cloud-agnostic
    leads to
    re-implementing stuff that’s already there
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    29
    Cloud-Native & Cloud

    View full-size slide

  30. Hosting Options
    Running Cloud-Native applications
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    30

    View full-size slide

  31. § We can choose and mix from the continuum
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Cloud Compute Continuum
    PaaS
    IaaS
    On-Premises Serverless
    31
    Managed
    Kubernetes
    Hosting options

    View full-size slide

  32. § Cloud-Native is not “just using” Kubernetes
    § Kubernetes is a powerful platform (orchestrator) to build
    and run cloud-native applications
    § Leverage Kubernetes patterns and capabilities to address
    certain cloud-native “ilities”
    § Kubernetes is a driver to become cloud-agnostic
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Cloud-Native & Kubernetes
    32
    Hosting options

    View full-size slide

  33. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Hosting Options - Comparison
    33
    Hosting options
    0 = worst / 3 = best

    View full-size slide

  34. BLOCK II
    Applying proven techniques
    to .NET applications
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    34

    View full-size slide

  35. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    35
    D E M
    Patterns

    View full-size slide

  36. “It’s simply that the application has to give up a
    lot of control, to the platform - and has to be
    cleanly integrable from the outside.”
    Thorsten Hans,
    Cloud-Native-Enthusiast
    Thinktecture Consultant
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Main Metaphor for Cloud-Native Code
    36
    Techniques & Practices

    View full-size slide

  37. Configurability by Example
    with IConfiguration
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    .NET by Example
    https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/ 37
    Techniques & Practices

    View full-size slide

  38. Observability by Example
    Individual Health Checks
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/health-checks 38
    Techniques & Practices

    View full-size slide

  39. Configuration by Example
    Integrate with the network environment
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer 39
    Techniques & Practices

    View full-size slide

  40. Redefined Responsibilities
    E.g.: Application devs
    do not configure HTTPS
    in the application
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    40
    Techniques & Practices

    View full-size slide

  41. Observability by Example
    with ILogger
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/ 41
    Techniques & Practices

    View full-size slide

  42. Observability by Example
    with OpenTelemetry
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    https://opentelemetry.io/docs/instrumentation/net/getting-started/ 42
    Techniques & Practices

    View full-size slide

  43. Observability by Example
    with Prometheus
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    https://github.com/prometheus-net/prometheus-net 43
    Techniques & Practices

    View full-size slide

  44. Containerization
    Create & use Docker Images
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    44
    Techniques & Practices

    View full-size slide

  45. BLOCK III
    Cloud-Native Patterns &
    Implementations
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    45

    View full-size slide

  46. § Execution independence /
    Hosting-agnostic
    § Different programming /
    tech stacks
    § Running anywhere
    § Resiliency
    § Location transparency
    § Error handling, retries
    § Decoupling
    § Robustness
    § Async business processes
    § Observability
    § Seeing everything
    end-to-end
    § Tracing, logging, metrics
    💡 Nice to have help here
    § Proven patterns
    § Support by libraries, SDK,
    runtime
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Cloud-Native applications - Some tedious parts
    46
    Patterns & Implementations

    View full-size slide

  47. § Portable, event-driven runtime for building distributed applications
    § Open-source, community-driven, vendor-neutral
    § Prevents developers reinventing the wheel, esp. complex wheels
    § Making developers lives easier with
    consistent approach / abstraction
    § Productivity tool, when having different
    § Generations of software types
    (greenfield and brownfield)
    § Languages & frameworks
    § Team formations
    ➡ Dapr as a common lingua franca
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Dapr: Distributed Application Runtime - for Cloud-Native
    47
    Patterns & Implementations

    View full-size slide

  48. Cloud-Native-Workshop
    Dapr Building Blocks
    Moderne End-to-End-Architekturen in der Praxis
    48
    Patterns & Implementations

    View full-size slide

  49. Cloud-Native-Workshop
    Dapr Sidecar: Separating Concerns
    Moderne End-to-End-Architekturen in der Praxis
    daprd
    49
    Patterns & Implementations

    View full-size slide

  50. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    50
    Components: Abstracting Access to “Things”
    Patterns & Implementations

    View full-size slide

  51. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    51
    https://github.com/dapr/components-contrib/tree/master/pubsub
    Patterns & Implementations

    View full-size slide

  52. Cloud-Native-Workshop
    Service Invocation: Interception
    Moderne End-to-End-Architekturen in der Praxis
    52
    Patterns & Implementations

    View full-size slide

  53. Cloud-Native-Workshop
    On-Premises oder in der Cloud – mit Dapr
    53
    Publish & Subscribe: Decoupling
    Patterns & Implementations

    View full-size slide

  54. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Input / Output Bindings & Triggers
    54
    Patterns & Implementations

    View full-size slide

  55. BLOCK IV
    Automation in Cloud-Native
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    55

    View full-size slide

  56. Automation in Cloud-Native
    The key to success!
    Automate EVERYTHING
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    56
    Automation

    View full-size slide

  57. “Everything that can be automated,
    should be automated.”
    Kevin Hoffman & Dan Nemeth,
    Author of
    Cloud Native Patterns: Designing change-tolerant software
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    57
    Automation

    View full-size slide

  58. “Anything you do more than once per day is a
    candidate for automation.”
    Kevin Hoffman & Dan Nemeth,
    Author of
    Cloud Native Patterns: Designing change-tolerant software
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    58
    Automation

    View full-size slide

  59. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Automation Layers
    Inner-Loop Infrastructure CI & CD
    Automation
    59

    View full-size slide

  60. Inner-Loop
    Automate everything you need to
    do while developing locally
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    60
    Automation

    View full-size slide

  61. Infrastructure
    Automate your cloud-infrastructure
    by applying Infrastructure-as-Code
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    61
    Automation

    View full-size slide

  62. Continuous Integration
    Build, Test, and Package every
    application component
    independently and automatically
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    62
    Automation

    View full-size slide

  63. Deployment
    Deploy every component
    independently and automatically
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    63
    Automation

    View full-size slide

  64. Deployment
    Embrace either
    Continuous Deployment or GitOps
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    64
    Automation

    View full-size slide

  65. Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Continuous-all-the-things
    65
    https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment
    Automation

    View full-size slide

  66. Recap
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    66

    View full-size slide

  67. § Was Sie gesehen haben
    § Pragmatische Sicht auf Cloud-Native
    § Was? Warum? Wo? Wie?
    § Methodiken, Praktiken & Patterns
    § Verteilte Anwendungen mit Dapr
    § Automatisierung auf allen Ebenen
    § End-to-End Beispielanwendung
    § .NET-Code (und ein bisschen Go)
    § Lokal und in der Cloud
    § Terminal & CLIs
    § Was Sie nicht gesehen haben
    § Einführung in Docker,
    Kubernetes oder Azure
    § Deep Dives in Docker,
    Kubernetes oder Azure
    § Windows 🙈
    § Klick-Bunti in Visual Studio 😇
    § Businessaspekte, wie Business
    Domain Modeling oder SaaS
    § Cloud-Native Security
    Cloud-Native-Workshop
    Moderne End-to-End-Architekturen in der Praxis
    Summary
    67

    View full-size slide

  68. https://www.thinktecture.com/ueber-uns/karriere/
    Dankeschön!
    Christian Weyer
    https://thinktecture.com/christian-weyer
    Demos aus der Session:
    https://github.com/thinktecture-labs/
    cloud-native-sample
    Cloud-Native @ Thinktecture:
    https://www.thinktecture.com/technologien/
    cloud-native/
    https://www.thinktecture.com/wissen/
    Thorsten Hans
    https://thinktecture.com/thorsten-hans
    68

    View full-size slide