DevNation Live: London
Next Generation Microservices
You adopted microservices architecture to fundamentally change your time-to-market, and your code-to-production time from months to weeks—perhaps even days. The first generation of microservices was primarily shaped by Netflix OSS and leveraged by numerous Spring annotations throughout your business logic. The second generation of microservices architectural style was enabled by the rise of Kubernetes and OpenShift, now the de facto standard cloud-native application infrastructure. The next generation of microservices will leverage sidecars, a service mesh (Istio), serverless principles, and a new insanely fast and light Java runtime—Quarkus.
Coding that sparks joy with Quarkus
Does your heart beat faster when you’re developing your Java application? Does coding spark joy? If not, then it’s time to leave some old ways behind.
Join us on this live coding session and get familiar with Quarkus. You’ll learn to love how your old and new favorite APIs will start in a matter of milliseconds and consume tiny amounts of memory. Hot reload capabilities for development will give you instant sparks of joy!
The GraalVM’s Substrate VM framework is rocking the Java world. A boot time measured in milliseconds and low memory consumption allows improved efficiency of several orders of magnitude for typical JVM-based microservices and containerized applications, and lets us consider using Java in areas previously dominated by other programming languages.
But there’s no free lunch: The radical new architectural choices of this new VM imply both strong benefits and significant limitations, limitations that will break your existing applications and dependencies in surprising ways. Libraries must be adapted and you need to look at your code from a new angle.
Come discover the revolution of Substrate VM, its advantages, its disadvantages, and how to get your existing applications and frameworks working great for a fraction of memory, as we explain what we did to get Hibernate ORM to work on this promising platform.
The Java microservices tutorial with Quarkus
Cloud-native applications in Java are great, but when compared to Go or Node.js, Java—despite a fantastic ecosystem around it—falls short in containers. The initial memory consumption, the startup time, and the optimizations for long-running processes are killer criteria in the cloud.
Quarkus is a Kubernetes-native Java stack tailored for GraalVM and OpenJDK. With Quarkus, you can compile your application into a native executable, reduce the startup time to a few milliseconds, reduce the memory consumption to a few MB, and make applications ideally suited to run in containers.This workshop explores why these improvements matter, and how you can leverage Quarkus and GraalVM to build supersonic, subatomic, cloud-native applications. In this workshop, you will learn how to:
Build web applications with Quarkus.
Use Hibernate and Hibernate with Panache.
Build event-driven microservices with Apache Kafka.
Hands-on workshop: Kubernetes, Service Mesh, and serverless
This is your opportunity to get hands-on with Kubernetes and OpenShift, Istio service mesh, and Knative serverless.
A service mesh offers consistent discovery, security, tracing, monitoring, and failure handling, without the need for a shared asset, such as an API gateway or ESB. A typical implementation involves lightweight reverse-proxy processes deployed alongside each service process, perhaps in a separate container.
Using serverless architectures has become one of the common approaches in organizations that want to be more effective in DevOps and optimize their IT resources. This adds further flexibility to the next generation of microservices to be more agile (i.e., serve on-demand). Knative helps running your microservices’ serverless workloads on Kubernetes/OpenShift be more agile and effective.
9 steps to awesome with Kubernetes
Everybody seems to be rocking with Kubernetes as it has become the de facto standard for hybrid cloud portable application architecture. Even your favorite open source repositories at GitHub are running on top of it. Microservice architecture adoption continues to boom and Kubernetes/OpenShift is the ideal solution for deploying and managing the dozens of microservices that your organization is crafting.
This hands-on session is for any developer who is interested in Linux containers and cloud-native application architecture. Our examples will primarily be in Java, as there is some special “care and feeding” related to Java in a container, but the lessons are applicable to any programming language.
Sail into cloud with Istio service mesh
In this session, we will give you a taste of Envoy and Istio, two open source projects that will change the way you write cloud-native Java applications on Kubernetes.
Service mesh alleviates most of the common distributed computing pain points, such as smart routing, traffic splitting, canaries, etc. Join us to learn how to download, set up Istio on your local laptop, and deploy Java microservices as part of the Istio service mesh with Istio sidecar proxy. Istio proxy sidecars will spice up cloud-native applications with ability for splitting traffic between various version of services, smart routing using request headers, doing chaos engineering, and much more—all without code redeploys.
Kafka, Knative, and Kubernetes! Oh my!
In this session, we will show you how to run Apache Kafka natively on Kubernetes, leverage Knative Eventing and dynamically auto-scaling your microservices from 0-to-60 when drinking from the streaming Kafka firehose.
At the same time, we will explore an open source event-driven serverless programming model and a set of runtime capabilities for Kubernetes called Knative. Knative provides a suite of middleware components and building blocks that enable an event-driven serverless application architectural pattern.
The way we design, develop, and run applications on cloud-native platforms like Kubernetes differs significantly from the traditional approach. When working with Kubernetes, developers have fewer concerns to think about, but at the same time, there are new patterns and practices for solving everyday challenges.
In this talk, we will look at a collection of common patterns for developing cloud-native applications. These patterns encapsulate proven solutions and help you avoid reinventing the wheel.
We will look at the following pattern categories:
Foundational patterns describe basic patterns supported directly by Kubernetes.
Structural patterns are for structuring your cloud-native applications.
Configuration patterns provide various approaches to application configuration.
Advanced patterns go beyond the basic concepts, such as extension hooks for extending the platform itself.
You will leave with a solid overview of how common problems can be solved when developing cloud-native applications for Kubernetes.
Cloud-native integration patterns: Kubernetes and Camel K
In this session we are going to explore the latest innovation from the Apache Camel community: Camel K, a lightweight integration platform that enables enterprise integration patterns to be used natively on any Kubernetes cluster.
When used in combination with Knative, a framework that adds serverless building blocks to Kubernetes, and the subatomic execution environment of Quarkus, Camel K is able to mix serverless features such as auto-scaling, scaling to zero and event-based communication with the “legendary” integration capabilities of Apache Camel.
We will show how Camel K works under the hood. With some examples, we’ll also demonstrate how Camel K makes it easy is to connect cloud services or enterprise applications using some of the 250+ components that Camel provides.
Microservices testing and automation
DevOps has grown in popularity in recent years, particularly in (software) companies that want to reduce lead time to be measured in days/weeks instead of months/years. If you want to make sure your software does the right things and does things right, you need to test it implacably. The big problem is that companies see is the testing phase as the bottleneck—and it is—of the process slowing down product release. To change that, we need a new way of testing our applications, making the release process of an application a testing process as well and involving the QA from the beginning within the team. QAs are not a separate team anymore (DevTestOps). How is the testing pyramid affected? In this session, we will not only describe, but actively demonstrate several techniques that you can use immediately to start testing in production and speed up your release cycle to unimaginable limits.
Burr Sutter is currently Red Hat’s Director of Developer Experience. A Java Champion since 2005 and former president of the Atlanta Java User Group, he founded the DevNexus conference, now the second largest U.S. Java event, with the aim of making access to the world’s leading developers affordable to the developer community. Burr is a featured speaker at technology events around the globe as a lifelong developer advocate, community organizer, and technology evangelist. When not speaking abroad, Burr passionately creates and orchestrates highly interactive live demo keynotes at Red Hat Summit, the company’s premier annual event.
Edson Yanaga, Red Hat’s Director of Developer Experience, is a Java Champion and a Microsoft MVP. He is also a published author and a frequent speaker at international conferences, discussing Java, microservices, cloud computing, DevOps, and software craftsmanship. Yanaga considers himself a software craftsman, and is convinced that we all can create a better world for people with better software. His life’s purpose is to help developers worldwide to deliver better software quickly and safely—and he can even call that a job!
Kamesh is a Principal Software Engineer and a Director of Developer Experience at Red Hat. He actively educates on Kubernetes/OpenShift, service mesh, and serverless technologies. With a career spanning close to two decades, most of Kamesh’s career is with the services industry helping various enterprise customers build Java-based solutions. For more than a decade, Kamesh has contributed to open source projects and he now actively contributes to projects such as Knative, Minishift, Eclipse Che, Fabric8, and more. His developer philosophy is: Learn more, do more, and share more!
Quarkus co-founder, Hibernate team member since 10+ years, with a strong interest in scalability and performance improvements, integration with NoSQL, Lucene and Caching technologies. After questioning Hibernate as a user first, then as contributor, Sanne now leads the Hibernate project in his role at Red Hat to implement various crazy improvements and optimizations. He has lived in Holland, Italy, the Caribbean islands, Chile, Portugal and, currently, in London.
Alex is a Software Engineer at Red Hat in the Developers group. He is passionate about the Java world and software automation, and he believes in the open source software model.
Alex is the creator of NoSQLUnit project, member of JSR 374 (Java API for JSON Processing) Expert Group, the co-author of Testing Java Microservices book for Manning and the Istio RefCard, and contributor to several open source projects. A Java Champion since 2017 and international speaker, he has talked about new testing techniques for microservices, continuous delivery in the 21st century, and Java.
Bilgin is a principal architect at Red Hat and committer at Apache for Camel, OFBiz, and Isis projects. He is a blogger, speaker, open source enthusiast, and the author of Camel Design Patterns and Instant Apache Camel Message Routing books. He is the co-author of the recently released Kubernetes Patterns book.
In his day job, Bilgin enjoys mentoring, training, and leading teams to be successful with application integration, distributed systems, microservices, DevOps, and cloud-native applications.
Nicola Ferraro is a senior software engineer at Red Hat, Apache Camel PMC member, creator of Camel K, Knative collaborator, Syndesis committer, and contributor on the Fabric8 development tools for Kubernetes.