SlideShare a Scribd company logo
Elastic and Cloud-ready
Applications with Payara Micro
Ondro
Mihályi
| Payara Engineer
| @omihalyi
| @Payara_Fish
What is cloud ready?
●
Java EE or Spring
●
Amazon AWS or Openshift
●
SQL or NoSQL
●
REST or EJB
Who am I?
• Payara Engineer
• Java EE developer and lecturer
• Czech JUG leader
• Member of JCP and Eclipse foundation
• @omihalyi
Is it really about the
technology?
Cloud ready requirements
●
Pluggable persistence
●
Scalable according to the load
●
Low coupling
●
External configuration
●
Monitoring
●
Failure recovery
●
Security
There are more according to the 12 factor applications manifesto
Solution?
●
Simple API abstractions
●
Flexible implementations
●
Application logic first, against a solid foundation
●
Choose the technology later to meet the needs
Cloud-ready architecture
1. JCache
JCache
JCache
●
Temporary cache → optimization of frequent reads
●
Temporary key-value persistence, extensible to permanent with a read/write-
through policy
●
More than 10 implementations, supported also by Payara Micro and Spring
●
Distributed implementations allow scalable persistence
●
Can cache results of data-retrieval method calls
JCache API
@CacheResult
User getUserForName(String name) { /*do if not cached*/ }
@Inject
Cache<String, User> users;
users.put(user.getName(), user);
User user = users.get(name);
StreamSupport.stream(users.spliterator(), false)
.filter( e -> e.getValue().getAge() > 50)
.count()
JCache in Payara Micro
●
Powered by Hazelcast In-Memory Data Grid
●
Integration with Java EE using CDI injection and interceptors
●
Distributed, auto-discovery of nodes by default via multicast
– Data replication and even distribution
– Lite nodes without data in heap
●
Other Hazelcast features available via injected HazelcastInstance
●
Hazelcast Jet library for fast stream processing
2. Scalable runtime
JCache
What is Payara Micro?
• Executable JAR (~60MB disk size, ~30 MB RAM)
• Runs WAR and EAR from command line
• Fully embeddable (if you want…)
• Forms dynamically scalable cluster
• Web Profile “plus”
• On Maven Central
Scale dynamically
●
Run multiple instances with the same command
java -jar payara-micro.jar --deploy application.war
●
Package as a single executable JAR
java -jar payara-micro.jar --deploy application.war –outputUberJar
application.jar
●
Run embedded
PayaraMicro.getInstance().addDeployment("application.war").bootStrap()
●
Run using Maven plugin
3. RESTful
JCache RESTAPI
REST services in Java EE
●
JAX-RS endpoint
@GET
@Path("/{id}")
@Produces(MediaType.APPLICATION_JSON)
public User getUser(@PathParam("id")
Integer id) {
return userById(id);
}
●
JAX-RS client
User user = client.target(url).path("all").request().get(User.class)
REST services in Java EE
●
JSON binding
@JsonbNillable
public class User implements Serializable {
private String name;
@JsonbTransient
private String description;
@JsonbProperty("userId")
private long id;
}
- new in Java EE 8
- Payara Micro 5-Alpha
More about JSON-B:
http://json-b.net
4. Messaging
CDI events, really?
●
Part of Java EE API already
●
Easy to send and observe messages
●
Is it enough? What about:
– Sending events to other services
– Message broker to decouple services
– Transactions
CDI events, really?
●
Part of Java EE API already
●
Easy to send and observe messages
●
Is it enough? What about:
– Sending events to other services (nothing else is important initially)
– Message broker to decouple services
– Transactions
Events as an initial abstraction
●
Transfer events to other services manually
– Using distributed queues
– Using any message broker
●
Or use a solution provided by the cluster out of the box
Temporary solutions often become final solutions
(when sufficient)
Payara CDI event bus
●
Out of the box in messaging in Payara Micro
●
Uses already embedded Hazelcast
●
No configuration needed, events reliably dispatched to all observers
@Inject @Outbound
Event<MyPayload> event;
void onMessage(
@Observes @Inbound
MyPayload event)
JCache RESTAPI
CDI events
One more option… JCA connector
●
Message-driven beans, does it ring the bell?
– Not only for JMS but for any messaging infrastructure
●
Connetors exists for Amazon SQS, Azure Bus, Kafka, MQTT
– https://github.com/payara/Cloud-Connectors
@MessageDriven(activationConfig = { … })
public class KafkaMDB implements KafkaListener {
@OnRecord( topics={"test"})
public void getMessageTest(ConsumerRecord record) {
…
JCache RESTAPI
CDI eventsJCA connector
JCache RESTAPI
CDI eventsJCA connector
Or evolution to avoid refactoring
event observer
JCA
connection
observer
MDB
event
Evolutionary architecture
„An evolutionary architecture supports continual and
incremental change as a first principle along
multiple dimensions.“
„Microservices meet this definition.“
Neal Ford, Rebecca Parsons
http://evolutionaryarchitecture.com/
5. Configuration facade
JCache RESTAPI
JCA connector
Microprofile
Configuration
●
Standard config sources
– Env. variables
– System properties
●
Supports pluggable sources
– Database?, AWS key service?
●
More sources in Payara Micro
– Cluster-wide
– Scoped (server, app, module)
Microprofile Configuration
@Inject
@ConfigProperty(name = "myservice.url")
URL myService;
@Inject
Config config;
…
myService = config
.getValue("myservice.url",
URL.class)
6. Monitoring
Is there a free lunch?
●
JVM and managed resources often monitored out of the box by runtimes
– Thread & connection pools, HTTP and EJB stats, CPU and MEM usage
●
Payara Micro
– Metrics over JMX, REST
– Notifiers route data from Request tracing & Health checks
●
Microprofile
– Metrics – monitoring data, statistics
– Health – problem detection and autorecovery (green/red light)
JCache JAX-RS
JCA connector
Microprofile
Configuration
Microprofile
Metrics, Health
Microprofile JWT
Future?
Microprofile
FaultTolerance
Cloud-ready with Payara Micro
●
Payara Micro v4.1.2.173
– JCache
– Dynamic clustering
– JAR runtime, uber JAR, embedded
– JAX-RS, JSON-Processing
– CDI event bus, cloud JCA
connectors
– Microprofile Config
– Monitoring (JMX, REST, Notifiers)
●
Future Payara Micro v5
– JSON-Binding, Security API
(Java EE 8)
– Microprofile 1.2
●
JWT auth
●
Metrics
●
Health
●
Fault Tolerance
Cloud-ready with Payara Micro
Not by accident:
Payara Micro is designed for running resilient Java
EE applications in a modern containerized /
virtualized infrastructure.
Steve Millidge,
Payara project lead
https://www.payara.fish/
Questions?

More Related Content

PDF
Apache ActiveMQ
PDF
Apache ActiveMQ
PPT
How To Scale v2
PDF
How lagom helps to build real world microservice systems
PDF
Introduction to MicroProfile Metrics
PPT
Shopzilla On Concurrency
PPTX
Building MuleSoft Applications with Google BigQuery Meetup 4
PPTX
MaxScale - The Pluggibale Router MariaDB Roadshow 2014 Paris
Apache ActiveMQ
Apache ActiveMQ
How To Scale v2
How lagom helps to build real world microservice systems
Introduction to MicroProfile Metrics
Shopzilla On Concurrency
Building MuleSoft Applications with Google BigQuery Meetup 4
MaxScale - The Pluggibale Router MariaDB Roadshow 2014 Paris

What's hot (19)

PDF
Nuxeo JavaOne 2007 presentation (in original format)
PPTX
Skalierbarkeit mit MariaDB und MaxScale - MariaDB Roadshow Summer 2014 Hambur...
PDF
MaxScale - The Pluggable Router
ODP
Sun Web Server Brief
PDF
Integrating DROOLS With Mule ESB
PDF
Percona live 2021 Practical Database Automation with Ansible
PPTX
MaxScale - The Pluggable Router
PPTX
Ajax ppt - 32 slides
PPT
Shopzilla On Concurrency
ODP
Whats new in Weblogic 12c
PPTX
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
PPSX
JDBC: java DataBase connectivity
PDF
Database and Java Database Connectivity
PDF
Effective cloud-ready apps with MicroProfile
PDF
MaxScale - the pluggable router
PDF
MySQL High Availability Solutions
PDF
Gradual migration to MicroProfile
PPTX
Deploying MariaDB databases with containers at Nokia Networks
PPT
Hazelcast
Nuxeo JavaOne 2007 presentation (in original format)
Skalierbarkeit mit MariaDB und MaxScale - MariaDB Roadshow Summer 2014 Hambur...
MaxScale - The Pluggable Router
Sun Web Server Brief
Integrating DROOLS With Mule ESB
Percona live 2021 Practical Database Automation with Ansible
MaxScale - The Pluggable Router
Ajax ppt - 32 slides
Shopzilla On Concurrency
Whats new in Weblogic 12c
10 Strategies for Developing Reliable Jakarta EE & MicroProfile Applications ...
JDBC: java DataBase connectivity
Database and Java Database Connectivity
Effective cloud-ready apps with MicroProfile
MaxScale - the pluggable router
MySQL High Availability Solutions
Gradual migration to MicroProfile
Deploying MariaDB databases with containers at Nokia Networks
Hazelcast
Ad

Similar to Elastic and Cloud-ready Applications with Payara Micro (20)

PDF
Java2 days 5_agile_steps_to_cloud-ready_apps
PDF
Payara Revealed 1st Edition David R. Heffelfinger
PPTX
Deploying Elastic Java EE Microservices in the Cloud with Docker
PPTX
Demystifying microservices for JavaEE developers by Steve Millidge.
PPTX
Microservices Platforms - Which is Best?
PPTX
JavaEE Microservices platforms
PDF
Cloud-ready Micro Java EE 8
PDF
Bed con Quest for JavaEE
PPTX
Bed con - MicroProfile: A Quest for a lightweight and reactive Enterprise Ja...
PDF
Java in the age of containers - JUG Frankfurt/M
PPTX
High performance java ee with j cache and cdi
PDF
MicroProfile for MicroServices
PDF
Will Microservices Die.pdf
ODP
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
PDF
High Performance Java EE with JCache and CDI
PPTX
Understanding Microservices
PDF
A Hitchhiker's Guide to Cloud Native Java EE
PDF
A Hitchhiker's Guide to Cloud Native Java EE
PDF
Java in the Age of Containers and Serverless
PDF
Building Asynchronous Applications
Java2 days 5_agile_steps_to_cloud-ready_apps
Payara Revealed 1st Edition David R. Heffelfinger
Deploying Elastic Java EE Microservices in the Cloud with Docker
Demystifying microservices for JavaEE developers by Steve Millidge.
Microservices Platforms - Which is Best?
JavaEE Microservices platforms
Cloud-ready Micro Java EE 8
Bed con Quest for JavaEE
Bed con - MicroProfile: A Quest for a lightweight and reactive Enterprise Ja...
Java in the age of containers - JUG Frankfurt/M
High performance java ee with j cache and cdi
MicroProfile for MicroServices
Will Microservices Die.pdf
Enterprise Java in 2012 and Beyond, by Juergen Hoeller
High Performance Java EE with JCache and CDI
Understanding Microservices
A Hitchhiker's Guide to Cloud Native Java EE
A Hitchhiker's Guide to Cloud Native Java EE
Java in the Age of Containers and Serverless
Building Asynchronous Applications
Ad

More from Payara (20)

PPTX
Easy Java Integration Testing with Testcontainers​
PPTX
Payara Cloud - Cloud Native Jakarta EE.pptx
PPTX
Jakarta Concurrency: Present and Future
PPTX
GlassFish Migration Webinar 2022 Current version.pptx
PDF
Securing Microservices with MicroProfile and Auth0v2
PDF
Reactive features of MicroProfile you need to learn
PDF
A step-by-step guide from traditional Java EE to reactive microservice design
PDF
Transactions in Microservices
PPTX
Fun with Kubernetes and Payara Micro 5
PDF
What's new in Jakarta EE and Eclipse GlassFish (May 2019)
PDF
Previewing Payara Platform 5.192
PDF
Secure JAX-RS
PDF
Gradual Migration to MicroProfile
PDF
Monitor Microservices with MicroProfile Metrics
PDF
Java2 days -_be_reactive_and_micro_with_a_microprofile_stack
PDF
Rapid development tools for java ee 8 and micro profile [GIDS]
PDF
Ondrej mihalyi be reactive and micro with a micro profile stack
PPTX
Payara Micro from Raspberry Pi to Cloud
PPTX
Microprofile and EE4J update
PDF
Devoxx Easily scale enterprise applications using distributed data grids
Easy Java Integration Testing with Testcontainers​
Payara Cloud - Cloud Native Jakarta EE.pptx
Jakarta Concurrency: Present and Future
GlassFish Migration Webinar 2022 Current version.pptx
Securing Microservices with MicroProfile and Auth0v2
Reactive features of MicroProfile you need to learn
A step-by-step guide from traditional Java EE to reactive microservice design
Transactions in Microservices
Fun with Kubernetes and Payara Micro 5
What's new in Jakarta EE and Eclipse GlassFish (May 2019)
Previewing Payara Platform 5.192
Secure JAX-RS
Gradual Migration to MicroProfile
Monitor Microservices with MicroProfile Metrics
Java2 days -_be_reactive_and_micro_with_a_microprofile_stack
Rapid development tools for java ee 8 and micro profile [GIDS]
Ondrej mihalyi be reactive and micro with a micro profile stack
Payara Micro from Raspberry Pi to Cloud
Microprofile and EE4J update
Devoxx Easily scale enterprise applications using distributed data grids

Recently uploaded (20)

PPT
Teaching material agriculture food technology
PDF
Modernizing your data center with Dell and AMD
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
KodekX | Application Modernization Development
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Encapsulation theory and applications.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Machine learning based COVID-19 study performance prediction
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Empathic Computing: Creating Shared Understanding
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
Teaching material agriculture food technology
Modernizing your data center with Dell and AMD
Unlocking AI with Model Context Protocol (MCP)
KodekX | Application Modernization Development
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Encapsulation theory and applications.pdf
The AUB Centre for AI in Media Proposal.docx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Machine learning based COVID-19 study performance prediction
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Reach Out and Touch Someone: Haptics and Empathic Computing
Network Security Unit 5.pdf for BCA BBA.
Empathic Computing: Creating Shared Understanding
The Rise and Fall of 3GPP – Time for a Sabbatical?
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Agricultural_Statistics_at_a_Glance_2022_0.pdf
20250228 LYD VKU AI Blended-Learning.pptx

Elastic and Cloud-ready Applications with Payara Micro

  • 1. Elastic and Cloud-ready Applications with Payara Micro Ondro Mihályi | Payara Engineer | @omihalyi | @Payara_Fish
  • 2. What is cloud ready? ● Java EE or Spring ● Amazon AWS or Openshift ● SQL or NoSQL ● REST or EJB
  • 3. Who am I? • Payara Engineer • Java EE developer and lecturer • Czech JUG leader • Member of JCP and Eclipse foundation • @omihalyi
  • 4. Is it really about the technology?
  • 5. Cloud ready requirements ● Pluggable persistence ● Scalable according to the load ● Low coupling ● External configuration ● Monitoring ● Failure recovery ● Security There are more according to the 12 factor applications manifesto
  • 6. Solution? ● Simple API abstractions ● Flexible implementations ● Application logic first, against a solid foundation ● Choose the technology later to meet the needs
  • 10. JCache ● Temporary cache → optimization of frequent reads ● Temporary key-value persistence, extensible to permanent with a read/write- through policy ● More than 10 implementations, supported also by Payara Micro and Spring ● Distributed implementations allow scalable persistence ● Can cache results of data-retrieval method calls
  • 11. JCache API @CacheResult User getUserForName(String name) { /*do if not cached*/ } @Inject Cache<String, User> users; users.put(user.getName(), user); User user = users.get(name); StreamSupport.stream(users.spliterator(), false) .filter( e -> e.getValue().getAge() > 50) .count()
  • 12. JCache in Payara Micro ● Powered by Hazelcast In-Memory Data Grid ● Integration with Java EE using CDI injection and interceptors ● Distributed, auto-discovery of nodes by default via multicast – Data replication and even distribution – Lite nodes without data in heap ● Other Hazelcast features available via injected HazelcastInstance ● Hazelcast Jet library for fast stream processing
  • 15. What is Payara Micro? • Executable JAR (~60MB disk size, ~30 MB RAM) • Runs WAR and EAR from command line • Fully embeddable (if you want…) • Forms dynamically scalable cluster • Web Profile “plus” • On Maven Central
  • 16. Scale dynamically ● Run multiple instances with the same command java -jar payara-micro.jar --deploy application.war ● Package as a single executable JAR java -jar payara-micro.jar --deploy application.war –outputUberJar application.jar ● Run embedded PayaraMicro.getInstance().addDeployment("application.war").bootStrap() ● Run using Maven plugin
  • 19. REST services in Java EE ● JAX-RS endpoint @GET @Path("/{id}") @Produces(MediaType.APPLICATION_JSON) public User getUser(@PathParam("id") Integer id) { return userById(id); } ● JAX-RS client User user = client.target(url).path("all").request().get(User.class)
  • 20. REST services in Java EE ● JSON binding @JsonbNillable public class User implements Serializable { private String name; @JsonbTransient private String description; @JsonbProperty("userId") private long id; } - new in Java EE 8 - Payara Micro 5-Alpha More about JSON-B: http://json-b.net
  • 22. CDI events, really? ● Part of Java EE API already ● Easy to send and observe messages ● Is it enough? What about: – Sending events to other services – Message broker to decouple services – Transactions
  • 23. CDI events, really? ● Part of Java EE API already ● Easy to send and observe messages ● Is it enough? What about: – Sending events to other services (nothing else is important initially) – Message broker to decouple services – Transactions
  • 24. Events as an initial abstraction ● Transfer events to other services manually – Using distributed queues – Using any message broker ● Or use a solution provided by the cluster out of the box Temporary solutions often become final solutions (when sufficient)
  • 25. Payara CDI event bus ● Out of the box in messaging in Payara Micro ● Uses already embedded Hazelcast ● No configuration needed, events reliably dispatched to all observers @Inject @Outbound Event<MyPayload> event; void onMessage( @Observes @Inbound MyPayload event)
  • 27. One more option… JCA connector ● Message-driven beans, does it ring the bell? – Not only for JMS but for any messaging infrastructure ● Connetors exists for Amazon SQS, Azure Bus, Kafka, MQTT – https://github.com/payara/Cloud-Connectors @MessageDriven(activationConfig = { … }) public class KafkaMDB implements KafkaListener { @OnRecord( topics={"test"}) public void getMessageTest(ConsumerRecord record) { …
  • 30. Or evolution to avoid refactoring event observer JCA connection observer MDB event
  • 31. Evolutionary architecture „An evolutionary architecture supports continual and incremental change as a first principle along multiple dimensions.“ „Microservices meet this definition.“ Neal Ford, Rebecca Parsons http://evolutionaryarchitecture.com/
  • 34. ● Standard config sources – Env. variables – System properties ● Supports pluggable sources – Database?, AWS key service? ● More sources in Payara Micro – Cluster-wide – Scoped (server, app, module) Microprofile Configuration @Inject @ConfigProperty(name = "myservice.url") URL myService; @Inject Config config; … myService = config .getValue("myservice.url", URL.class)
  • 36. Is there a free lunch? ● JVM and managed resources often monitored out of the box by runtimes – Thread & connection pools, HTTP and EJB stats, CPU and MEM usage ● Payara Micro – Metrics over JMX, REST – Notifiers route data from Request tracing & Health checks ● Microprofile – Metrics – monitoring data, statistics – Health – problem detection and autorecovery (green/red light)
  • 37. JCache JAX-RS JCA connector Microprofile Configuration Microprofile Metrics, Health Microprofile JWT Future? Microprofile FaultTolerance
  • 38. Cloud-ready with Payara Micro ● Payara Micro v4.1.2.173 – JCache – Dynamic clustering – JAR runtime, uber JAR, embedded – JAX-RS, JSON-Processing – CDI event bus, cloud JCA connectors – Microprofile Config – Monitoring (JMX, REST, Notifiers) ● Future Payara Micro v5 – JSON-Binding, Security API (Java EE 8) – Microprofile 1.2 ● JWT auth ● Metrics ● Health ● Fault Tolerance
  • 39. Cloud-ready with Payara Micro Not by accident: Payara Micro is designed for running resilient Java EE applications in a modern containerized / virtualized infrastructure. Steve Millidge, Payara project lead https://www.payara.fish/