A lot is happening in world of JVMs lately. Oracle changed its support policy roadmap for the Oracle JDK. GraalVM has been open sourced. AdoptOpenJDK provides binaries and is supported by (among others) Azul Systems, IBM and Microsoft. Large software vendors provide their own supported OpenJDK distributions such as Amazon (Coretto), RedHat and SAP. Next to OpenJDK there are also different JVM implementations such as Eclipse OpenJ9, Azul Systems Zing and GraalVM (which allows creation of native images). Other variables include different versions of the JDK used and whether you are running the JDK directly on the OS or within a container. Next to that, JVMs support different garbage collection algorithms which influence your application behavior. There are many options for running your Java application and choosing the right ones matters! Performance is often an important factor to take into consideration when choosing your JVM. How do the different JVMs compare with respect to performance when running different Microservice implementations? Does a specific framework provide best performance on a specific JVM implementation? I've performed elaborate measures of (among other things) start-up times, response times, CPU usage, memory usage, garbage collection behavior for these different JVMs with several different frameworks such as Reactive Spring Boot, regular Spring Boot, MicroProfile, Quarkus, Vert.x, Akka. During this presentation I will describe the test setup used and will show you some remarkable differences between the different JVM implementations and Microservice frameworks. Also differences between running a JAR or a native image are shown and the effects of running inside a container. This will help choosing the JVM with the right characteristics for your specific use-case!
Performance of Microservice frameworks on different JVMsMaarten Smeets
Ā
A lot is happening in world of JVMs lately. Oracle changed its support policy roadmap for the Oracle JDK. GraalVM has been open sourced. AdoptOpenJDK provides binaries and is supported by (among others) Azul Systems, IBM and Microsoft. Large software vendors provide their own supported OpenJDK distributions such as Amazon (Coretto), RedHat and SAP. Next to OpenJDK there are also different JVM implementations such as Eclipse OpenJ9, Azul Systems Zing and GraalVM (which allows creation of native images). Other variables include different versions of the JDK used and whether you are running the JDK directly on the OS or within a container. Next to that, JVMs support different garbage collection algorithms which influence your application behavior. There are many options for running your Java application and choosing the right ones matters! Performance is often an important factor to take into consideration when choosing your JVM. How do the different JVMs compare with respect to performance when running different Microservice implementations? Does a specific framework provide best performance on a specific JVM implementation? I've performed elaborate measures of (among other things) start-up times, response times, CPU usage, memory usage, garbage collection behavior for these different JVMs with several different frameworks such as Reactive Spring Boot, regular Spring Boot, MicroProfile, Quarkus, Vert.x, Akka. During this presentation I will describe the test setup used and will show you some remarkable differences between the different JVM implementations and Microservice frameworks. Also differences between running a JAR or a native image are shown and the effects of running inside a container. This will help choosing the JVM with the right characteristics for your specific use-case!
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootMichel Schildmeijer
Ā
Improvement and new insights on getting the best of operational performance of an Oracle Fusion Middleware platform. At customers, usually their technology stack is build on various components of Oracle, such as databases, WebLogic, Oracle Service Bus, SOA and BPM, ADF, WebCenter and so on. This can be a very complicated stack and out of the box parameters are not enough to give an overall good performance and low error rates. This presentation tells you the ins and outs on every layer regarding performance and diagnose methods and tools.
Expect the unexpected: Anticipate and prepare for failures in microservices b...Bhakti Mehta
Ā
This session covers best practices for building resilient, stable RESTful services that can survive failures in distributed environments, such as transient impulses, random load, stress, or failures from some dependent components. It focuses on various techniques such as circuit breakers, bulkheads, and fail fast to ensure that services stay up and keep running despite failures.
Performance of Microservice frameworks on different JVMsMaarten Smeets
Ā
A lot is happening in world of JVMs lately. Oracle changed its support policy roadmap for the Oracle JDK. GraalVM has been open sourced. AdoptOpenJDK provides binaries and is supported by (among others) Azul Systems, IBM and Microsoft. Large software vendors provide their own supported OpenJDK distributions such as Amazon (Coretto), RedHat and SAP. Next to OpenJDK there are also different JVM implementations such as Eclipse OpenJ9, Azul Systems Zing and GraalVM (which allows creation of native images). Other variables include different versions of the JDK used and whether you are running the JDK directly on the OS or within a container. Next to that, JVMs support different garbage collection algorithms which influence your application behavior. There are many options for running your Java application and choosing the right ones matters! Performance is often an important factor to take into consideration when choosing your JVM. How do the different JVMs compare with respect to performance when running different Microservice implementations? Does a specific framework provide best performance on a specific JVM implementation? I've performed elaborate measures of (among other things) start-up times, response times, CPU usage, memory usage, garbage collection behavior for these different JVMs with several different frameworks such as Reactive Spring Boot, regular Spring Boot, MicroProfile, Quarkus, Vert.x, Akka. During this presentation I will describe the test setup used and will show you some remarkable differences between the different JVM implementations and Microservice frameworks. Also differences between running a JAR or a native image are shown and the effects of running inside a container. This will help choosing the JVM with the right characteristics for your specific use-case!
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootMichel Schildmeijer
Ā
Improvement and new insights on getting the best of operational performance of an Oracle Fusion Middleware platform. At customers, usually their technology stack is build on various components of Oracle, such as databases, WebLogic, Oracle Service Bus, SOA and BPM, ADF, WebCenter and so on. This can be a very complicated stack and out of the box parameters are not enough to give an overall good performance and low error rates. This presentation tells you the ins and outs on every layer regarding performance and diagnose methods and tools.
Expect the unexpected: Anticipate and prepare for failures in microservices b...Bhakti Mehta
Ā
This session covers best practices for building resilient, stable RESTful services that can survive failures in distributed environments, such as transient impulses, random load, stress, or failures from some dependent components. It focuses on various techniques such as circuit breakers, bulkheads, and fail fast to ensure that services stay up and keep running despite failures.
Java and in particular OSGi are now very important parts of the Notes/Domino app dev model. In this session, you will learn what techniques can be utilized to process background jobs for XPages applications. Whether you want to replace your existing agents with Domino OSGi Tasklet Services (DOTS) or use Eclipse Jobs to run time-consuming routines without interrupting the use of your application - we will show you real life examples of why and how. You should also consider attending this session to hear about some suprises you don't want to miss...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...jaxLondonConference
Ā
Presented at JAX London 2013
Vert.x is a lightweight, high performance, application platform for the JVM that's designed for modern mobile, web, and enterprise applications. The recent Vert.x 2.0 release marks a coming of age for Vert.x, as it progresses to a fully independent project. We'll dive into the Vert.x 2.0 release and show how the powerful new module system enables a Vert.x ecosystem by allowing modules to be re-used via Maven and Bintray repositories. You'll also learn about how better build tool and IDE integration makes developing applications with Vert.x a breeze.
The Kubernetes WebLogic revival (part 1)Simon Haslam
Ā
The first of two sessions Martien & I presented at UKOUG Techfest19 in Brighton, UK about:
(a) Running WebLogic in containers, managed by Kubernetes
(b) Oracle's Container Engine for Kubernetes (OKE) - Oracle Cloud's managed k8s service
Stay productive while slicing up the monolith Markus Eisele
Ā
DevNexus 2017
Microservices-based architectures are en-vogue. The last couple of
years we have learned how the thought-leaders implement them, and
every other week we have heard about how containers and
Platform-as-a-Service offerings make them ultimately happen.
The problem is that the developers are almost forgotten and left alone
with provisioning and continuous delivery systems, containers and
resource schedulers, and frameworks and patterns to help slice
existing monoliths. How can we get back in control and efficiently
develop them without having to provision complete production-like
environments locally, by hand?
All the new buzzwords, frameworks, and hyped tools have made us forget
ourselvesāJava developersāand what it means to be productive and have
fun building systems. The problem that we set out to solve is: how can
we run real-world Microservices-based systems on our local development
machines, managing provisioning, and orchestration of potentially
hundreds of services directly from a single command line tool, without
sacrificing productivity enablers like hot code reloading and instant
turnaround time?
During this talk, youāll experience first-hand how much fun it can be
to develop large-scale Microservices-based systems. You will learn a
lot about what it takes to fail fast and recover and truly understand
the power of a fully integrated Microservices development environment.
Presentation Abstract:
Are your applications running on Java 8? Thinking about switching your application to run on Java 11 and wondering about where to start? Come to this session to learn about the most impactful changes that went into Java 11 and what you will need to do to move your application to run on Java 11. Topics will include the removal of APIs (such as Java EE packages) and behavior changes resulting from moving an application from running on Java 8 to running on Java 11. We will also go over tools to use that will help you identify potential issues within your application and how to resolve them.
My presentation on Maven for the Durban Java User Group meeting, held at Thumbtribe's offices. As I'm not happy with everything as-is, my aim is to improve the presentation with an accompanying project which I need to set up in a proper environment so that it can serve as a fully functional example. To follow progress, keep an eye on the following blog post:
http://johanmynhardt.blogspot.com/2011/05/maven-from-scratch-to-production.html
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Odinot Stanislas
Ā
(FR)
Introduction trĆØs sympathique autour des environnements Cloud avec un focus particulier sur la virtualisation et les containers (Docker)
(ENG)
Friendly presentation about Cloud solutions with a focus on virtualization and containers (Docker).
Author: Nicholas Weaver ā Principal Architect, Intel Corporation
Containers vs. VMs: It's All About the Apps!Steve Wilson
Ā
There has been much hype about whether Containers will replace Virtual Machines for use in Cloud architectures. Weāll look at the strengths of each technology and how they apply in real-world usage. By taking a top-down (Application-first) approach to requirements analysis, versus a bottoms-up (Infrastructure-first) approach, we can see how unique architectures will emerge that can balance the needs of Developers, DevOps and corporate IT.
Architecting for failure - Why are distributed systems hard?Markus Eisele
Ā
Devnexus 2017
As we architect our systems for greater demands, scale, uptime, and performance, the hardest thing to control becomes the environment in which we deploy and the subtle but crucial interactions between complicated systems. And microservices obviously are the way to go forward with those complicated systems. But what makes it so hard to build them? And why should you embrace failure instead of doing what we can do best: Preventing failure. This talk introduces you to the problem domain of a distributed system which consists of a couple of microservices. It shows how to build, deploy and orchestrate the chaos and introduces you to a couple of patterns to prevent and compensate failure.
Handling 1 Billion Requests/hr with Minimal Latency Using DockerMatomy
Ā
Head of Mobfox DevOps, David Spitzer, explains how Mobfox used Docker to scale both the services and development team to achieve low latency networking and auto scaling. He discusses the ecosystem back in early 2015 and today, what were the challenges, and how Mobfox overcame them.
Microservices with Terraform, Docker and the Cloud. IJug Chicago 2017-06-06Derek Ashmore
Ā
Much has been written about how to write Microservices, but not enough about how to effectively deploy and manage them. Microservices architecture multiplies the number of deployables IT has to manage by at least 10x. In that world, tooling to manage cloud deployments and related infrastructure becames essential for success. Terraform and Docker are increasingly being leveraged to facilitate microservice environments. Terraform has become becoming the leading coding framework for building and managing change in cloud environments.
Attendees will learn best practices for deploying and managing microservices in production. We will leverage true "infrastructure as code" using Terraform. That code is easily re-used and make changes easy. That code makes it easy to deploy and scale software including Docker images. You will learn not only how to establish that environment initially, but how changes can be effectively managed. I'll cover best practices and common mistakes along the way. AWS will be used as the cloud provider, but Terraform operates seemlessly on other cloud environments as well.
This session is targeted at architects and team leads. This session is intended to be platform-generic.
Java and in particular OSGi are now very important parts of the Notes/Domino app dev model. In this session, you will learn what techniques can be utilized to process background jobs for XPages applications. Whether you want to replace your existing agents with Domino OSGi Tasklet Services (DOTS) or use Eclipse Jobs to run time-consuming routines without interrupting the use of your application - we will show you real life examples of why and how. You should also consider attending this session to hear about some suprises you don't want to miss...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...jaxLondonConference
Ā
Presented at JAX London 2013
Vert.x is a lightweight, high performance, application platform for the JVM that's designed for modern mobile, web, and enterprise applications. The recent Vert.x 2.0 release marks a coming of age for Vert.x, as it progresses to a fully independent project. We'll dive into the Vert.x 2.0 release and show how the powerful new module system enables a Vert.x ecosystem by allowing modules to be re-used via Maven and Bintray repositories. You'll also learn about how better build tool and IDE integration makes developing applications with Vert.x a breeze.
The Kubernetes WebLogic revival (part 1)Simon Haslam
Ā
The first of two sessions Martien & I presented at UKOUG Techfest19 in Brighton, UK about:
(a) Running WebLogic in containers, managed by Kubernetes
(b) Oracle's Container Engine for Kubernetes (OKE) - Oracle Cloud's managed k8s service
Stay productive while slicing up the monolith Markus Eisele
Ā
DevNexus 2017
Microservices-based architectures are en-vogue. The last couple of
years we have learned how the thought-leaders implement them, and
every other week we have heard about how containers and
Platform-as-a-Service offerings make them ultimately happen.
The problem is that the developers are almost forgotten and left alone
with provisioning and continuous delivery systems, containers and
resource schedulers, and frameworks and patterns to help slice
existing monoliths. How can we get back in control and efficiently
develop them without having to provision complete production-like
environments locally, by hand?
All the new buzzwords, frameworks, and hyped tools have made us forget
ourselvesāJava developersāand what it means to be productive and have
fun building systems. The problem that we set out to solve is: how can
we run real-world Microservices-based systems on our local development
machines, managing provisioning, and orchestration of potentially
hundreds of services directly from a single command line tool, without
sacrificing productivity enablers like hot code reloading and instant
turnaround time?
During this talk, youāll experience first-hand how much fun it can be
to develop large-scale Microservices-based systems. You will learn a
lot about what it takes to fail fast and recover and truly understand
the power of a fully integrated Microservices development environment.
Presentation Abstract:
Are your applications running on Java 8? Thinking about switching your application to run on Java 11 and wondering about where to start? Come to this session to learn about the most impactful changes that went into Java 11 and what you will need to do to move your application to run on Java 11. Topics will include the removal of APIs (such as Java EE packages) and behavior changes resulting from moving an application from running on Java 8 to running on Java 11. We will also go over tools to use that will help you identify potential issues within your application and how to resolve them.
My presentation on Maven for the Durban Java User Group meeting, held at Thumbtribe's offices. As I'm not happy with everything as-is, my aim is to improve the presentation with an accompanying project which I need to set up in a proper environment so that it can serve as a fully functional example. To follow progress, keep an eye on the following blog post:
http://johanmynhardt.blogspot.com/2011/05/maven-from-scratch-to-production.html
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Odinot Stanislas
Ā
(FR)
Introduction trĆØs sympathique autour des environnements Cloud avec un focus particulier sur la virtualisation et les containers (Docker)
(ENG)
Friendly presentation about Cloud solutions with a focus on virtualization and containers (Docker).
Author: Nicholas Weaver ā Principal Architect, Intel Corporation
Containers vs. VMs: It's All About the Apps!Steve Wilson
Ā
There has been much hype about whether Containers will replace Virtual Machines for use in Cloud architectures. Weāll look at the strengths of each technology and how they apply in real-world usage. By taking a top-down (Application-first) approach to requirements analysis, versus a bottoms-up (Infrastructure-first) approach, we can see how unique architectures will emerge that can balance the needs of Developers, DevOps and corporate IT.
Architecting for failure - Why are distributed systems hard?Markus Eisele
Ā
Devnexus 2017
As we architect our systems for greater demands, scale, uptime, and performance, the hardest thing to control becomes the environment in which we deploy and the subtle but crucial interactions between complicated systems. And microservices obviously are the way to go forward with those complicated systems. But what makes it so hard to build them? And why should you embrace failure instead of doing what we can do best: Preventing failure. This talk introduces you to the problem domain of a distributed system which consists of a couple of microservices. It shows how to build, deploy and orchestrate the chaos and introduces you to a couple of patterns to prevent and compensate failure.
Handling 1 Billion Requests/hr with Minimal Latency Using DockerMatomy
Ā
Head of Mobfox DevOps, David Spitzer, explains how Mobfox used Docker to scale both the services and development team to achieve low latency networking and auto scaling. He discusses the ecosystem back in early 2015 and today, what were the challenges, and how Mobfox overcame them.
Microservices with Terraform, Docker and the Cloud. IJug Chicago 2017-06-06Derek Ashmore
Ā
Much has been written about how to write Microservices, but not enough about how to effectively deploy and manage them. Microservices architecture multiplies the number of deployables IT has to manage by at least 10x. In that world, tooling to manage cloud deployments and related infrastructure becames essential for success. Terraform and Docker are increasingly being leveraged to facilitate microservice environments. Terraform has become becoming the leading coding framework for building and managing change in cloud environments.
Attendees will learn best practices for deploying and managing microservices in production. We will leverage true "infrastructure as code" using Terraform. That code is easily re-used and make changes easy. That code makes it easy to deploy and scale software including Docker images. You will learn not only how to establish that environment initially, but how changes can be effectively managed. I'll cover best practices and common mistakes along the way. AWS will be used as the cloud provider, but Terraform operates seemlessly on other cloud environments as well.
This session is targeted at architects and team leads. This session is intended to be platform-generic.
The venerable Servlet Container still has some performance tricks up its sleeve - this talk will demonstrate Apache Tomcat's stability under high load, describe some do's (and some don'ts!), explain how to performance test a Servlet-based application, troubleshoot and tune the container and your application and compare the performance characteristics of the different Tomcat connectors. The presenters will share their combined experience supporting real Tomcat applications for over 20 years and show how a few small changes can make a big, big difference.
In an increasingly competitive marketplace, speed and business agility are paramount. And integration between customer-facing systems and back-end applications is more crucial than ever.
At this event, you'll learn how open source software built by communities, like Apache Camel, Docker, Kubernetes, OpenShift Origin, and Fabric8, can help organizations integrate services and establish effective continuous integration and delivery (CI/CD) pipelines.
This presentation, given at the Fort Worth .NET User Group on 19 Sept. 2017, talks about serverless technology: What it is, when it's best to use, its features and limitations. It specifically focuses on Azure Functions and Azure Logic Apps.
Simple tweaks to get the most out of your jvmJamie Coleman
Ā
Many developers donāt think about the JVM level when creating applications. It is something that just simply works. Now more applications are becoming cloud-native and we have JVMās running in every microservice container, each performance gain can have massive benefits when scaled up. Some tweaks are very easy to implement and can have huge impacts on start-up time and performance of your applications. This talk will go through all the different JVM options and give you some easy and simple advice on how to get the most out of your JVM to save not only money but also energy on the cloud.
Tips to deploy a production grade Kubernetes cluster using SUSE CaaS Platfrom v3.
Created joinly with my colleague Martin Weiss to be used on SUSECON 2019
Overview session of Microsoft's Azure Service Fabric Overview (v1.5.175), delivered at AzurePT community event in Lisbon, held March 26. The session describes all the main components of the platform, with a focus on its architecture.
Serverless architectures let you build and deploy applications and services with infrastructure resources that require zero administration. In the past, you had to provision and scale servers to run your application code, install and operate distributed databases, and build and run custom software to handle API requests. Now, AWS provides a stack of scalable, fully-managed services that eliminates these operational complexities.
In this session, you will learn about the benefits of serverless architectures and the basics of the serverless stack AWS provides. We will also walk through how you can use serverless architectures for everything from data processing to mobile and web backends.
AWS DevDay San Francisco, June 21, 2016.
Presenter: Jeremy Edberg, Co-Founder, CloudNative, & AWS Community Hero
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...NETWAYS
Ā
They provide the workload isolation and security advantages of VMs. but at the same time maintain the speed of deployment and usability of containers.by using kata containers, instead of namespace, small virtual machines are created on the kernel and be strongly isolated. The technology of Kata Containers is based on KVM hypervisor. Thatās why the level of isolation is equivalent to typical hypervisors. This session will focus on a live production phase when choosing kata instead of docker, and why they are preferable
Although containers provides software-level isolation of resources, the kernel needs to be shared. Thatās why the isolation level in terms of security is not so high when compared with hypervisors.This learns to shift from Docker as the de facto standard to Kata containers and learn how to obtain higherl level of security
A Public Cloud Based SOA Workflow for Machine Learning Based Recommendation A...Ram G Athreya
Ā
Over the past decade the field of Cloud Computing has been the focus of intensive research. In this paper we propose a framework that will simulate the architectural setup of a cloud environment and examine how it can leverage Apriori and Sequential Pattern based recommendation algorithms through R. Furthermore, we present a multi layered application encompassing its backend architecture, user interface built using the responsive web design technique and its development workflow. The proposed system was also exhaustively load tested using Apache JMeter to ensure its reliability at scale and the experimental results are presented.
Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. In this post, Vedamanikandan explains continuous integration.
Similar to Performance of Microservice Frameworks on different JVMs (20)
Google jib: Building Java containers without DockerMaarten Smeets
Ā
In this quick introduction to Google Jib I'll show what it solves, how you can use it and how it compares to some other solutions. Also see https://www.youtube.com/watch?v=vl-U9m8EXT8
Applications are usually deployed inside containers. A container consists of libraries and tools which allow the application to run inside. Since there can be exploitable vulnerabilities, it is not only important to keep your application up to date but also the container it runs in. There are various tools available to scan container images for those vulnerabilities. I decided to give Anchore Engine a try and create this presentation to give an overview to colleagues. Also I created a Katacoda scenario which allows you to tryout the Anchore Engine quickstart without having to setup your own Docker environment. Anchore Engine is open source and provides several integration options which make using it easy, such as a Jenkins plugin and a Kubernetes Admission Controller.
JDBC has been the de-facto standard for accessing relational databases for a long time. Times are however changing. In cloud environments the pay-per-use model is popular. If you can use resources more efficiently, you can save money! In addition, when running applications at cloud-scale, the number of concurrent requests which hit your services can skyrocket. Can JDBC handle such concurrency efficiently? Answer: No. The time has come to look beyond JDBC!
For services, reactive frameworks are becoming more popular. These frameworks can make more efficient use of resources due to their non-blocking nature, especially at high concurrency. Now with R2DBC relational databases can also be accessed using a reactive API! This means more efficient use of CPU and memory and better response times and throughput at high concurrency.
A tempting story but there are of course many questions
- Is R2DBC mature enough to implement?
- Which R2DBC drivers are available?
- Is framework support available?
- What do you need to do in order to implement R2DBC?
- Does it improve performance enough to make the switch worthwhile?
- Do I need to have a completely non-blocking stack to benefit from using R2DBC?
To answer these questions and more, I've created several implementations using R2DBC and JDBC with Spring Web MVC and Spring WebFlux and put them to the test. I looked at how to implement R2DBC and measured resource usage, throughput, and responsetimes. Interested in the results? Hint: R2DBC is pretty cool!
Performance Issue? Machine Learning to the rescue!Maarten Smeets
Ā
t can be difficult to determine how to improve performance of microservices. There are many factors you can vary but which factor will be the one having most impact? During this presentation, a method using the random forest machine learning algorithm will be applied in order to help improve performance of a microservice running inside a JVM. Several measures are taken such as thoughput and response times. Java version, JVM supplier, heap, garbage collection algorithm and microservice framework are all varied. Which factor is most important in determining the response time and throughput of the services? The Random Forest algorithm will be introduced to solve this challenge. Not only will this presentation give some useful suggestions for improving the performance of microservices but will also introduce a novel way to take on the challenge of performance tuning which can be applied to other use-cases. This presentation is especially interesting to developers and architects.
In VirtualBox it can sometimes challenging to choose the correct networking solution to fit the needs of your specific usecase. In this presentation, the different options are explained and some example cases are discussed. Access between guests, host and other members of the network is elaborated. After this presentation you will be better able to choose the right solution for different usecases and understand the different benefits and drawbacks of every option.
Microservices on Application Container Cloud ServiceMaarten Smeets
Ā
ACCS provides the perfect cloud service to develop microservices on! In this presentation I'll demonstrate some of recent the highlights for developers such as Python support, integration options with the Event Hub and I'll go into detail for using the Application Caches to increase performance. Spring Boot will be used extensively in this presentation. After this presentation you will have a better understanding of the options provided by ACCS to create microservices quick and easily.
WebLogic Stability; Detect and Analyse Stuck ThreadsMaarten Smeets
Ā
Stuck threads are a major cause for stability issues of WebLogic Server environments. Often people in operations and development who are confronted with stuck threads, are at a loss what to do. In this presentation we will talk about what stuck threads actually are and how you can detect them. We will elaborate on how you can get to the root cause of a stuck thread and which tools can help you with that. In order to reduce the impact of having stuck threads in an application, we will talk about using workmanagers. In order to prevent stuck threads we will illustrate several patterns which can be implemented in infrastructure and applications. Next time you see a stuck thread, you will know what to do!
Redis is an open source in memory database which is easy to use. In this introductory presentation, several features will be discussed including use cases. The datatypes will be elaborated, publish subscribe features, persistence will be discussed including client implementations in Node and Spring Boot. After this presentation, you will have a basic understanding of what Redis is and you will have enough knowledge to get started with your first implementation!
All you need to know about transport layer securityMaarten Smeets
Ā
Many people think that using HTTPS to offer your site or service to clients makes you secure from eavesdroppers and people trying to manipulate your network traffic. Think again! In this presentation I'll dive into transport layer security. I'll elaborate on what you can achieve with SSL such as authentication, encryption and integrity and how you can achieve it. I'll talk about the client-server handshake, identity and trust, one-way and two-way SSL, keys and keystores and cipher suite choice. By means of several examples, I'll show what it can mean if you make the wrong choices in on premises and cloud scenario's. This presentation is relevant for anyone involved in securing connections between client and server using TLS and people interested in learning more about the topic of TLS in general.
Webservice security considerations and measuresMaarten Smeets
Ā
Security is a hot topic, especially with new laws concerning how to deal with personally identifiable information (PII) and the journey to the cloud many organisations are making. When implemented correctly, security measures can protect your company from people trying to spy on you or manipulate your systems. Security can be implemented at different layers. In this presentation I'll zoom in on webservices and which choices there are to make on the application layer and transport layer. This spans area's like authentication, keys/keystores, OWSM policy choices, WebLogic SSL configuration and cipher suite choices. Security measures are even more relevant in cloud integration scenario's since services might not just be accessible from your internal network. After this presentation, architects and developers will have a good idea on how to quickly get started with taking security measures.
WebLogic Scripting Tool allows easy management of many Weblogic Server based products. Oracle has strategically implemented WLST in many products to make provisioning and configuring of environments easy and reproducible. This among other things enables tools like Chef and Puppet to do their magic. WLST is based on Jython. Jython is an implementation of Python running on the Java VM. Both Python and the Java VM provide many options for extending WLST functionality beyond what is commonly done. This will be elaborated and demonstrated with several advanced use cases and their implementations. This technical presentation will provide you with the knowledge to get most out of your investment in Oracle products!
At OOW 2015 Oracle has released SOA Suite 12.2.1. This new release provides several interesting new features for developers such as end-to-end REST support, JavaScript support and an XSLT debugger. There are also several new features useful for the operations department such as Integration Workload Statistics, Circuit breaker, In-Memory SOA and WebLogic parallel deployments. In this presentation I will explain and demonstrate these new features and provide several use-cases were customers can greatly benefit by implementing them. This presentation is especially useful for developers, people in operations and architects to help them realize the benefits of implementing SOA Suite 12.2.1.
It is not that hard to build your own Cloud Adapter! You can enable a citizen developer to do their own integrations using ICS and also use the same adapter when developing on premise SOA solutions. Oracle enables you to sell your product in the Marketplace, further increasing your return of investment. I will show you the different designtime and runtime components which need to be implemented, how JDeveloper extension development works and how you can test your adapter on ICS locally using the ICS execution agent. I will share common pitfalls when starting adapter development to help you get a headstart when you are considering creating your own. This presentation will help developers and architects understand Cloud Adapters and when you should consider creating one yourself!
Login information and group memberships (identity) often are centrally managed in Enterprises. Many systems use this information to, for example, achieve Single Sign On (SSO) functionality. Surprisingly, access to the Weblogic Server Console and applications is often not centrally managed. I will explain why centralizing management of these identities, in addition to increased security, quickly starts reducing operational cost and even increases developer productivity. During a demonstration, I will introduce several methods for debugging authentication using an external authentication provider in order to lower the bar to apply this pattern. This technically oriented presentation is especially useful for people working in operations managing Weblogic Servers.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
Ā
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Ā
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Ā
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Ā
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
Ā
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. Whatās changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Ā
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But thereās more:
In a second workflow supporting the same use case, youāll see:
Your campaign sent to target colleagues for approval
If the āApproveā button is clicked, a Jira/Zendesk ticket is created for the marketing design team
Butāif the āRejectā button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
DevOps and Testing slides at DASA ConnectKari Kakkonen
Ā
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
4. Who am I?
Who is Maarten?
ā¢ Principal Consultant
Software Architect at AMIS / Conclusion
ā¢ Several certifications
SOA, BPM, MCS, Java, SQL, PL/SQL,
Mule, AWS, etc
ā¢ Enthusiastic presenter and blogger
http://javaoraclesoa.blogspot.com
@MaartenSmeetsNL
https://nl.linkedin.com/in/smeetsm
Maarten.Smeets@amis.nl
5. What is the CJIB
ā¢ The Central Judicial Collection Agency
part of the Ministry of Justice and Security in the Netherlands
ā¢ The CJIB is responsible for collecting a range of different fines, such as traffic
fines and punitive orders.
ā¢ Works together with EU Member States when it comes to collecting fines.
ā¢ Plays a key enforcement role in decisions relating to criminal matters, such as
ā¢ court rulings
ā¢ decisions made by one of the Public Prosecution Serviceās public
prosecutors
ā¢ Located in Leeuwarden, Friesland
Where do I work?
6. Traffic fines
9.223.477
Fees cost awards
3.846
CJIB: Key figures 2017
Fines imposed by the court
57.900
Compensation measures
13.563
Aid with problematic debts
Transaction proposals
4.575Principal
Custodial sentences
13.485
Administrative premium
2.081.270
Public Prosecutor
Service settlements
284.642
Coordination of community service
36.630
Incoming European fines
1.038
Outgoing European fines
49.766
Confiscation measures
1.690
Conditional release
1.043
Administrative fines
40.608
Supervision
15.021
Converted community
service sentences
7.657
Youth authority
5.258
7. The CJIB and Java
ā¢ 1400 people. ICT department of around 325 people. 100 Java developers
ā¢ 30 teams using Scrum and SAFe. Tight integration between business and IT
ā¢ Solid CI/CD pipelines and release train
ā¢ Automated testing using Cucumber, Gherkin
ā¢ Code quality checks using SonarQube
ā¢ Bamboo, Puppet, Git, Maven, Vault
ā¢ Running on Redhat 7, OpenJDK 8 with Spring Boot Microservices on Jetty
ā¢ Innovation lab
ā¢ Blockchain
ā¢ Machine Learning
CJIB ICT
8. Disclaimer
The performance tests mentioned in this presentation were conducted with intention to obtain information on
what performance differences can be expected from running various frameworks in various JVMs using various
garbage collection algorithms. A best effort has been made to conduct an unbiased test. Still, performance
depends on many parameters such as hardware, specifics of the framework implementation, the usage of
different back-ends, concurrency, versions of libraries, OS, virtualization and various other factors. I cannot
provide any guarantees that the same values will be achieved with other than tested configurations. The use of
these results is at your own risk. I shall in no case accept liability for any loss resulting from the use of the results
or decisions based on them.
Let yourself be inspired and perform your own tests!
10. Code tested
Which framework parts are tested
ā¢ HTTP server
ā¢ Routing. Mapping of HTTP request to Java method
ā¢ Parsing of the URL for a GET request
ā¢ Creating a response object based on data from the request
ā¢ Serialize the response object to JSON
HTTP server
Routing
Request parsing
Response generation
Response serialization
Microservice frameworks
11. No framework
ā¢ Minimal implementation using Java SE code only
ā¢ No reflective code and no frameworks
ā¢ Easy native compilation
ā¢ Of course the fastest option which uses least resources
12. Microservice frameworks
Spring Boot
ā¢ Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you
can "just run".
ā¢ An opinionated view of the Spring platform and third-party libraries so you can get started with
minimum fuss. Most Spring Boot applications need very little Spring configuration.
ā¢ Supported by Pivotal / VMware
13. Microservice frameworks
Spring Boot Reactive / WebFlux
ā¢ Spring WebFlux is
ā fully non-blocking
ā supports Reactive Streams back pressure
ā and runs on such servers as Netty, Undertow, and Servlet 3.1+ containers
ā¢ Supported by Pivotal / VMware
14. Microservice frameworks
Spring Fu
ā¢ Spring Fu is
ā an incubator for Kofu (Ko for Kotlin, fu for functional)
ā provides a Kotlin API to configure Spring Boot applications programmatically
ā allows for native compilation on GraalVM while āregularā Spring does not
15. Microservice frameworks
Quarkus
ā¢ A Kubernetes Native Java stack tailored for GraalVM & OpenJDK HotSpot
crafted from the best of breed Java libraries and standards
ā¢ Extensions configure, boot and integrate a framework or technology into your Quarkus application.
These extensions also provide the right information to GraalVM for your application to compile
natively
ā¢ Supported by Red Hat / IBM
16. Microservice frameworks
Eclipse Vert.x
ā¢ Eclipse Vert.x is event driven and non blocking.
ā¢ You can use Vert.x with multiple languages including
Java, JavaScript, Groovy, Ruby, Ceylon, Scala and Kotlin.
ā¢ Vert.x is flexible and unopiniated
ā¢ Quarkus provides a Vert.x implementation
ā¢ Supported by the Eclipse foundation
17. Microservice frameworks
Akka
ā¢ Akka is a toolkit for building highly concurrent, distributed, and resilient message-driven applications
for Java and Scala
ā¢ Actors and Streams let you build systems that scale up, using the resources of a server more
efficiently, and out, using multiple servers
ā¢ Supported by Lightbend
18. Microservice frameworks
Micronaut
ā¢ A modern, JVM-based, full-stack framework for building
modular, easily testable microservice and serverless applications.
ā¢ Micronaut uses no reflection.
This makes it easier for Micronaut applications to run on GraalVM.
ā¢ You can run Spring applications as Micronaut applications
making native compilation possible (Micronaut for Spring)
ā¢ Supported by Object Computing
19. Microservice frameworks
Helidon
ā¢ Helidon SE
ā Microframework
ā Functional style
ā Reactive
ā Can be natively compiled
ā¢ Helidon MP
ā MicroProfile
ā Declarative style
ā CDI, JAX-RS, JSON-P
ā Cannot be natively compiled (CDI)
ā¢ Supported by Oracle
20. Microservice frameworks
Open Liberty. A Microprofile implementation
ā¢ An open forum to optimize Enterprise Java for a microservices architecture by innovating across multiple implementations and
collaborating on common areas of interest with a goal of standardization.
ā¢ Specifies the least number of Java Enterprise specifications APIs
required to build a microservice.
21. JVMs differ
ā¢ Licensing / support
ā¢ Memory usage / NUMA support
ā¢ Garbage collection algorithms
ā¢ Start-up caching
ā¢ Other features
JVMs
22. Test setup
Framework versions used Hardware used
ā¢ Intel Core i7-8700
ā¢ hexa-core
ā¢ 12 threads
ā¢ Max 4.6GHz
ā¢ 32Gb DDR4L (2400MHz)
OS used
ā¢ Running Linux Mint 19.1 (Tessa)
based on Ubuntu 18.04LTS (Bionic Beaver)
ā¢ Docker server 18.06.1-ce client 18.09.2
Framework Version HTTP server
Spring Boot 2.1.4 Tomcat
Spring Fu 0.0.5 Reactor Netty
WebFlux 2.1.4 Reactor Netty
Akka 2.12 10.1.8 Akka HTTP
Open Liberty 19.0.0.4+ Open Liberty
Vert.x 3.7.0 Vert.x
Quarkus 0.15.0 Reactor Netty
Helidon 1.1.1 Helidon webserver
My laptop
23. What did I do?
ā¢ Create minimal but comparable implementations for every framework
Java, Kotlin
ā¢ Create a script to loop over scenarios
JVMs, Microservice implementations, GC-algorithms, etc
Bash, Python
ā¢ Create multithreaded load generators and compare results
Python, Node/JavaScript
ā¢ Containerize the implementations; makes testing JVMs and resource isolation easy
Docker
ā¢ Summarize results (determine average, standard deviation, Prometheus results)
Bash (awk, sed, curl), Python, Apache Bench
ā¢ Run the setup under various conditions
First priming followed by 15 minutes per framework per JVM per variable (weeks of data)
ā¢ Visualize results
Python / Jupyter: pandas, numpy, pyplot
Test setup
24. Test setup response times
15m per test
Docker base
image with JVM
Microservice
framework fat JAR
Load generator
(Python)
Build and run container
JVM + framework
Load generation
runtest.sh
Loop over JVMs and frameworks
Start processes, clean up and summarize results
outputfile.txt
groupedbarplot.py
Data
validation
Data
description
Data
visualization
Generate and summarize data Validate and visualize
results.txt
(measures per JVM
per framework)
messages
25. Test setup throughput + feature importance
20s per test (many variables)
ā¢ No more containers
Effects of containers are slower startup and Docker NAT overhead
No more need to create and clean up containers -> simpler code
ā¢ Apache Bench for testing
No more split individual measures and summary data
Proven simple to use tool (also used to test Apache HTTPD)
ā¢ Python for running the tests / manage the processes
Easier than Bash for complex testing
ā¢ Jupyter for visualization instead of plain Python
Displaying graphs and developing the script in small bits is easier
ā¢ Looked at many variables
Average response time and throughput
ā Concurrent requests
1,4,8
ā CPU cores assigned to the JVM
1,4,8
ā Memory
512mb, 128mb, 50mb
ā Frameworks
10x
ā GC algorithms
all available for every JVM
ā JVMs
OpenJDK, Oracle JDK, OpenJ9, Zing
ā JVM version
8,11,12,13
26. Test setup throughput + feature importance
20s per test (many variables)
JVM
Microservice
framework fat JAR
Apache Bench
Build and run
JVM + framework
Load generation
run_test.py
Loop over all variables
Start processes, clean up
feature importance.ipynb
Data
validation
Data
description
Data
visualization
Generate and summarize data Validate and visualize
results.txt
messages
28. ā¢ Images available on Docker Hub
ā OpenJDK
ā AdoptOpenJDK
ā Oracle GraalVM
ā Amazon Corretto
ā Eclipse OpenJ9
ā Azul Zulu
ā¢ Images not available on Docker Hub
(due to license restrictions)
ā Oracle JDK
ā Azul Zing
Running in a container
29. Containers
Results
ā¢ Hosting on Docker gives worse response times than hosting locally
ā¢ Docker NAT is expensive!
ā¢ Application startup in Docker is worse
ā¢ Shared libraries need to be loaded
ā¢ JVM caching features are not available or difficult to implement
ā¢ Docker to Docker is not faster than local to Docker
ā¢ Everything outside a container is fastest
30.
31.
32. Microservice frameworks
Which framework gives best response times
ā¢ Akka gives worst performance. Vert.x best.
ā¢ Reactive frameworks (Akka, Vert.x, WebFlux)
do not outperform non-reactive frameworks
(Microprofile, Quarkus, Spring Boot, Spring Fu)
33. Java versions
What happens when migrating from Java 8 to Java 11?
ā¢ Java 8 and 11 behave very similarly for every framework
JDK 11 is slightly slower than 8
ā¢ OpenJ9 benefits most from going to JDK 11
Especially for Spring Boot and Akka
Responsetime[ms]
Java version
34. JVMs
Which JVM gives best response times?
ā¢ OpenJDK and Oracle JDK perform similarly for every framework
(no consistent winner)
ā¢ Substrate VM (native compilation) does worse than Oracle JDK and
OpenJDK
ā¢ OpenJ9 does worst for every framework followed by Zing
36. Application startup
Native compilation and startup
ā¢ Native compilation (Substrate VM) greatly reduces start-up time
ā¢ OpenJ9 is fastest to start outside a container
Shared classes cache (SCC) and dynamic ahead-of-time (AOT) compilation (?)
ā¢ Zing and OpenJ9 are slow to start in a container
Have not looked at Zing Compile Stashing and ReadyNow! features
ā¢ Quarkus, Helidon SE, Vert.x start approximately 5x faster than
Spring Boot and approximately 10x faster than Open Liberty!
37. ā¢ OpenJ9 Balanced
Divide memory in individually managed blocks. Good for NUMA
ā¢ OpenJ9 Metronone
Garbage collection occurs in small interruptible steps
ā¢ OpenJ9 OptAvgPause
Uses concurrent mark and sweep phases. Reduces pause times
ā¢ OpenJ9 OptThruPut
Optimizes on throughput but long pause times (app freezes)
ā¢ OpenJDK Shenandoah GC (Java 12)
A low pause time algorithm which does several tasks concurrently
No increased pause times with a larger heap
ā¢ OpenJDK / Oracle JDK ZGC (Java 12)
Scalable (concurrent) low latency garbage collector
ā¢ Zing C4 GC
Continuously Concurrent Compacting Collector
Pauseless garbage collection
ā¢ OpenJDK / Oracle JDK G1GC (default Java 9+)
Compact free memory space without lengthy pause times
ā¢ OpenJDK / Oracle JDK Parallel (default Java 8)
High-throughput GC which does not allow memory shrinking
ā¢ OpenJDK / Oracle JDK ConcMarkSweep (EOL?)
Designed for lower latency / pause times than other parallel collectors
ā¢ OpenJDK / Oracle JDK Serial GC
Single threaded GC which freezes the application during collection
ā¢ OpenJ9 Generational Concurrent policy
Minimize GC pause times without compromising throughput
GC algorithms
38. GC algorithms
How do GC algorithms influence response times (2Gb heap)
ā¢ OpenJ9 did worst (with and without sharedclasses)
Metronome does best for OpenJ9
ā¢ Every JVM (OpenJ9, Zing, OpenJDK)
achieves similar performance
for every available GC algorithm (at 2Gb heap!)
ā¢ OpenJDK Serial GC did best
OpenJDK
OpenJ9
Zing
39. GC algorithms 20mb heap
AdoptOpenJDK Eclipse OpenJ9
How do GC algorithms influence response times (20Mb heap)
ā¢ GC algorithms influence the minimal required memory
OpenJ9 Metronome GC gave out of memory
ā¢ When memory is limited
Do not use Shenandaoh (30ms) or parallel GC
OpenJ9 does better than AdoptOpenJDK
ā¢ Azul Zing cheated!
āWarning Maximum heap size rounded to 1024 MBā
ā¢ OpenJ9 with OptThruPu GC is the winner!
produces best performance on limited memory
ā¢ For AdoptOpenJDK Serial GC does best
40. ā¢ Which feature is most important in
determining response times and throughput?
ā Garbage collection algorithms
ā Concurrency
ā JVM supplier
ā JVM version
ā Microservice framework
ā CPUs
ā Memory
ā¢ Determine feature importance
using Random Forest Regression
Feature importance
42. ā¢ Framework choice is very important when considering performance (~70%)
Quarkus, Vert.x, Helidon SE
ā are fast to start
ā can be natively compiled
ā give best throughput and response times
ā¢ Low on memory: consider OpenJ9 and think about garbage collection
ā¢ Is performance important? Donāt run in a container!
ā Docker NAT is overhead (responsetime, throughput)
ā JVM caching features (Zing, OpenJ9) are hard to use (start-up)
Recommendations
43. ā¢ JDK 11 has slower start-up times and slightly worse performance than JDK 8
ā¢ OpenJDK variants (GraalVM, Corretto, AdoptOpenJDK, Zulu) and Oracle JDK
perform pretty similarly. Does not matter much which one you use when looking
at performance
ā¢ Native images have way faster startup time but worse response times.
Many frameworks and libraries do not support this yet
Cloud / Serverless environments are good use cases to consider native images
Recommendations
44. Choices the CJIB made
Framework: Spring Boot
Quick for development and can run standalone
Jetty servlet engine
Efficient in memory usage and performance
OpenJDK 8 on RedHat 7 (moving to Kubernetes)
CJIB already has RedHat licenses for support
RedHat is steward for OpenJDK 8 and 11
Spring Boot runs well on OpenJDK
Garbage Collection
Default as long as no performance issues
Choices the CJIB made
45. Suggestions
ā¢ Sources:
https://github.com/MaartenSmeets/jvmperformance
ā¢ Get help from the JVM and framework suppliers
Several got in touch and provided valuable feedback
ā¢ Do your own tests.
Your environment and application is unique. Results might differ
Questions?
@MaartenSmeetsNL
https://nl.linkedin.com/in/smeetsm
Maarten.Smeets@amis.nl
Thema: Het CJIB ā KengetallenHet innen van verkeersboetes is nog altijd een van de grootste taken van het CJIB. In 2017 inde het CJIB ruim 9,2 miljoen verkeersboetes. Naast verkeersboetes int het CJIB bijvoorbeeld ook strafrechtboetes, dit zijn door de rechter opgelegde boetes; bestuursrechtelijke premies, zoals het innen van de premie voor de zorgverzekering; of een bestuurlijke boete, bijvoorbeeld een boete die een bedrijf krijgt van de arbeidsinspectie als het niet voldoet aan veiligheidsnormen. Het CJIB kent inmiddels uiteenlopende taken op het gebied van Innen & Incasseren en Coƶrdineren & Informeren. (Bron cijfers: CJIB, Management Informatie 23 februari 2018).
Apache Bench is great for simple tests
Effects of running in containers
Python beats Bash for complex scripts
Python in Jupyter is handy for visualization