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

Architecting and delivering Java applications in the cloud era

Architecting and delivering Java applications in the cloud era

Nowadays, the best company is the one that delivers value quicker to its customers. They seek to spend less, and in consequence, they end up searching for cloud solutions. On the technical side, we have Java, which is the most mature and popular language of the past 25 years. Nevertheless, the most asked questions of the past years are: how do Java and cloud fit together? Does Java still fit the new technology trends or Is it time to deprecate Java to use newer languages such as NodeJS and GO?

With this deck, we presented how the Java language, standards, culture, and ecosystem around it evolved to keep the pace of cloud deployment. Learn how you can maintain your developers' productivity by architecting your Java application aligned with the most recent best practices and recommendations, besides, defining a good integration and delivery scenario for your application lifecycle.

More details can be found at: https://otaviojava.com/2020/11/26/joker-2020/

8a9897be8e52ae54f8f4b57e0b868829?s=128

Karina Macedo Varela

November 26, 2020
Tweet

Transcript

  1. Otavio Santana @otaviojava Architecting and delivering Java applications in the

    cloud era Karina Varela @kvarel4
  2. Otavio Santana @otaviojava DevRel Engineer + Java Champion + JCP-EC-EG-EGL

    + Apache Committer + Eclipse Committer + Eclipse Project Leader + Book and blog writer Speaker
  3. Karina Varela @kvarel4 Senior Technical Marketing Manager + KIE Contributor

    + MOTU Tech Founder + SouJava Organizer + Instructor + Book and blog writer Speaker
  4. Cloud Origins, Why and How

  5. • Individuals and interactions over processes and tools • Working

    software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan Agile
  6. • DevOps ◦ NoOps • BizDevOps Breaking down the silos

    Great wall of China
  7. "Cloud is somebody else's problem" Cloud Jacob Peter Gowy's The

    Flight of Icarus (1635–1637)
  8. Concepts

  9. Some of the options Cloud PaaS IaaS CaaS SaaS Managed

    Application Services Managed Event Streaming Managed Database Managed API Gateways Managed Integration Decisions and Processes as a Service Backend as a Service (serverless)
  10. Cloud Native Applications

  11. “Cloud-native is an approach to building and running applications that

    exploits the advantages of the cloud computing model.” Cloud Native
  12. “Cloud-native is a different way of thinking and reasoning about

    software systems. It embodies the following concepts: powered by disposable infrastructure, composed of bounded, scales globally, embraces disposable architecture.” Cloud Native
  13. “In general use, ‘cloud-native’ is an approach to building and

    running applications that exploits the advantages of the cloud-computing delivery model. ‘Cloud-native’ is about how applications are created and deployed, not where.” Cloud Native
  14. “Independent DURS ultimately comes up in every discussion on cloud-native

    concepts; to independently Deploy, Update, Replace and Scale.” Cloud Native
  15. “Cloud-native is more than a tool set. It is a

    complete architecture, a philosophical approach for building applications that take full advantage of cloud computing.” Cloud Native
  16. “Cloud-native technologies empower organizations to build and run scalable applications

    in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.” Cloud Native
  17. Cloud-native is a term used to describe container-based environments. Cloud

    Native
  18. A set of good practices to optimize an application in

    the cloud through: • Containerization • Orchestration • Automation Cloud Native
  19. Cloud Native Trends Cloud Cloud Ready Cloud Friendly Cloud Native

  20. Java is too heavy for the cloud

  21. Java, Jakarta EE and Microprofile

  22. • Optimizations on GC • Improvements Containers • Better Integration

    • Release 6 months Java
  23. • Eclipse Foundation • Agile - Yearly deliveries • Cloud

    Native Jakarta EE
  24. • Microservices • Eclipse Foundation • Agile- Quarterly releases ◦

    Fast Delivery Eclipse MicroProfile
  25. • Jakarta EE8 • Security • Fault Tolerance • Much

    more... Eclipse Foundation
  26. Java ecosystem

  27. • Native • Serverless • GC • JIT vs AOT

    Native image Hardware ISA SO JVM App Hardware ISA SO App
  28. Orchestration vs Choreography

  29. Independent services… involved in a same business flow

  30. Multiple endpoint to endpoint communication?

  31. Choreography

  32. Event-driven Choreography Sam Newman

  33. New order created Services

  34. 1. New order created 2. New order created, process payment

    Services
  35. 1. New order created 3. See new paid order event,

    Start execution 2. New order created, process payment Services
  36. 1. New order created 3. See new paid order event,

    Start execution 4. Execution done. 2. New order created, process payment Services
  37. 1. New order created 3. See new paid order event,

    Start execution 4. Execution done. 2. New order created, process payment Order executed, start shipment Services
  38. Broker Services Choreography Subscribe / Publish Subscribe / Publish

  39. Orchestration

  40. Traditional Service Orchestration

  41. Automating Business Flows

  42. Services Orchestration Business Processes + Integration with (Micro)Services

  43. Event-driven solutions

  44. CI/CD

  45. Continuous Integration Commit Code Frequently Don't Commit Broken Code At

    every change: ↪ Build your... software ↪ Build your... database ↪ Run your tests Fix Broken Builds Immediately Write Automated Developer Test All tests must pass
  46. Continuous Delivery / Deployment

  47. DevOps With Containers Across the Hybrid Cloud? Source Repository CI/CD

    Engine Dev Container Physical Virtual Private cloud Public cloud
  48. Best Practices Java

  49. • Codebase • Dependencies • Config • Backing services •

    Build, release, run • Process • Port binding • Concurrency • Disposability • Dev/prod parity • Logs • Admin processes The 12 Factors App
  50. Old but Gold

  51. “Certainly, we always read great things about the microservices architectures

    implemented by companies like Netflix or Amazon. So let me ask a question: how many companies in the world can be Netflix and Amazon?” Microservices Conway's law
  52. Best Practices For Java + Containers

  53. Container engines • Know the options: ◦ Standard: Open Containers

    Initiative (OCI) • Team Skills ( Concepts and tool - basics ) • Will you work with containers locally, during the development? • Adding tests for your app, within the container ( i.e. Testcontainers )
  54. Container engines • During the image build time: ◦ Single

    Concern Principle ◦ Self-Containment Principle ◦ Image Immutability Principle
  55. Container engines • During the container runtime: ◦ High Observability

    Principle ◦ Lifecycle conformance principle ◦ Process disposability principle ◦ Runtime confinement principle
  56. Demo Time

  57. Q&A Thank you! Our contacts: Otavio Santana @otaviojava Karina Varela

    @kvarel4