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

Spring I/O 2023 - Spring Boot in a Cloud-Native Polyglot World

Spring I/O 2023 - Spring Boot in a Cloud-Native Polyglot World

Salaboy

May 19, 2023
Tweet

More Decks by Salaboy

Other Decks in Technology

Transcript

  1. @salaboy - Spring I/O - Barcelona 2023
    Spring Boot in a Polyglot Cloud-
    Native World
    With Dapr

    View full-size slide

  2. Agenda
    • Our Spring Boot Cloud-Native Applications

    • Common patterns and abstractions

    • The relationship betwee apps and infra

    • Kubernetes = Deploy + Run

    • Platform Building in the Cloud-Native Space

    • Platform Capabilities

    • Dapr on K8s

    • Dapr and TestContainers

    View full-size slide

  3. MAURICIO SALATINO / WWW.SALABOY.COM
    @SALABOY

    View full-size slide

  4. PLATFORMS ON K8S
    40% DISCOUNT: SALATINO40

    View full-size slide

  5. PLATFORMS ON K8S
    SALATINO40 😢 😢 😢 😢 😢 😢

    View full-size slide

  6. #1: How many Java
    Developers are in
    the room?
    Time: 10

    View full-size slide

  7. #1: How many Java
    Developers are in
    the room?
    Time: 8

    View full-size slide

  8. #1: How many Java
    Developers are in
    the room?
    Time: 5

    View full-size slide

  9. #1: How many Java
    Developers are in
    the room?
    Time: 3

    View full-size slide

  10. #1: How many Java
    Developers are in
    the room?
    Time Out!

    View full-size slide

  11. Fetching results

    View full-size slide

  12. Fetching results….

    View full-size slide

  13. Fetching results………

    View full-size slide

  14. Fetching results………..…

    View full-size slide

  15. Fetching
    results………………

    View full-size slide

  16. Java Developers
    Java/Spring Developers: 80%
    Others (WASM, C (””,#,++), Go, Flash): 20%

    View full-size slide

  17. #2: Do you have
    more than one
    Application?

    View full-size slide

  18. Applications
    One App -> 30%
    More than one -> 70%
    No Apps -> ??

    View full-size slide

  19. #3: Does your
    applications read or
    write data?
    (From storage, db, files, buckets)

    View full-size slide

  20. Data? Or no Data?
    Most of them -> 70%
    Nope -> 20%
    I don’t understand the question -> 10%

    View full-size slide

  21. #4: Does your
    applications consume or
    emit events/messages?

    View full-size slide

  22. Async Messages
    Some of them -> 30%
    Nope -> 50%
    I don’t understand the question -> 20%

    View full-size slide

  23. #5: Does your
    applications to talk
    to each other?

    View full-size slide

  24. Chatty apps
    Yes using REST -> 40%
    Yes using GRPC -> 40%
    Other -> 30%
    No / I don’t understand the question -> 30%

    View full-size slide

  25. Facts / Results
    App A App B App C

    View full-size slide

  26. INFRASTRUCTURE

    View full-size slide

  27. DATA
    Spring Boot Data
    JPA
    Redis
    MongoDB
    Oracle
    PostgreSQL
    MySQL
    MongoDB Client
    Redis Client
    Drivers / CIients
    JOOQ
    JBDC
    Abstractions

    View full-size slide

  28. MESSAGING
    Spring Boot Integration
    JMS
    RabbitMQ
    Kafka Client
    RabbitMQ Client
    CIients
    AMQP
    Kafka
    Rsocket
    Pulsar Pulsar Client
    AMQP Clients
    Abstractions/Protocols

    View full-size slide

  29. 12-factor /
    Cloud-Native
    Envrionment Variables
    Development Testing Staging Production

    View full-size slide

  30. Upgrading
    App A 1.5.0
    V3.4.X
    V1.2.X
    Redis Client V3.4.3
    Kafka Client V1.2.3
    App B 3.4.0
    Redis Client V3.5.1
    Kafka Client V2.2.3

    View full-size slide

  31. [Apps + Deps ]
    <==>
    Infra

    View full-size slide

  32. [Apps + Framework + Deps]
    <==>
    Infra

    View full-size slide

  33. Polyglot?
    App A 1.5.0 (Java)
    V3.4.X
    V1.2.X
    Redis Client V3.4.3
    Kafka Client V1.2.3
    App B 3.4.0 (Go)
    Redis Client V3.4.3
    Kafka Client V1.2.3
    Abstractions / Frameworks Abstractions / Frameworks

    View full-size slide

  34. DEPLOY AND RUN

    View full-size slide

  35. Demo #1
    Let’s do it!

    View full-size slide

  36. We will need
    some tools! 🛠🪓

    View full-size slide

  37. THE PLATFORM
    ENGINEERING BUZZ


    🤔

    View full-size slide

  38. 👷🔧


    🪓👷
    Devs
    Infra SREs
    Data
    Scientists
    {
    }
    THE PLATFORM TEAM

    View full-size slide

  39. My


    Platform
    Platform
    APIs
    Self Service
    Golden
    Paths
    THE PLATFORM

    View full-size slide

  40. CNCF TAG APP DELIVERY
    https://tag-app-delivery.cncf.io/whitepapers/platforms/

    View full-size slide

  41. Apps APIs
    Exchanging
    Messages/
    Events
    Storing and
    Reading Data
    Observability
    Resiliency
    Dynamic
    Scaling
    Release
    Strategies
    Feature Flags
    Work
    f
    lows Traf
    f
    ic
    Management
    PLATFORM CAPABILITIES
    Tools
    Capabilities

    View full-size slide

  42. https://www.aviransplace.com/post/platform-as-a-runtime-paar-beyond-platform-engineering

    View full-size slide

  43. App A 1.5.0 (Java) App B 3.4.0 (Go)
    Abstractions / Frameworks Abstractions / Frameworks
    Dapr Sidecar Dapr Sidecar
    Local HTTP/GRPC Local HTTP/GRPC
    Dapr StateStore Component
    Dapr PubSub Component Dapr Resiliency Policies

    View full-size slide

  44. Read App
    Write App Subscribe App
    Frontend App
    Dapr StateStore Component
    Dapr PubSub Component Dapr Resiliency Policies
    Dapr Service Discovery

    View full-size slide

  45. Read App
    Write App
    Subscribe App
    Frontend App
    Dapr StateStore Component
    Dapr PubSub Component
    Dapr Resiliency Policies
    Dapr Service Discovery
    Do Some SQL
    5%
    95%

    View full-size slide





  46. ❤❤




    🥳

    View full-size slide

  47. Read App
    Write App Subscribe App
    Dapr StateStore
    Dapr PubSub
    Dapr Resiliency Policies
    Dapr Service Discovery
    Dapr PubSub
    Dapr Resiliency Policies
    Dapr StateStore
    🪄

    View full-size slide

  48. Use the right abstractions
    to enable teams to go faster

    View full-size slide

  49. Break dependencies
    from infra

    View full-size slide

  50. For language-agnostic
    application level APIs

    View full-size slide

  51. Wire cloud native apps
    locally

    View full-size slide

  52. Thanks
    @Salaboy

    View full-size slide

  53. PLATFORMS ON K8S
    40% DISCOUNT: SALATINO40

    View full-size slide