O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Cloudify your applications:
microservices and beyond
Intro
Vittorio Colabella
TYPICAL CUSTOMER LANDSCAPE TODAY
Where the journey starts...
RUN
Brownfield
TRANSFORM
Greenfield
GROW
VIRTUALPHYSICAL
PRIV...
Without
adding more
complexity and
inconsistencies?
TYPICAL CUSTOMER LANDSCAPE TODAY
Where the journey starts...
MODERNIZE...
APPLICATION PORTFOLIO MODERNIZATION
One platform to support you today and tomorrow
TRANSFORM
Greenfield
GROWRUN
Modernized...
APPLICATION SERVICES
FOUNDATION INTEGRATION AUTOMATION
IT’S ALL THERE!
COMPLETE TECHNOLOGY STACK FOR HYBRID CLOUD
INFRASTR...
Tools Available
Ready to use capabilities to facilitate innovation
Data
Virtualization
Complex
Event
Processing
Intelligent
Process
Integr...
Ready to use capabilities to facilitate innovation
Data
Virtualization
Complex
Event
Processing
Intelligent
Process
Integr...
Ready to use capabilities to facilitate innovationTalk 6 Openshift.io
Ready to use capabilities to facilitate innovation
Data
Virtualization
Complex
Event
Processing
Intelligent
Process
Integr...
Ready to use capabilities to facilitate innovation
Data
Virtualization
Complex
Event
Processing
Intelligent
Process
Integr...
MICROSERVICES 2.0 & RHOAR
Cloudify your applications: Microservices and beyond
Ugo Landini
Solution Architect
Samuele Dell...
“Most teams we work with favor bundling an embedded
http server within your web application. There are
plenty of options a...
MICROSERVICES 101
“... is an approach to developing a single application as a suite of small
services, each running in its own process and c...
● Small single-purpose services driven from DDD (Domain Driven Design) or practical decomposition
of an existing applicati...
Microservices 101
MyService
Tracing
API
Discovery
Invocation
Resilience
Pipeline
Authentication
Logging Elasticity
Monitor...
Pod
Container
JVM
Service A
Pod
Container
JVM
Service B
Pod
Container
JVM
Service C
Microservices == Distributed Computing
Wait, but weren’t we already doing this
distributed stuff...
● … what about CORBA?
● … and RMI?
● … EJB?
● … SOA?
What’s t...
Maturing the Application LifeCycle
Month
0
Month
3
Week
1
Week
2
Week
3
Week
4
Week
5
Week
6
Week
7
Week
8
Week
9
Week
10
...
Maturing the Application LifeCycle
Month
0
Month
3
Week
1
Week
2
Week
3
Week
4
Week
5
Week
6
Week
7
Week
8
Week
9
Week
10
...
Maturing the Application LifeCycle
Month
0
Month
3
Week
1
Week
2
Week
3
Week
4
Week
5
Week
6
Week
7
Week
8
Week
9
Week
10
...
What’s the difference?
● Same ideas, new technologies (which will evolve in the
future)
● But now, we should be able to br...
The Good
● Domain-Driven Design
● Low coupling, high cohesion
● APIs and contracts
● Agile software development
● Full lif...
The Bad
● Too much Dogma / CS purity
● Tradeoff between Agility & Operational
Complexity
● Magnificent Monoliths and Stupe...
The Ugly
● Building large scale distributed systems is really
hard
● Monitoring / APM tools need to catch up
● Heterogenei...
● Understand and state your goals
● Understand the tradeoffs
● Start with People, Process and Culture
○ Agile Dev / DevOps...
Config Server
NETFLIX Ribbon
Java Microservices Platform (2014)
Why these components?
Eureka is the Service Registry where the clients
lookup for service locations a.k.a Service Discover...
Why these components?
Eureka is the Service Registry where the clients
lookup for service locations a.k.a Service Discover...
bit.ly/msa-instructions
2.0
Config Server
NETFLIX Ribbon
Better Microservices Platform
(2016/2017)
Config Server
NETFLIX Ribbon
Even Better Microservices Platform (2018)
Istio - Sail
(Kubernetes - Helmsman or ship’s pilot)
Istio
35
Sidecar?
Pod
Container
JVM
Service A
Side-car Container
Pod
Container
JVM
Service B
Side-car Container
Pod
Container
JVM
Service C
...
Infrastructure cluttering your code?
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-st...
Istio
Resilience Across
Languages and Platforms
Increase reliability by shielding
applications from flaky networks
and cas...
Istio Service Mesh
Currently upstream only
Envoy
istio-ingress
Envoy
App A
Envoy
App B
Envoy
App C
istio-pilot istio-mixer...
Istio Components
● Control Plane
○ Istio-Pilot - istioctl, API, config
○ Istio-Mixer - Quota, Telemetry, Rate Limiting, AC...
Circuit Breakers
Before Istio After Istio
Boiler plate code No code related to circuit breaking mixed with
business logic
...
Tracing
Before Istio After Istio
Boiler plate code No code related to tracing mixed with business logic
Multiple libraries...
All in one place
How to use it
Routes and commands injected via CLI or API:
apiVersion: config.istio.io/v1alpha2
kind: RouteRule
metadata:
...
DEMO
Infrastructure
Circuit Breaker
Configuration
Service
Service
Registry
Client-side Load
Balancing
Infrastructure Infrastruc...
Ok, but that’s all about MSA infrastructure...
OpenShift is the best Container Platform, it will solve for
you many of the...
50
Runtime
App
Cloud Platform
Data
Build | Deploy | Scheduling | Scaling | Elasticity | Metrics | Logging
Security IMDG Me...
Funktion
50% OF THE
ENTERPRISE APP
MARKET
Where developers are going
“Almost all the successful
microservice stories have started with
a monolith that got too big and was
broken up”
“Almost a...
Modern, cloud-native application runtimes and an opinionated
developer experience for organizations that are moving
beyond...
● Multiple runtime options
○ JBoss EAP - existing Java EE / Spring apps.
○ WildFly Swarm / MicroProfile - Java EE centric ...
JBoss EAP
Existing, Java EE,
Spring MVC
Fast Monoliths
(Java EE, Spring)
Tomcat
Spring Boot /
MVC
Greenfield
Reactive Java...
Ok, so it’s (also) about being lighter?
Don’t believe it? Try it out yourself http://bit.ly/modern-java-runtimes
Runtime
(...
Ok, so it’s (also) about being lighter?
Don’t believe it? Try it out yourself http://bit.ly/modern-java-runtimes
Runtime
(...
Polyglot
● Language agnostic platform
● Initial focus on Java & JavaScript
Best in class OSS
● Container, Kubernetes, Java...
● Resource efficiency
● Automation for microservices, but also
support traditional applications
● Enable faster and more c...
Multiple Runtimes supported in single SKU
Support 12-factor / cloud-native design-patterns :
● Healthcheck / load-balancin...
The books you’ll need to read
RUNTIMES
(Container images and Maven Artifacts)
JAVA EE
(JBoss EAP)
MICROPROFILE
(WildFly Swarm)
OPENSHIFT SERVICES
REACTI...
QUESTIONS?
WILDFLY SWARM:
RED HAT’S MICROPROFILE
EAP and beyond: Red Hat Open Application Runtimes
Giuseppe Bonocore
Solution Archite...
RUNTIMES
(Container images and Maven Artifacts)
JAVA EE
(JBoss EAP)
MICROPROFILE
(WildFly Swarm)
OPENSHIFT SERVICES
REACTI...
● An innovative approach to package and
run Java EE applications
● Just enough App server : package your
app with required...
● Focus on modern cloud applications
○ No UI, no session replication
● Adds non-Java EE capabilities
○ Netflix OSS, Swagge...
● Eclipse Foundation project
● Open source Java microservices
specifications
● WildFly Swarm is Red Hat’s
implementation
1:1 Relationship
Loose Relationship
● A maven artifact providing a
specific piece of functionality
● Can be auto-detected or
explicitly declared
● 184 fractio...
● Uber Jar (packages your app +
what’s needed to run it)
● Hollow Jar (excludes app)
(Community)
Packaging
Uber Jar anatomy
Maven repo containing fraction dependencies
Manifest-Version: 1.0
Main-Class: org.wildfly.swarm.bootstrap...
Hollow Jar anatomy
● Contains the bits needed to run the
application, but not the application itself.
● Container based de...
Configuration
Define by:
● System properties
● Project stages (yml)
● XML
● Command-line arguments
Access by:
● Java API
●...
Monitoring
● Provided through the monitor fraction
● Exposes REST endpoints providing runtime status
{
"name": "swarm-serv...
Monitoring
● Provided through the monitor fraction
● Exposes REST endpoints providing runtime status
{
"heap-memory-usage"...
Monitoring
● Provided through the monitor fraction
● Exposes REST endpoints providing runtime status
{
"thread-count": 51,...
Monitoring
{
"checks": [
{
"id": "server-state",
"result": "UP",
"data": {
"date": "Mon Sep 04 22:17:43 CEST 2017"
}
}
],
...
mvn package
Build
mvn wildly-swarm:run
OR
java -jar <my-app>-swarm.jar
OR
IDE > Run …
org.wildfly.swarm.Swarm()
Run
Tooling
● JBoss Forge add-on
○ Generate code/scaffolding
● SwarmTool
○ Standalone jar that is used to wrap an existing JAR...
wildfly-swarm.io/generator
Ok, so it’s (also) about being lighter?
Don’t believe it? Try it out yourself http://bit.ly/modern-java-runtimes
Runtime
(...
How to select the runtimes
Selection
Consideration
Project Type Framework Pref Learning Effort Deployment Pkg
Runtimes
Clo...
QUESTIONS?
VERTX.IO: REACTIVE MICROSERVICES
EAP and beyond: Red Hat Open Application Runtimes
Ugo Landini
Solution Architect
RUNTIMES
(Container images and Maven Artifacts)
JAVA EE
(JBoss EAP)
MICROPROFILE
(WildFly Swarm)
OPENSHIFT SERVICES
REACTI...
Free from : https://developers.redhat.com/
● Reactive Microservices Toolkit for
the JVM
● Polyglot - Java, JavaScript, jRuby,
Python, Groovy, Scala, Kotlin
● Distrib...
How to select the runtimes
Selection
Consideration
Project Type Framework Pref Learning Effort Deployment Pkg
Runtimes
Clo...
Why Reactive?
Apps In The Past Apps Today
Single/Few
Machines
Clusters of
Machines
Single/Few Core
Machines
Multicore
Mach...
The 2 faces of Reactive
Reactive
A software showing
responses to stimuli
Reactive
Systems
Reactive
Programming
Akka, Vert....
Reactive Manifesto
http://www.reactivemanifesto.org/
Reactive Systems are an architecture style focusing on responsiveness
Asynchronous message passing => Elasticity
Components interacts using messages
Messages allows elasticity
Resilience is no...
Pragmatic Reactive systems
And that’s what Vert.x offers to you
Development model => Embrace asynchronous
Simplified concu...
Asynchronous development models
Async programming
● Exists since the early days of computing
● Better usage of hardware re...
Reactive Architecture / Software
Application to software
A software showing responses to stimuli
● Events, Messages, Reque...
Building Reactive Systems
Message Driven
Microservices https://www.reactivemanifesto.org/
Tooling (OCP, Kubernetes)
Reacti...
Vert.x
Event Loop
Multi-Reactor
Verticle
Verticle
Verticle
Verticle
Verticle
JVM
Vert.x Instance
Verticle
Verticle
Verticl...
All you need is (reactive) love
Reactive
Systems
Reactive
Programming
QUESTIONS?
L’Integrazione nell’era dei Microservizi
Cloudify your applications: Microservices and beyond
Filippo Calà
Solution Archit...
Integration
Integration
ESB
Contract
Platform
Data
Application
UDDI Process Flow
MICROSERVICES ?
Integration
Integration
YOU WILL STILL NEED INTEGRATION,
EVEN WITH MICROSERVICES!
Agile Integration
“L'integrazione agile è un approccio
architetturale che combina metodi e
pratiche agili con le tecnologie, allo
scopo di ...
AGILE INTEGRATION
Cloud native solutions
Lean artifacts,
individually deployable
Container based scaling
and high availabi...
AGILE INTEGRATION
Cloud native solutions
Lean artifacts,
individually deployable
Container based scaling
and high availabi...
AGILE INTEGRATION
Cloud native solutions
Lean artifacts,
individually deployable
Container based scaling
and high availabi...
Fuse iPaaS
Fuse Integration Services
Fuse Standalone
FUSE
Three Fuse Product Initiatives
Fuse Integration Service
APACHE CAMEL
SPRING-BOOT APACHE KARAF
CONTAINER
OPENSHIFT
JBOSS
DEVELOPER
STUDIO
Writing, configu...
CAMEL DSL
JBOSS
DEVELOPER
STUDIO
Java DSL
Blueprint DSL (XML)
Spring DSL (XML)
Demo
microservice by Fuse
Client
API
(Interface,
Contracts)
Routing
Protocol
Endpoints
Transform
ation
Microservice
QUESTIONS?
Openshift.io: Portiamo l'IDE nel cloud
Giuseppe Bonocore
Solution Architect
RUNTIMES
(Container images and Maven Artifacts)
JAVA EE
(JBoss EAP)
MICROPROFILE
(WildFly Swarm)
OPENSHIFT SERVICES
REACTI...
Openshift.io - Eclipse CHE tooling
125
What is needed to make a contribution?
IDE Project Files Runtimes
What is needed to make a contribution?
Configuration
IDE RuntimesProject Files
Workspace
Today
Che Workspaces
IDE RuntimesProject Files
Projects are mounted into the runtimes
Projects rely on
workspace runtimes
Workspaces define commands
mvn clean install
start mysql
deploy project
Commands are
executed as
processes in
workspace
ru...
Workspaces provide their own browser IDE
Desktop IDEs can connect over SSH
Workspaces are hosted in Che’s server
Plug-ins
Developer Workspace
Project Badging
Developer Workspace
Developer Workspace
Openshift.io: Cloud Based IDE, SDLC and
more...
OpenShift.io
Unified view across teams and projects
Plan and track
Analyze Plan
Assign Prioritize
Create and Build
Cloud
I...
Create new Space
Multiple, guided ways to Get Started
Wizards, powered by Forge project
Advanced Openshift Pipelines
Integrated planner
Kanban Boards
Browser based IDE
Fabric8 Analytics Suggestions
Insights and suggestions
QUESTIONS?
EnMasse : open sourcing the messaging & IoT
The messaging as a service platform
Paolo Patierno
Senior Software Engineer
Lu...
EnMasse
Messaging-as-a-Service
● Open source cloud messaging running on Kubernetes and OpenShift
● enmasse.io
● github.com...
EnMasse
Features
● Multiple communication patterns: request/response, publish/subscribe and
competing consumers
● Support ...
Basic idea
Routers and brokers
R
R
R
P C
B
B
Routing vs Brokering
Broker
Producer Broker Consumer
Send message
Accepted
Send message
Accepted
Routing vs Brokering
Router
Producer Router Consumer
Send message
Accepted
Send message
Accepted
Address model
Address space
● Type
● Plan
Address
● Type
● Plan
● Properties
1 N 1 M
● Address space : group of addresses ...
EnMasse
Architecture - “Standard” address space
Qpid Dispatch Router
network
ActiveMQ Artemis
brokers
Admin
MQTT gateway
M...
EnMasse
“Brokered” address space
ActiveMQ Artemis
brokers
Admin
AMQP & JMS clients
EnMasse
Security
Qpid Dispatch Router
network
ActiveMQ Artemis
brokers
Admin
MQTT gateway
MQTT clients
AMQP & JMS clients
...
Scaling
Routers
R
R
R
R
A
Scaling
Routers
R
R
R
R
A
Scaling
Brokers
a a b b
Router network
a
Scaling
Brokers
a a b b
Router network
a
MQTT over AMQP
● MQTT gateway
○ Handles connections with remote MQTT clients
○ Bridges MQTT - AMQP protocols
● MQTT lwt
○ ...
EnMasse
Future work
● HTTP(S) support
● Bridging address spaces
● Kafka integration
○ as part of the “standard” address sp...
QUESTIONS?
BUSINESS AUTOMATION
Process Driven Application, Decisions & Resource Planning
Donato Marrazzo
Specialist Solution Architect
Who cares? Let’s ask to Google Trends!
⬤ Business Process Management
⬤ Business Rules
⬤ Microservices
⬤ Artificial Intelli...
Treating
business processes as
assets that can be
adapted,
automated and
re-designed
is key to
innovation and digital
tran...
BUSINESS PROCESSES
Process Driven Application
GOAL
Reimagine processes for digital participation
HOW
Shift from BPM to low code process apps
...
Tools for
business experts
Tools for
developers
RED HAT JBOSS BPM SUITE
PROCESS
PARTICIPANTS
LEGACY
SYSTEMS
CLOUD SERVICES...
BPMS v7
● More convenient and pleasurable for citizen developer
● Extended Case Management support
● Improving collaborati...
CITIZEN DEVELOPER
CITIZEN DEVELOPER PROFILE
BPMN2 MODELER
Stunner
App Former
Dashbuilder
AppFormer-based
Entando
Partnership
CASE MANAGEMENT
BPM Usage spectrum
Straight Through
The BPM engine “choreographs” a
sequence of automated activities, it
involves humans b...
Engine Support
Runtime Strategy
PER_CASE provides a single KIE-Session for all process instances within a
case.
Case Files...
Focus on Stages
At glance:
● Data
● Task
● Milestones
● Roles
● Activities
● Documents
Case view
DEPLOYMENT
CONTROLLER
Websocket communication
KIE Server initiate the communication at
startup and the controller reuse it.
Previousl...
Main goals:
● Hide the complexity of many KIE Server
instances hosting different projects (kjars)
● Aggregate information ...
● Users interact with KIE Servers always via Smart Router
● KIE Servers can come and go at anytime and register/unregister...
The Execution Errors view shows a list of errors
User can acknowledge errors
Quick search
Filter by fields
● Process Insta...
BUSINESS DECISIONS
Tools for
business experts
Tools for
developers
RULES
RED HAT JBOSS BRMS
APPS
APPS
APPS
Decision
Services
Business Central...
Decision Tables
“DMN, which stands for Decision Model and Notation,
is a relatively new standard managed by OMG, the organization behind B...
Basic concepts
a Decision is the act
of determining an
output value from a
number of input values
A Business Knowledge Mod...
BUSINESS RESOURCE PLANNING
Optimize Goals With limited Resources Under Constraints
BUSINESS RESOURCE PLANNING
EXAMPLES
Business Resource Planner is an
“optimization engine” (or “constraint
satisfaction solver”) platform that runs on
JBoss BR...
QUESTIONS?
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
Próximos SlideShares
Carregando em…5
×

Cloudify your applications: microservices and beyond

Cloud & Middleware track @ OSD 2017, Rome & Milan.

  • Entre para ver os comentários

Cloudify your applications: microservices and beyond

  1. 1. Cloudify your applications: microservices and beyond Intro Vittorio Colabella
  2. 2. TYPICAL CUSTOMER LANDSCAPE TODAY Where the journey starts... RUN Brownfield TRANSFORM Greenfield GROW VIRTUALPHYSICAL PRIVATE & PUBLIC CLOUD Complex & heterogeneous Lack of common standards Inconsistent automation & governance
  3. 3. Without adding more complexity and inconsistencies? TYPICAL CUSTOMER LANDSCAPE TODAY Where the journey starts... MODERNIZE EXISTING APPS DEVELOP NEW APPLICATIONS THE MODERN WAY
  4. 4. APPLICATION PORTFOLIO MODERNIZATION One platform to support you today and tomorrow TRANSFORM Greenfield GROWRUN Modernized brownfield COMMON HYBRID APPLICATION INFRASTRUCTURE BETTER SOFTWARE ARCHITECTURE AGILE INTEGRATION STREAMLINE APPLICATION LIFECYCLE CONTINUOUS INNOVATION MODERN APPLICATION CONCEPTS
  5. 5. APPLICATION SERVICES FOUNDATION INTEGRATION AUTOMATION IT’S ALL THERE! COMPLETE TECHNOLOGY STACK FOR HYBRID CLOUD INFRASTRUCTURE SOFTWARE CONTAINER PLATFORM SECURITY & MANAGEMENT DEVELOPER TOOLS OTHER CLOUD PROVIDERS + PHYSICAL VIRTUAL PRIVATE CLOUD
  6. 6. Tools Available
  7. 7. Ready to use capabilities to facilitate innovation Data Virtualization Complex Event Processing Intelligent Process Integration Messaging Data Grid Java EE Application Web Application Single Sign-On Business Rules API Management Micro services Talk 1 A Microservices story Talk 2-3-4 EAP and beyond: Red Hat Open Application Runtimes
  8. 8. Ready to use capabilities to facilitate innovation Data Virtualization Complex Event Processing Intelligent Process Integration Messaging Data Grid Java EE Application Web Application Single Sign-On Business Rules API Management Micro services Talk 5 Fuse Integration Services
  9. 9. Ready to use capabilities to facilitate innovationTalk 6 Openshift.io
  10. 10. Ready to use capabilities to facilitate innovation Data Virtualization Complex Event Processing Intelligent Process Integration Messaging Data Grid Java EE Application Web Application Single Sign-On Business Rules API Management Micro services Talk 7 MAAS, Messaging As A Service
  11. 11. Ready to use capabilities to facilitate innovation Data Virtualization Complex Event Processing Intelligent Process Integration Messaging Data Grid Java EE Application Web Application Single Sign-On Business Rules API Management Micro services Talk 8 Model decisions, manage cases and make it optimal
  12. 12. MICROSERVICES 2.0 & RHOAR Cloudify your applications: Microservices and beyond Ugo Landini Solution Architect Samuele Dell’Angelo Solution Architect
  13. 13. “Most teams we work with favor bundling an embedded http server within your web application. There are plenty of options available: Jetty, SimpleWeb, Webbit and Owin Self-Host amongst others. Easier automation, easier deployment and a reduction in the amount of infrastructure you have to manage lead us to recommend embedded servers over application servers for future projects” ThoughtWorks Technology Radar, May 2015 2015 AP Revenue (Gartner, Nov. 2016) : ● Oracle -4.5% ● IBM -9.5% ● Red Hat +33.3% ● Amazon +50.6% ● Pivotal +22.7% “Resist the temptation to simply lift and shift Java EE applications from closed-source to open-source application servers for modest license savings. If you are contemplating porting an application, consider rearchitecting it to be cloud-native and moving it to aPaaS - presuming that business drivers warrant the investment.” Gartner (November 2016) State of the Market
  14. 14. MICROSERVICES 101
  15. 15. “... is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.” Martin Fowler http://martinfowler.com/articles/microservices.html Microservices defined
  16. 16. ● Small single-purpose services driven from DDD (Domain Driven Design) or practical decomposition of an existing application or existing SOA-style mini-services ● Combined to form a system or application ● Independently deployable (replaceable) ● Independently scalable ● Antifragile - increased robustness and resilience under pressure ● Fully automated software delivery ● Polyglot (language and framework independence) ● API / Contract Focused ● Typically event-driven ● Decentralized data management Microservices 101
  17. 17. Microservices 101 MyService Tracing API Discovery Invocation Resilience Pipeline Authentication Logging Elasticity Monitoring
  18. 18. Pod Container JVM Service A Pod Container JVM Service B Pod Container JVM Service C Microservices == Distributed Computing
  19. 19. Wait, but weren’t we already doing this distributed stuff... ● … what about CORBA? ● … and RMI? ● … EJB? ● … SOA? What’s the difference?
  20. 20. Maturing the Application LifeCycle Month 0 Month 3 Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 Week 10 Week 11 Monolith Java EE Lifecycle
  21. 21. Maturing the Application LifeCycle Month 0 Month 3 Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 Week 10 Week 11 Monolith Java EE Lifecycle Fast Moving Java EE Monolith
  22. 22. Maturing the Application LifeCycle Month 0 Month 3 Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 Week 10 Week 11 Monolith Java EE Lifecycle Fast Moving Java EE Monolith Java EE Microservices
  23. 23. What’s the difference? ● Same ideas, new technologies (which will evolve in the future) ● But now, we should be able to bring a new feature in production in a few minutes
  24. 24. The Good ● Domain-Driven Design ● Low coupling, high cohesion ● APIs and contracts ● Agile software development ● Full lifecycle automation ● Dev and Ops working together ● Common packaging / container format ● Rethinking Data Microservices: the Good, the Bad...
  25. 25. The Bad ● Too much Dogma / CS purity ● Tradeoff between Agility & Operational Complexity ● Magnificent Monoliths and Stupendous SOA are not necessarily bad ● Microservices / Unicorn Envy ● Not all organizations can afford the skills and talent required to be successful ● Maintaining data consistency is hard in distributed systems Microservices: the Good, the Bad...
  26. 26. The Ugly ● Building large scale distributed systems is really hard ● Monitoring / APM tools need to catch up ● Heterogeneity (languages, frameworks, data stores) ● Event-based, asynchronous, reactive programming is still in it’s infancy and skills are rare ● CAP: Consistency, Availability, Partition Tolerance ? – choose two Microservices: the Good, the Bad...
  27. 27. ● Understand and state your goals ● Understand the tradeoffs ● Start with People, Process and Culture ○ Agile Dev / DevOps is a prerequisite ● Invest in automation (provisioning, CI/CD, etc.) ● Start small ○ Small non-mission-critical green-field ○ Decomposition of existing monolith ● Get help - eg. Red Hat Innovation Labs Microservices Recommendations
  28. 28. Config Server NETFLIX Ribbon Java Microservices Platform (2014)
  29. 29. Why these components? Eureka is the Service Registry where the clients lookup for service locations a.k.a Service Discovery Config Server Zuul is the smart proxy purely based on Java Ribbon is the client side Load Balancer Hystrix is the Circuit Breaker Config Server externalized the Configuration Zipkin is the Distributed Tracer
  30. 30. Why these components? Eureka is the Service Registry where the clients lookup for service locations a.k.a Service Discovery Config Server Zuul is the smart proxy purely based on Java Ribbon is the client side Load Balancer Hystrix is the Circuit Breaker Config Server externalized the Configuration Zipkin is the Distributed Tracer
  31. 31. bit.ly/msa-instructions 2.0
  32. 32. Config Server NETFLIX Ribbon Better Microservices Platform (2016/2017)
  33. 33. Config Server NETFLIX Ribbon Even Better Microservices Platform (2018)
  34. 34. Istio - Sail (Kubernetes - Helmsman or ship’s pilot) Istio
  35. 35. 35 Sidecar?
  36. 36. Pod Container JVM Service A Side-car Container Pod Container JVM Service B Side-car Container Pod Container JVM Service C Side-car Container Pods with 2 containers!
  37. 37. Infrastructure cluttering your code? <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency>
  38. 38. Istio Resilience Across Languages and Platforms Increase reliability by shielding applications from flaky networks and cascading failures in adverse conditions. Policy Enforcement Apply organizational policy to the interaction between services, ensure access policies are enforced and resources are fairly distributed among consumers. Intelligent Routing and Load Balancing Control traffic between services with dynamic route configuration. Conduct A/B tests, release canaries, and gradually upgrade versions using red/black deployments. Telemetry and Reporting Understand the dependencies between services, the nature and flow of traffic between them, and quickly identify issues with distributed tracing.
  39. 39. Istio Service Mesh Currently upstream only Envoy istio-ingress Envoy App A Envoy App B Envoy App C istio-pilot istio-mixer istio-auth HTTP Req/Resp Kubernetes Pods Istio Components Config to Envoy Access Control and Telemetry
  40. 40. Istio Components ● Control Plane ○ Istio-Pilot - istioctl, API, config ○ Istio-Mixer - Quota, Telemetry, Rate Limiting, ACL ○ Istio-Auth - TLS and Certificates ● Data Plane ○ Envoy proxy deployed as “side-cars” with applications
  41. 41. Circuit Breakers Before Istio After Istio Boiler plate code No code related to circuit breaking mixed with business logic Multiple libraries and dependencies e.g. Hystrix No libraries Separate dashboard to collect circuit breaker e.g. Hystrix Turbine All metrics can be collected and displayed in Grafana without extra bit of code Define circuit breakers using Kubernetes Tags
  42. 42. Tracing Before Istio After Istio Boiler plate code No code related to tracing mixed with business logic Multiple libraries and dependencies e.g. Zipkin No libraries
  43. 43. All in one place
  44. 44. How to use it Routes and commands injected via CLI or API: apiVersion: config.istio.io/v1alpha2 kind: RouteRule metadata: name: reviews-test-v2 spec: destination: name: reviews precedence: 2 match: request: headers: cookie: regex: "^(.*?;)?(user=jason)(;.*)?$" route: - labels: version: v2
  45. 45. DEMO
  46. 46. Infrastructure Circuit Breaker Configuration Service Service Registry Client-side Load Balancing Infrastructure Infrastructure Supporting Services Cache / DataGrid SSO Service 2014 2016 2018 Microservice Business Logic Configuration (ConfigMap) Service Registry API Mgmt Messaging Server-Side Load Balancing Circuit Breaker Istio+Cache / DataGrid SSO Service API Mgmt Messaging Service Registry Configuration (ConfigMap) Server-Side Load Balancing Circuit Breaker Cache / DataGrid SSO Service API Mgmt Messaging Smart Routing Distributed Tracing Distributed Tracing Distributed Tracing Distrib.Tracing Distributed Tracing Microservice Business Logic Microservice Business Logic Smart Routing Smart Routing Supporting Services Supporting ServicesService Registration Container Platform Services Container Platform Services Commodification Simplification Evolution of Microservices
  47. 47. Ok, but that’s all about MSA infrastructure... OpenShift is the best Container Platform, it will solve for you many of the problems at an infrastructure level without cluttering your code but... … we still need to code our microservices!
  48. 48. 50 Runtime App Cloud Platform Data Build | Deploy | Scheduling | Scaling | Elasticity | Metrics | Logging Security IMDG Messaging Runtime Svc Runtime Svc Cloud Provider The App Server 2014/...
  49. 49. Funktion 50% OF THE ENTERPRISE APP MARKET Where developers are going
  50. 50. “Almost all the successful microservice stories have started with a monolith that got too big and was broken up” “Almost all the cases where I've heard of a system that was built as a microservice system from scratch, it has ended up in serious trouble.” Martin Fowler: monolith first!
  51. 51. Modern, cloud-native application runtimes and an opinionated developer experience for organizations that are moving beyond 3-tier architectures and embracing cloud-native application development.
  52. 52. ● Multiple runtime options ○ JBoss EAP - existing Java EE / Spring apps. ○ WildFly Swarm / MicroProfile - Java EE centric MSA ○ Spring Boot / Cloud - Spring centric MSA ○ Vert.x - greenfield reactive Java ○ Node.js - greenfield reactive JavaScript ● OpenShift - Public, Dedicated Public & Enterprise ● Tightly integrated with OpenShift & Kubernetes ● Tightly Integrated with Red Hat Developer SaaS ● 3rd-party Integrations - eg. Netflix Ribbon, Hystrix, etc. ● Opinionated DevX starting with launch.openshift.io RHOAR: OpenShift Application Runtimes
  53. 53. JBoss EAP Existing, Java EE, Spring MVC Fast Monoliths (Java EE, Spring) Tomcat Spring Boot / MVC Greenfield Reactive Java Java EE - mono to micro. / greenfield Vert.x Reactive Java / Polyglot MSA 2.0 Node.js Reactive client / server-side JavaScript Greenfield polymorphic JavaScript FaaS / Server-le ss Existing Applications New Applications Greenfield Java / Spring MSA JBoss WS Tomcat, Spring MVC, Spring Boot Spring Cloud Java MSA 1.0WildFly Swarm Monolith Decomposition, Enterprise Java MSA 2.0
  54. 54. Ok, so it’s (also) about being lighter? Don’t believe it? Try it out yourself http://bit.ly/modern-java-runtimes Runtime (framework) Boot time server only Boot time including app deployment Memory usage without load Memory usage under load Measured throughput JBoss EAP (Java EE) 2 - 3 sec 3 sec 40 MB 200 - 400 MB 23K req/sec JBoss EAP (Spring) 2 - 3 sec 7 sec 40 MB 500 - 700 MB 9K req/sec JBoss WS/Tomcat (Spring) 0 - 1 sec 8 sec 40 MB 0.5 - 1.5 GB 8K req/sec Fat JAR (Spring Boot) N/A 3 sec 30 MB 0.5 - 2.0 GB 11K req/sec Fat JAR (WF Swarm) 1-2 sec 5 sec 30 MB 250 - 350 MB 27K req/sec Theoretically, yes. But, beware: ● A simple ReST service deployed in EAP used ⅕ of the memory used by Spring Boot under load and was 2x faster!
  55. 55. Ok, so it’s (also) about being lighter? Don’t believe it? Try it out yourself http://bit.ly/modern-java-runtimes Runtime (framework) Boot time server only Boot time including app deployment Memory usage without load Memory usage under load Measured throughput JBoss EAP (Java EE) 2 - 3 sec 3 sec 40 MB 200 - 400 MB 23K req/sec JBoss EAP (Spring) 2 - 3 sec 7 sec 40 MB 500 - 700 MB 9K req/sec JBoss WS/Tomcat (Spring) 0 - 1 sec 8 sec 40 MB 0.5 - 1.5 GB 8K req/sec Fat JAR (Spring Boot) N/A 3 sec 30 MB 0.5 - 2.0 GB 11K req/sec Fat JAR (WF Swarm) 1-2 sec 5 sec 30 MB 250 - 350 MB 27K req/sec Theoretically, yes. But, beware: ● A simple ReST service deployed in EAP used ⅕ of the memory used by Spring Boot under load and was 2x faster!
  56. 56. Polyglot ● Language agnostic platform ● Initial focus on Java & JavaScript Best in class OSS ● Container, Kubernetes, Java, JavaScript, Spring Poly-architecture ● Fast monoliths (existing Java EE, Spring MVC) ● Mini and microservices ● Serverless (in the future) Key Differentiators
  57. 57. ● Resource efficiency ● Automation for microservices, but also support traditional applications ● Enable faster and more consistent deployments from Development to Production ● Enable application portability across 4 infrastructure footprints: Physical, Virtual, Private & Public Cloud Key Differentiators
  58. 58. Multiple Runtimes supported in single SKU Support 12-factor / cloud-native design-patterns : ● Healthcheck / load-balancing / proxying ● Registry / config. ● Rolling upgrades / retries / failover ● Separation of concerns Cloud-scale design ● Networking, storage, auto-scaling, logs, alerting Key Differentiators
  59. 59. The books you’ll need to read
  60. 60. RUNTIMES (Container images and Maven Artifacts) JAVA EE (JBoss EAP) MICROPROFILE (WildFly Swarm) OPENSHIFT SERVICES REACTIVE (vert.x) NODE.JS APACHE TOMCAT TESTED FRAMEWORKS (Maven Artifacts) SPRING BOOT / CLOUD NETFLIX OSS Ribbon OpenShift.io (Developer SaaS) Generators IDE etc. Management APM Metrics Service Discovery Config. Logging Health Check Load Balancing CI/CDSSOMessaging IMDG API Mgmt NETFLIX OSS Hystrix ... RHOAR: OpenShift Application Runtimes
  61. 61. QUESTIONS?
  62. 62. WILDFLY SWARM: RED HAT’S MICROPROFILE EAP and beyond: Red Hat Open Application Runtimes Giuseppe Bonocore Solution Architect
  63. 63. RUNTIMES (Container images and Maven Artifacts) JAVA EE (JBoss EAP) MICROPROFILE (WildFly Swarm) OPENSHIFT SERVICES REACTIVE (vert.x) NODE.JS APACHE TOMCAT TESTED FRAMEWORKS (Maven Artifacts) SPRING BOOT / CLOUD NETFLIX OSS Ribbon OpenShift.io (Developer SaaS) Generators IDE etc. Management APM Metrics Service Discovery Config. Logging Health Check Load Balancing CI/CDSSOMessaging IMDG API Mgmt NETFLIX OSS Hystrix ... RHOAR: OpenShift Application Runtimes
  64. 64. ● An innovative approach to package and run Java EE applications ● Just enough App server : package your app with required runtime dependencies (but nothing more)
  65. 65. ● Focus on modern cloud applications ○ No UI, no session replication ● Adds non-Java EE capabilities ○ Netflix OSS, Swagger, etc. ● Implementation of the MicroProfile specification Monoliths Microservices
  66. 66. ● Eclipse Foundation project ● Open source Java microservices specifications ● WildFly Swarm is Red Hat’s implementation
  67. 67. 1:1 Relationship Loose Relationship
  68. 68. ● A maven artifact providing a specific piece of functionality ● Can be auto-detected or explicitly declared ● 184 fractions currently available ○ 158 stable ○ 26 experimental ○ JAX-RS, CDI, Swagger… ○ org.wildfly.swarm:microprofile:${version.wildfly-swarm} Fractions Supported Specifications Java EE 7 Web Profile* MicroProfile 1.0 Certifications Hystrix Ribbon MySQL Oracle DB Metrics Additional Supported Fractions Health Configuration Topology Monitor Keycloak Upstream (Community) Flyway Logstash Fluentd Swagger JMS Vert.x Integration Consul Spring Jolokia Infinispan jGroups
  69. 69. ● Uber Jar (packages your app + what’s needed to run it) ● Hollow Jar (excludes app) (Community) Packaging
  70. 70. Uber Jar anatomy Maven repo containing fraction dependencies Manifest-Version: 1.0 Main-Class: org.wildfly.swarm.bootstrap.Main The app’s original WAR file (could be JAR) Bootstrapping glue using JBoss modules system Default main() WildFly Swarm classes/resources
  71. 71. Hollow Jar anatomy ● Contains the bits needed to run the application, but not the application itself. ● Container based deployments: hollow jar as part of the base image ○ Only the top image layer needs to be updated.
  72. 72. Configuration Define by: ● System properties ● Project stages (yml) ● XML ● Command-line arguments Access by: ● Java API ● Annotation
  73. 73. Monitoring ● Provided through the monitor fraction ● Exposes REST endpoints providing runtime status { "name": "swarm-server", "server-state": "running", "suspend-state": "RUNNING", "running-mode": "NORMAL", "uuid": "ea781a82-904d-4b4f-a7ad-68e99e0ce4fd", "swarm-version": "2017.8.1" } /node
  74. 74. Monitoring ● Provided through the monitor fraction ● Exposes REST endpoints providing runtime status { "heap-memory-usage": { "init": 325058560, "used": 315881232, "committed": 574095360, "max": 4610064384 } } /heap
  75. 75. Monitoring ● Provided through the monitor fraction ● Exposes REST endpoints providing runtime status { "thread-count": 51, "peak-thread-count": 76, "total-started-thread-count": 89, "current-thread-cpu-time": 18220976, "current-thread-user-time": 10000000 } /threads
  76. 76. Monitoring { "checks": [ { "id": "server-state", "result": "UP", "data": { "date": "Mon Sep 04 22:17:43 CEST 2017" } } ], "outcome": "UP" } /health @GET @Health @Path("/status") public HealthStatus check() { return HealthStatus.named("server-state").up().withAttribute("date", new Date().toString()); }
  77. 77. mvn package Build mvn wildly-swarm:run OR java -jar <my-app>-swarm.jar OR IDE > Run … org.wildfly.swarm.Swarm() Run
  78. 78. Tooling ● JBoss Forge add-on ○ Generate code/scaffolding ● SwarmTool ○ Standalone jar that is used to wrap an existing JAR or WAR file in a -swarm.jar without requiring any other tooling forge$ project-new --named demo --stack JAVA_EE_7 forge$ wildfly-swarm-setup forge$ wildfly-swarm-new-test --target-package org.example.rest --named HelloWorldEndpointTest
  79. 79. wildfly-swarm.io/generator
  80. 80. Ok, so it’s (also) about being lighter? Don’t believe it? Try it out yourself http://bit.ly/modern-java-runtimes Runtime (framework) Boot time server only Boot time including app deployment Memory usage without load Memory usage under load Measured throughput JBoss EAP (Java EE) 2 - 3 sec 3 sec 40 MB 200 - 400 MB 23K req/sec JBoss EAP (Spring) 2 - 3 sec 7 sec 40 MB 500 - 700 MB 9K req/sec JBoss WS/Tomcat (Spring) 0 - 1 sec 8 sec 40 MB 0.5 - 1.5 GB 8K req/sec Fat JAR (Spring Boot) N/A 3 sec 30 MB 0.5 - 2.0 GB 11K req/sec Fat JAR (WF Swarm) 1-2 sec 5 sec 30 MB 250 - 350 MB 27K req/sec
  81. 81. How to select the runtimes Selection Consideration Project Type Framework Pref Learning Effort Deployment Pkg Runtimes Cloud Native (new) Cloud Enable (existing) Java EE Non-Java EE No Little Invest Thin Fat Hollow Lift & Shift Connect & Enhance Refactor & Rewrite EAP + + + + + + + Swarm + + + + + + + + + + Vert.x + + + + + + + Node.js + + + + + + Tomcat + Spring Boot + + + + + Spring Boot
  82. 82. QUESTIONS?
  83. 83. VERTX.IO: REACTIVE MICROSERVICES EAP and beyond: Red Hat Open Application Runtimes Ugo Landini Solution Architect
  84. 84. RUNTIMES (Container images and Maven Artifacts) JAVA EE (JBoss EAP) MICROPROFILE (WildFly Swarm) OPENSHIFT SERVICES REACTIVE (vert.x) NODE.JS APACHE TOMCAT TESTED FRAMEWORKS (Maven Artifacts) SPRING BOOT / CLOUD NETFLIX OSS Ribbon OpenShift.io (Developer SaaS) Generators IDE etc. Management APM Metrics Service Discovery Config. Logging Health Check Load Balancing CI/CDSSOMessaging IMDG API Mgmt NETFLIX OSS Hystrix ... RHOAR: OpenShift Application Runtimes
  85. 85. Free from : https://developers.redhat.com/
  86. 86. ● Reactive Microservices Toolkit for the JVM ● Polyglot - Java, JavaScript, jRuby, Python, Groovy, Scala, Kotlin ● Distributed Event Bus for lightweight messaging ● Event Driven Non-Blocking I/O ● Ideal for high concurrency, low latency applications / services ● 2014 JAX Innovation Awards Winner
  87. 87. How to select the runtimes Selection Consideration Project Type Framework Pref Learning Effort Deployment Pkg Runtimes Cloud Native (new) Cloud Enable (existing) Java EE Non-Java EE No Little Invest Thin Fat Hollow Lift & Shift Connect & Enhance Refactor & Rewrite EAP + + + + + + + Swarm + + + + + + + + + + Vert.x + + + + + + + Node.js + + + + + + Tomcat + Spring Boot + + + + + Spring Boot
  88. 88. Why Reactive? Apps In The Past Apps Today Single/Few Machines Clusters of Machines Single/Few Core Machines Multicore Machines Expensive RAM Cheap RAM Expensive Disk Cheap Disk Slow N/W Fast N/W Few Concurrent Users Many Concurrent Users Small Data Sets Large Data Sets Latency in secs Latency in ms
  89. 89. The 2 faces of Reactive Reactive A software showing responses to stimuli Reactive Systems Reactive Programming Akka, Vert.x Reactor, RX, Vert.x Actor, Agent Autonomic Systems Data flow, Functional programming
  90. 90. Reactive Manifesto http://www.reactivemanifesto.org/ Reactive Systems are an architecture style focusing on responsiveness
  91. 91. Asynchronous message passing => Elasticity Components interacts using messages Messages allows elasticity Resilience is not only about failures, it’s also about self-healing Send to an address Dispatch to components subscribed to the address
  92. 92. Pragmatic Reactive systems And that’s what Vert.x offers to you Development model => Embrace asynchronous Simplified concurrency => Event-loop, not thread-based I/O ● Non-blocking I/O, if you can’t isolate ● HTTP, TCP, RPC => Virtual address ● Messaging
  93. 93. Asynchronous development models Async programming ● Exists since the early days of computing ● Better usage of hardware resource, avoid blocking threads Approaches ● Callbacks ● Future / Promise (single value, many read, single write) ● Data streams - Reactive Programming ● Data flow variables (cell) ● Continuation ● Co-Routines
  94. 94. Reactive Architecture / Software Application to software A software showing responses to stimuli ● Events, Messages, Requests, Failures, Measures, Availability… ● The end of the flow of control ? Is it new? ● Actors, Object-oriented programming… ● IOT, Streaming platform, complex event processing, event sourcing…
  95. 95. Building Reactive Systems Message Driven Microservices https://www.reactivemanifesto.org/ Tooling (OCP, Kubernetes) Reactive Systems
  96. 96. Vert.x Event Loop Multi-Reactor Verticle Verticle Verticle Verticle Verticle JVM Vert.x Instance Verticle Verticle Verticle Verticle Verticle JVM Vert.x Instance vertx.eventBus
  97. 97. All you need is (reactive) love Reactive Systems Reactive Programming
  98. 98. QUESTIONS?
  99. 99. L’Integrazione nell’era dei Microservizi Cloudify your applications: Microservices and beyond Filippo Calà Solution Architect
  100. 100. Integration
  101. 101. Integration ESB Contract Platform Data Application UDDI Process Flow
  102. 102. MICROSERVICES ?
  103. 103. Integration
  104. 104. Integration
  105. 105. YOU WILL STILL NEED INTEGRATION, EVEN WITH MICROSERVICES!
  106. 106. Agile Integration
  107. 107. “L'integrazione agile è un approccio architetturale che combina metodi e pratiche agili con le tecnologie, allo scopo di integrare rapidamente applicazioni e dati tramite piattaforme specificamente idonee a soluzioni integrate flessibili e adattative.”
  108. 108. AGILE INTEGRATION Cloud native solutions Lean artifacts, individually deployable Container based scaling and high availability ● Lightweight ● Pattern Based ● Reusable Connectors ● Microservice Based ● Cloud native solutions ● Lean artifacts, individually deployable ● Container based scaling and high availability ● Well defined, re-usable, and well managed end-points ● Ecosystem leverage Flexibility Scalability Re-Usability Distributed Integration Container API
  109. 109. AGILE INTEGRATION Cloud native solutions Lean artifacts, individually deployable Container based scaling and high availability Flexibility Scalability Re-Usability Distributed Integration Container API APACHE CAMEL APACHE CAMEL 3SCALE OPENSHIFT KUBERNETES DOCKER FABRIC8 APACHE KARAF SPRING BOOT
  110. 110. AGILE INTEGRATION Cloud native solutions Lean artifacts, individually deployable Container based scaling and high availability Flexibility Scalability Re-Usability Distributed Integration Container API FUSE FUSE 3SCALE OPENSHIFT KUBERNETES DOCKER FABRIC8 APACHE KARAF SPRING BOOT
  111. 111. Fuse iPaaS Fuse Integration Services Fuse Standalone FUSE Three Fuse Product Initiatives
  112. 112. Fuse Integration Service APACHE CAMEL SPRING-BOOT APACHE KARAF CONTAINER OPENSHIFT JBOSS DEVELOPER STUDIO Writing, configure, test and debug integration/MSA route in JBDS Camel define routing and mediation rules based on Enterprise Integration Pattern and with 160+ built-in components Choose between OSGi standard or Spring-boot standalone framework Deploy, run and manage integration application on enterprise-class cloud development Platform Build and produces ready-to-run container image using s2i toolkit
  113. 113. CAMEL DSL JBOSS DEVELOPER STUDIO Java DSL Blueprint DSL (XML) Spring DSL (XML)
  114. 114. Demo
  115. 115. microservice by Fuse Client API (Interface, Contracts) Routing Protocol Endpoints Transform ation Microservice
  116. 116. QUESTIONS?
  117. 117. Openshift.io: Portiamo l'IDE nel cloud Giuseppe Bonocore Solution Architect
  118. 118. RUNTIMES (Container images and Maven Artifacts) JAVA EE (JBoss EAP) MICROPROFILE (WildFly Swarm) OPENSHIFT SERVICES REACTIVE (vert.x) NODE.JS APACHE TOMCAT TESTED FRAMEWORKS (Maven Artifacts) SPRING BOOT / CLOUD NETFLIX OSS Ribbon OpenShift.io (Developer SaaS) Generators IDE etc. Management APM Metrics Service Discovery Config. Logging Health Check Load Balancing CI/CDSSOMessaging IMDG API Mgmt NETFLIX OSS Hystrix ... RHOAR: OpenShift Application Runtimes
  119. 119. Openshift.io - Eclipse CHE tooling 125
  120. 120. What is needed to make a contribution? IDE Project Files Runtimes
  121. 121. What is needed to make a contribution? Configuration IDE RuntimesProject Files Workspace Today
  122. 122. Che Workspaces IDE RuntimesProject Files
  123. 123. Projects are mounted into the runtimes Projects rely on workspace runtimes
  124. 124. Workspaces define commands mvn clean install start mysql deploy project Commands are executed as processes in workspace runtimes
  125. 125. Workspaces provide their own browser IDE
  126. 126. Desktop IDEs can connect over SSH
  127. 127. Workspaces are hosted in Che’s server
  128. 128. Plug-ins
  129. 129. Developer Workspace
  130. 130. Project Badging Developer Workspace Developer Workspace
  131. 131. Openshift.io: Cloud Based IDE, SDLC and more...
  132. 132. OpenShift.io Unified view across teams and projects Plan and track Analyze Plan Assign Prioritize Create and Build Cloud IDE Desktop IDE Developer Workspace Artifact Management Testing Code Analysis Git Repos Openshift Pipelines Runtime
  133. 133. Create new Space
  134. 134. Multiple, guided ways to Get Started
  135. 135. Wizards, powered by Forge project
  136. 136. Advanced Openshift Pipelines
  137. 137. Integrated planner
  138. 138. Kanban Boards
  139. 139. Browser based IDE
  140. 140. Fabric8 Analytics Suggestions
  141. 141. Insights and suggestions
  142. 142. QUESTIONS?
  143. 143. EnMasse : open sourcing the messaging & IoT The messaging as a service platform Paolo Patierno Senior Software Engineer Luca Bigotta Solution Architect 9/11/2017
  144. 144. EnMasse Messaging-as-a-Service ● Open source cloud messaging running on Kubernetes and OpenShift ● enmasse.io ● github.com/enmasseproject/enmasse
  145. 145. EnMasse Features ● Multiple communication patterns: request/response, publish/subscribe and competing consumers ● Support for “store and forward” and direct messaging mechanisms ● Scale and elasticity of message brokers ● AMQP 1.0 and MQTT support ● Simple setup, management and monitoring ● Multitenancy: manage multiple independent instances ● Deploy “on premise” or in the cloud
  146. 146. Basic idea Routers and brokers R R R P C B B
  147. 147. Routing vs Brokering Broker Producer Broker Consumer Send message Accepted Send message Accepted
  148. 148. Routing vs Brokering Router Producer Router Consumer Send message Accepted Send message Accepted
  149. 149. Address model Address space ● Type ● Plan Address ● Type ● Plan ● Properties 1 N 1 M ● Address space : group of addresses accessible through a single connection (per protocol) ● Address : a destination used for sending and receiving messages Spaces and Addresses
  150. 150. EnMasse Architecture - “Standard” address space Qpid Dispatch Router network ActiveMQ Artemis brokers Admin MQTT gateway MQTT clients AMQP & JMS clients
  151. 151. EnMasse “Brokered” address space ActiveMQ Artemis brokers Admin AMQP & JMS clients
  152. 152. EnMasse Security Qpid Dispatch Router network ActiveMQ Artemis brokers Admin MQTT gateway MQTT clients AMQP & JMS clients With AMQP SASL plugin
  153. 153. Scaling Routers R R R R A
  154. 154. Scaling Routers R R R R A
  155. 155. Scaling Brokers a a b b Router network a
  156. 156. Scaling Brokers a a b b Router network a
  157. 157. MQTT over AMQP ● MQTT gateway ○ Handles connections with remote MQTT clients ○ Bridges MQTT - AMQP protocols ● MQTT lwt ○ Provides the “will testament” feature ○ In charge to recover & send the “will” if client dies ● It brings MQTT features over AMQP so … ○ … it’s not just about translating and bridging protocols … ○ … “will testament” works for AMQP clients as well
  158. 158. EnMasse Future work ● HTTP(S) support ● Bridging address spaces ● Kafka integration ○ as part of the “standard” address space (i.e. one AMQP connection for multiple destinations, even a Kafka topic) ○ as “kafka” address space (accessible through native Kafka clients) ● Improve Kubernetes support ○ RBAC ○ CI (only for OpenShift at present) ○ ingress (with better support for TLS SNI) ● Integrate better with Eclipse Hono ○ provides interface and API (telemetry, event, …) for connecting IoT devices
  159. 159. QUESTIONS?
  160. 160. BUSINESS AUTOMATION Process Driven Application, Decisions & Resource Planning Donato Marrazzo Specialist Solution Architect
  161. 161. Who cares? Let’s ask to Google Trends! ⬤ Business Process Management ⬤ Business Rules ⬤ Microservices ⬤ Artificial Intelligence ⬤ Cloud Computing ⬤ Microservices
  162. 162. Treating business processes as assets that can be adapted, automated and re-designed is key to innovation and digital transformation. Only about 37% of most typical business processes have been digitized. Source: McKinsey
  163. 163. BUSINESS PROCESSES
  164. 164. Process Driven Application GOAL Reimagine processes for digital participation HOW Shift from BPM to low code process apps MANIFESTATION Process applications
  165. 165. Tools for business experts Tools for developers RED HAT JBOSS BPM SUITE PROCESS PARTICIPANTS LEGACY SYSTEMS CLOUD SERVICES APPS APPS APPS Process Services Decision Services Enables construction of apps that automate a business process - using a model to drive work through the process to completion… Business Central Process Server
  166. 166. BPMS v7 ● More convenient and pleasurable for citizen developer ● Extended Case Management support ● Improving collaborative Team work ● First class support for OpenShift Major themes
  167. 167. CITIZEN DEVELOPER
  168. 168. CITIZEN DEVELOPER PROFILE
  169. 169. BPMN2 MODELER Stunner
  170. 170. App Former
  171. 171. Dashbuilder AppFormer-based
  172. 172. Entando Partnership
  173. 173. CASE MANAGEMENT
  174. 174. BPM Usage spectrum Straight Through The BPM engine “choreographs” a sequence of automated activities, it involves humans by exception ● Trading processes (Capital Market, Banking, Energy ...) ● Automatic claims processing ● Automatic reordering ● Inventory reduction / rebalancing ● Order to cash automation Human Intensive The BPM says to humans which is the next action in a quiet pre-ordered manner. ● Order fulfillment ● Claims processing ● Loan approvals ● Mortgage origination ● Travel requests ● Purchase requests ● Mobile workforce support Case Management BPM suggests possible next steps, Humans decides the next best action eventually overriding with and ad hoc activity. Users look at the BPM as a task and document organizer ● Investigation solution ● Incident management solution ● Next-Gen customer onboarding ● Customer retention program ● Personalized customer service ● Omni-channel engagement marketing
  175. 175. Engine Support Runtime Strategy PER_CASE provides a single KIE-Session for all process instances within a case. Case Files Live in session’s “WorkingMemory” (as opposed to process variables). Case-scoped, so accessible to all process instances in a given case Case Roles Per-case mapping of users and groups to case-users and case-groups People can have different roles in different case instances. Mapping provided when case is created (and can be changed afterwards) Case Management
  176. 176. Focus on Stages At glance: ● Data ● Task ● Milestones ● Roles ● Activities ● Documents Case view
  177. 177. DEPLOYMENT
  178. 178. CONTROLLER Websocket communication KIE Server initiate the communication at startup and the controller reuse it. Previously, for managed KIE Server configuration, both controller and kie server need to know how to communicate with each other ● This was particularly complex to manage in OpenShift environments, where pod can be created and destroyed frequently
  179. 179. Main goals: ● Hide the complexity of many KIE Server instances hosting different projects (kjars) ● Aggregate information from different KIE Servers regardless if they share the same DB or host the same projects (kjars) KIE Server send notifications to Smarter Router when configuration is changed: container start / stop, instance start/ stop SMARTER ROUTER Hide configuration complexity
  180. 180. ● Users interact with KIE Servers always via Smart Router ● KIE Servers can come and go at anytime and register/unregister in the Smart Router ● Smart Router will dynamically update Controller with new containers coming in ● Admin Console knows existing KIE servers CLOUD ARCHITECTURE Immutable Unmanaged KIE Servers with Smart Router and Admin Console
  181. 181. The Execution Errors view shows a list of errors User can acknowledge errors Quick search Filter by fields ● Process Instance Id ● Job Id ● Type ERROR HANDLING
  182. 182. BUSINESS DECISIONS
  183. 183. Tools for business experts Tools for developers RULES RED HAT JBOSS BRMS APPS APPS APPS Decision Services Business Central Decision Server Client App Enables construction of apps that automate business decisions, guided by business rules...
  184. 184. Decision Tables
  185. 185. “DMN, which stands for Decision Model and Notation, is a relatively new standard managed by OMG, the organization behind BPMN. It is trying to do for Business Decision Management what BPMN did for Business Process Management a decade ago: empower the business to take charge of the logic that drives its operations, through a vendor-independent diagramming language.” (Bruce Silver) ● Version 1.1 released in June 2016 ● Defines among other things: ○ a graphical language for business decision modelling ○ a standard notation for decision tables ○ an expression language called FEEL (which stands for Friendly Enough Expression Language) ○ a metamodel and an interchange format (XML) ○ 3 conformance levels for tool implementations
  186. 186. Basic concepts a Decision is the act of determining an output value from a number of input values A Business Knowledge Model encapsulates business know-how in the form of business rules, analytic models, or other formalisms. Input Data may be data structures, rather than just simple data items. a decision requires one or more input data a Decision requires one or more Business Knowledge
  187. 187. BUSINESS RESOURCE PLANNING
  188. 188. Optimize Goals With limited Resources Under Constraints BUSINESS RESOURCE PLANNING
  189. 189. EXAMPLES
  190. 190. Business Resource Planner is an “optimization engine” (or “constraint satisfaction solver”) platform that runs on JBoss BRMS It enables regular Java developers to create solvers for complex planning problems using a variety of out-of-the-box provided algorithms It adds unique value to a JBoss BRMS and/or JBoss BPM Suite subscription BUSINESS RESOURCE PLANNER
  191. 191. QUESTIONS?

×