SlideShare a Scribd company logo
1 of 181
Download to read offline
MIDDLEWARE TRACK
A cura del Middleware Solution Architect team di Red Hat
#redhatosd
Agenda Middleware Track part 1
● 14.00 MicroServices, le dimensioni non contano
○ Ugo Landini, Samuele Dell’Angelo
● 14.30 Wildfly Swarm, Spring Boot & Vertx.io: il nuovo che avanza
○ Ugo Landini, Samuele Dell’Angelo
● 15.00 Microservices con JBoss EAP 7: innovare in continuità
○ Giuseppe Bonocore
● 15.30 Microregole per grandi progetti con il BRMS
○ Andrea Leoncini
Agenda Middleware Track part 2
● 16.00 Integrazione e microservizi: come un cammello può passare dalla
cruna di un ago
○ Filippo Calà, Giuseppe Bonocore
● 16.30 API Management con 3Scale nell’era dei microservizi
○ Luca Bigotta
● 17.00 SALA PLENARIA
● 17.15 ESTRAZIONE FINALE PREMI
#redhatosd
MicroServices:
le dimensioni non contano
Ugo Landini & Samuele Dell’Angelo
#redhatosd
389 project | aeolus-configure | anaconda | attr | Audrey | Augeas | AuthHub | Autofs | Avahi | Beaker | Boxes | Btrfs | CacheFS | Cairo | candlepin | certmonger | CIFS | Cluster 3 | cobbler | colord | Completely Fair Scheduler | Conductor
Control Group Configuration Library | Corosync | CRaSH | Crypto API | Cumin | Cygwin | D-Bus | Dashbuilder | Data Grids for the Java Platform | device-mapper | DeviceKit | DistributionUtilities | dlm | Dogtag | DPDK | Dracut | Editline Library
EDS | EJB 3 | elfutils | elfutils | Embedded Jopr | Evolution | Evolution-exchange | eXo JCR | ext3 | ext4 | fence-agents | fence-virt | Flannel | fontconfig | func | Gamin | GateIn Portal | gcc | gcc | gcj | gdb | GFS | GFS2 | glib | gss-proxy
GTK+ | gvfs | gzip | HTCondor | ID Utils | imagefactory | IPSec-Tools | iptraf-ng | Jandex | Java | JGroups | Jreadline | JRuby | JSFUnit | jUDDI | Katello | Kerberos | Kimchi | Koji | libguestfs | libibverbs | libminidump | libnotify | libqb
libstoragemgmt | libuser | libvirt | libxml2 | libxslt | Linux Audit | Linux Infiniband Project | Linux Kernel | Linux PAM | linux-nfs | Luci | LVM2 | LVM2 | lynx | ManageIQ | Matahari | Maven Integration for Eclipse | Maven Integration for
Web Tools Platform | Mock | mod_cluster | moVirt | nautilus | netfilter | NetworkManager | NFS-Ganesha | nmap | Open vSwitch | openais | OpenDaylight | OpenJDK | OpenSSH | OpenSSL | OPNFV | OProfile | oVirt | oVirt Engine | oVirt Node | OVMF | Oz
pacemaker | PackageKit | PackageKit | pango | PAPI | Paradyn | patchutils | Performance Co-Pilot | PicketBox | PicketLink | piglit | pixman | polkit | Polkit Qt | Poppler | Portlet Bridge | PostgreSQL | PressGang
psmisc | Pulp | PulseAudio | pungi | pynfs | QEMU | Red Hat Update Agent | RESTEasy | rgmanager | RHQ | rpm | rpmgrill | RSYSLOG | Samba | Samba | SETroubleshoot ShrinkWrap | slapi-ns | Smokestack | Spacewalk
Spherical | Spice | Spice-gtk | Spice-protocol | Stilts | suds | SWI Prolog | SwitchYard | syslog-ng | System Security Services Daemon | systemd | SystemTap | The Foreman | Thin Crust | tin | UberFire | udev
udisks | udisks | UPower | util-linux | Valgrind | vc-dwim | vdagent | vdsm | vfs | Virt-clone | Virt-image | Virt-Install | Virt-manager | Virt-viewer | Virtual memory manager | Wallaby | Wayland | Wise | XFS | xinput | XNIO | Xorg | XrandR | yum
10 Deploy al giorno
Come è possibile?
Cos’è una Microservice Architecture (MSA)?
Un approccio architetturale per decomporre applicazioni complesse in sistemi indipendenti
● Organizzati
per business
capabilities
● Scalabilità
indipendente
● Ciclo di vita
indipendente
● Governo
decentralizzato
● Data management
decentralizzato
Cos’è una Microservice Architecture (MSA)?
Picco di
aspettative
gonfiate
x
Disillusione
Qui si fa sul serio
Your Journey to Microservices :-)
Self-Service,
On-Demand,
Elastic,
Infrastructure
as
Code
(Cloud)
Re-Org ->
DevOps
Automazione:
Puppet, Chef,
Ansible
e/o
Containers
CI & CD
Deployment
Pipeline
Un
Microservizio
Silicon
Valley
DotCom
Startup
Cos’è una Microservice Architecture (MSA)?
1. Self-Service, on-demand, elastic infrastructure as code
a. Quanti gg per il provisioning di una nuova VM?
2. Dev vs Ops
Chi risponde al telefono se l’app non funziona?
3. Automation
Phoenix vs Snowflake
4. CI & CD
a. Deployment Pipeline
Cos’è una Microservice Architecture (MSA)?
Cos’è una Microservice Architecture (MSA)?
GREEN
BROWN
A Development / Deployment Time:
● Automation
● Continuous Integration / Delivery
● Configuration Management
● Service / API design
● Rigorous Testing
● Dependency management
● Design for eventual consistency
● Artifact repositories
Container: standardizzazione, automation e
dependency management
User Experience: maggiore produttività per gli sviluppatori
A Runtime:
● Standardization
● Isolation
● Service Discovery
● Load Balancing
● Circuit Breaker, Fallback
● Health checks & automated recovery
● Distributed logging
● Tracing
● Infrastructure Monitoring
● Deploy facile e portabile
● Creato da immagini immutabili e
a strati (layered)
● Isolato dal sistema operativo
dell’host.
I Container impacchettano le applicazioni con le loro
dipendenze, isolando il runtime
Alta densità e massima efficienza
HOST OS
SERVER
CONTAINER
LIBS
APP
CONTAINER
LIBS
APP
DEMO BUILD YOUR OWN CONTAINER IN 50 lines
● Isolati e sicuri
● Sembrano girare in un loro
ambiente
● Se ne possono far girare
centinaia in una sola macchina
● Le funzionalità sono nel kernel
● Docker è semplicemente un
formato
I Container sono dei semplici processi Linux
Alta densità e massima efficienza
HOST OS
SERVER
CONTAINER
LIBS
APP
CONTAINER
LIBS
APP
Kubernetes è un container orchestrator per
le applicazioni (non per le macchine)
Dal greco “pilota”: radice della parola “governatore” (dal latino: gubernator)
Master
Node
Bare Metal Virtual Private Cloud Public Cloud
Storage
Operator
External
Services
A Development / Deployment Time:
● Automation
● Continuous Integration / Delivery
● Configuration Management
● Service / API design
● Rigorous Testing
● Dependency management
● Design for eventual consistency
● Artifact repositories
Kubernetes aggiunge caratteristiche
fondamentali per le MSAs (e non solo!)
Kubernetes è la versione open di Borg, il sistema usato internamente da Google per scalare.
A Runtime:
● Standardization
● Isolation
● Service Discovery
● Load Balancing
● Circuit Breaker, Fallback
● Health checks & automated recovery
● Distributed logging
● Tracing
● Infrastructure Monitoring
OpenShift Container Platform è la versione
ENTERPRISE di Kubernetes
SERVICE CATALOG
(LANGUAGE RUNTIMES, MIDDLEWARE, DATABASES, …)
SELF-SERVICE
APPLICATION LIFECYCLE MANAGEMENT
(CI / CD)
BUILD AUTOMATION DEPLOYMENT AUTOMATION
CONTAINER CONTAINERCONTAINER CONTAINER CONTAINER
NETWORKING SECURITYSTORAGE REGISTRY
LOGS &
METRICS
CONTAINER ORCHESTRATION & CLUSTER MANAGEMENT
(KUBERNETES)
RED HAT ENTERPRISE LINUX
CONTAINER RUNTIME & PACKAGING
(DOCKER)
ATOMIC HOST
INFRASTRUCTURE AUTOMATION & COCKPIT
A Development / Deployment Time:
● Automation
● Continuous Integration / Delivery
● Configuration Management
● Service / API design
● Rigorous Testing
● Dependency management
● Design for eventual consistency
● Artifact repositories
Openshift Container Platform aggiunge
ulteriori servizi per gli sviluppatori
Il developer si deve concentrare solo sul design & development dei microservizi
A Runtime:
● Standardization
● Isolation
● Service Discovery
● Load Balancing
● Circuit Breaker, Fallback
● Health checks & automated recovery
● Distributed logging
● Tracing
● Infrastructure Monitoring
Wildfly Swarm, Vertx.io & Spring Boot:
Il nuovo che avanza
Ugo Landini & Samuele Dell’Angelo
#redhatosd
MicroProfile 1.0!
Ottimizzare Enterprise Java per i Microservices
Microservice Collaboration and Innovation in the Java Community
Learn more @ microprofile.io
DropWizard
www.dropwizard.io
JAX-RS API
Il primo sul mercato
DropWizard Metrics
Embeddable servers:
Jetty
Spring Boot
projects.spring.io/spring-boot
Spring API (@RestController)
‘Starter’ POMs:
start.spring.io
Embeddable servers:
Tomcat, Jetty, Undertow
WildFly Swarm
wildfly-swarm.io
Java EE 7 APIs
‘Starter’ POMs:
wildfly-swarm.io/generator
Embeddable servers:
WildFly (Undertow)
Opinionated & java -jar myapp.jar
● Stesse tecnologie di JBoss, ma diverso punto di vista
● Si “monta” tanto Application Server quanto basta per il servizio
○ MicroProfile 1.0
○ Flat jar
○ Interfaccia web o via JBoss Forge per scegliere cosa serve
(Un-Opinionated) Toolkit per applicazioni reactive & async
Low-latency microservices che interagiscono con l’EventBus
Elasticità e resilienza “built-in”
Democratico, parla con tutti (.NET, Go, Ceylon, Rust, Cobol, Java
EE, Spring...)
vertx.io
http://vertx.io/blog/my-first-vert-x-3-application/
Vert.x EventBus
Verticle1
Verticle2
Verticle3
Verticle4
Verticle5
JVM
Vert.x Instance
Verticle1
Verticle2
Verticle6
Verticle7
JVM
Vert.x Instance
vertx.eventBus
DEMO VERTX.IO, SWARM & SB & All in One
Release It!
Michael T. Nygard
(Java outdated, ma le storie dei
fallimenti sono eccezionali)
Il libro che ha inventato il Circuit
Breaker
Service A Service B
Circuit Breaker
Service A Service B
Hystrix - circuit-breaker, bulkhead
Distributed Tracing
App tradizionali Microservizi
Virtuale
Cloud
Fisico
App
tradizionali
Microservizi
Red Hat xPaas
Application Server
Pivotal tc Server, VMware vFabric, Oracle WebLogic
Server, IBM WebSphere
JBoss EAP
JBoss Web Server
In-memory data grid
IBM WebSphere eXtreme Scale, Oracle Coherence,
Pivotal GemFire, Software AG Terracotta JBoss Data Grid
Application integration
IBM Integration Bus, Oracle SOA Suite and ESB, MuleSoft
AnyPoint Platform, Sonic ESB, Tibco ActiveMatrix JBoss Fuse
Business rules and
process automation
IBM Operational Decision Manager and BPM, Oracle SOA
Suite and BPM Suite, Pega BPM, FICO Blaze Advisor
JBoss BRMS
JBoss BPM Suite
Messaging
IBM WebSphereMQ, Pivotal RabbitMQ, VMware vFabric,
Tibco Enterprise Message Service JBoss A-MQ
Mobile
IBM MobileFirst, SAP Mobile Platform, Kony Mobility
Platform, Telerik Platform, AnyPresence Mobile Application Platform
Data virtualization and
data services
IBM InfoSphere, Progress DataXtend SI, Composite
Information Server, Denodo JBoss Data Virtualization
Links
Microservices Playground
bit.ly/msa-instructions
http://developers.redhat.com/downloads
Container Development Kit
Recorded Demo: https://youtu.be/SPATMHP-xw8
https://github.com/redhat-italy/osd-microservices-apps
OSD Demo Applications
MICROSERVICES con EAP7:
Innovare in continuità
Giuseppe Bonocore
#redhatosd
JBoss Enterprise Application Platform
● Basato su WildFly
○ Hibernate, CXF, Infinispan...
● Utilizzato da migliaia di aziende in
Italia e nel mondo
○ Banking, Telco, Utility, mission
critical
● Semplice e performante
○ Packaging, boot time, performance
#1 Open Source JEE Server
Enterprise Application Platform 7
● JEE 7 certified
○ WebSocket, batch, JSon
● Semplificazione
○ Port reduction, graceful shutdown
● Consolidamento
○ Undertow, Artemis
Cosa c’è di nuovo
Enterprise Application Platform 7
● AngularJS
● Arquillian
● jQuery, jQuery Mobile
● Spring (Web Flow, WS, Security)
Tested Frameworks
Enterprise Application Platform 7
Scenari
Fisico Virtuale Cloud
Applicazioni
Tradizionali
Microservizi
Enterprise Application Platform 7
Scenari
Applicazioni
Tradizionali
Microservizi
Enterprise Application Platform 7
● Microservizi in Java: UberJar con Hibernate, CXF, Log4j…
○ Il rischio è di ricostruire un application server…
● EAP: Ottimizzato per i Microservizi
○ Boot time in 2 sec (circa), lazy loading modules, 2 (o 1) porte,
containerizzabile, scriptabile
Microservices in JEE ?!?!
Enterprise Application Platform 7
● Riutilizzo di codice e skills
○ JEE features in un microservizio
(Clustering con OSE !)
● Hipster ready :-)
○ Wildfly Swarm, JS Server side
Microservices in JEE ?!?!
EAP S2i
Nome App
Puntamenti
GIT
Enterprise Application Platform 7
Red Hat xPaas
Enterprise Application Platform
JBoss Web Server (Tomcat)
JBoss Data Grid
JBoss Developer Studio
Fuse
A-MQ
Data Virtualization *
Business Process
Management *
Business Rules
Management System
Red Hat Mobile /
FeedHenry
Application
Container Services
Integration
Services
Business
Process Services
Mobile
Services
* Coming Soon
Enterprise Application Platform 7
Red Hat xPaas
OPENSHIFT CONTAINER PLATFORM
Red Hat Enterprise Linux Red Hat Enterprise Linux Red Hat Enterprise Linux
Container ContainerJBoss
EAP
JBoss
Data Grid
JBoss
Fuse
Container JBoss
A-MQ
ContainerJBoss
BRMS
ORCHESTRATION
Architettura
OpenShift può girare su qualsiasi tipo di infrastruttura
I nodi sono istanze di RHEL
I servizi girano in container Docker
Registry
I Pod eseguono uno o più docker container
I Master orchestrano i nodi e le app
I Master forniscono API per autenticazione di utenti & client
I Master usano etcd per la persistenza
I Master forniscono lo scheduler per la gestione dei pod sui nodi
Il posizionamento dei Pod è determinato da una policy
I Service permettono ai pods di connettersi l’un l’altro
I Management/Replication controller gestiscono il ciclo di vita dei pod
OpenShift gestisce il recover in automatico
OpenShift gestisce il recover in automatico
I Pods possono connettersi ad uno shared storage
Il Routing layer “ruota” richieste esterne ai pod
I Dev accedono ad openShift via web, CLI o IDE
Virtuale
Cloud
Fisico
App
tradizionali
Microservizi
Red Hat xPaas
Application Server
Pivotal tc Server, VMware vFabric, Oracle WebLogic
Server, IBM WebSphere
JBoss EAP
JBoss Web Server
In-memory data grid
IBM WebSphere eXtreme Scale, Oracle Coherence,
Pivotal GemFire, Software AG Terracotta JBoss Data Grid
Application integration
IBM Integration Bus, Oracle SOA Suite and ESB, MuleSoft
AnyPoint Platform, Sonic ESB, Tibco ActiveMatrix JBoss Fuse
Business rules and
process automation
IBM Operational Decision Manager and BPM, Oracle SOA
Suite and BPM Suite, Pega BPM, FICO Blaze Advisor
JBoss BRMS
JBoss BPM Suite
Messaging
IBM WebSphereMQ, Pivotal RabbitMQ, VMware vFabric,
Tibco Enterprise Message Service JBoss A-MQ
Mobile
IBM MobileFirst, SAP Mobile Platform, Kony Mobility
Platform, Telerik Platform, AnyPresence Mobile Application Platform
Data virtualization and
data services
IBM InfoSphere, Progress DataXtend SI, Composite
Information Server, Denodo JBoss Data Virtualization
Links
Microservices Playground
bit.ly/msa-instructions
http://developers.redhat.com/downloads
Container Development Kit
Recorded Demo: https://youtu.be/SPATMHP-xw8
https://github.com/redhat-italy/osd-microservices-apps
OSD Demo Applications
MicroRegole per grandi progetti
con il BRMS
Andrea Leoncini
#redhatosd
La comunità Drools
Workbench (web UI per la redazione e la
gestione delle regole)
Expert (Rule Engine)
Fusion (CEP, Complex Event Processing)
jBPM (integrazione con processi)
OptaPlanner (pianificazione delle risorse)
Cos’è un motore di regole (Rule Engine)?
A business rules engine is a software system that executes one or
more business rules in a runtime production environment. The rules
might come from legal regulation ("An employee can be fired for any
reason or no reason but not for an illegal reason"), company policy ("All
customers that spend more than $100 at one time will receive a 10%
discount"), or other sources.
A business rule system enables these company policies and other
operational decisions to be defined, tested, executed and maintained
separately from application code.
Source: wikipedia
DROOLS/Red Hat JBoss BRMS
● Vantaggi di un Motore di Regole:
○ Permette di dire "COSA fare", e non "COME farlo".
○ Separazione della logica e dei dati
○ Centralizzazione della conoscenza
○ Integrazione dei Tool
○ Regole Understandable
○ Velocità e Scalabilità
Quando dovreste usare Red Hat JBoss BRMS
● Scenari molto complessi, difficili da definire anche per i business
experts
● Non esiste o non è noto un ben definito algoritmo
● Requisiti che hanno bisogno di essere modificati molto spesso
● Necessità di prendere decisioni molto velocemente, spesso su set
di dati non completi
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated() )
then
// sound the alarm
end
Una semplice regola
Una semplice regola CEP, senza il concetto di tempo
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated() )
then
// sound the alarm
end
Una semplice regola
Nome Regola
Una semplice regola CEP, senza il concetto di tempo
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated() )
then
// sound the alarm
end
Una semplice regola
LHS
Una semplice regola CEP, senza il concetto di tempo
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated() )
then
// sound the alarm
end
Una semplice regola
Una semplice regola CEP, senza il concetto di tempo
RHS
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated( this after[0s,10s] $f ) )
then
// sound the alarm
end
Una semplice regola CEP
Una semplice regola CEP, con il concetto di tempo
rule "Sound the alarm"
when
$f : FireDetected( )
not( SprinklerActivated( this after[0s,10s] $f ) )
then
// sound the alarm
end
Una semplice regola CEP
Una semplice regola CEP, con il concetto di tempo
TEMPO
CEP con il BRMS
Complex Event Processing: accorgersi di eventi significativi per il
business riconoscendo time-based patterns in uno o più data feed in
real-time...
● Regola + Tempo: aggiunge il concetto di tempo alle regole base
○ Sliding windows
○ Entry points
○ Time operations
Rule Engine taglia slim
● Possibilità di invocare le regole
○ localmente al runtime
○ da remoto
● Deploy
○ JEE
○ OSGI
○ Wildfly Swarm
○ Spring-Boot
○ Java standalone
○ Docker
Lanciamo la campagna Pro If
● Non preoccupatevi se la logica della vostra
applicazione è piena di If.
● Soprattutto non preoccupatevi se non l’avete
capito subito...
● Lanciamo ufficialmente la campagna Pro If
○ Gli if dal codice li togliamo noi!
Scenario di deploy
KIE factor
Sviluppatori e analisti
lavorano ai progetti e
producono regole,
servizi, modelli di dati
e processi
KIE factor
La build dei progetti
produce i cosiddetti
“artefatti”
KIE factor
L’Execution Server
prende gli artefatti
con cui crea la
propria base di
conoscenza
direttamente dal
server Maven
KIE factor
L’Execution Server
può essere eseguito
nel “Java Flavour”
preferito.
Uso del Rule Engine
Uso del Rule Engine
Un Engine “Specializzato”
No scanner, uno specifico GAV, integrato nella mia pipeline di rilascio
E se serve un motore di regole scalabile ed in alta
affidabilità?
HACEP: https://github.com/redhat-italy/hacep/
● Si possono gestire, grazie a JBoss Data Grid, un certo numero di Engine
contemporanei
○ Mantenendo contemporaneamente copie di backup
● Distribuzione degli eventi per uno o più gruppi uniformi (carta di credito,
utente, giocatore, ecc.)
● Scalabilità fino a centinaia di nodi
● Prestazioni del cluster direttamente proporzionali al numero di nodi BRMS
HACEP: https://github.com/redhat-italy/hacep/
DEMO RULE BRMS
Virtuale
Cloud
Fisico
App
tradizionali
Microservizi
Red Hat xPaas
Application Server
Pivotal tc Server, VMware vFabric, Oracle WebLogic
Server, IBM WebSphere
JBoss EAP
JBoss Web Server
In-memory data grid
IBM WebSphere eXtreme Scale, Oracle Coherence,
Pivotal GemFire, Software AG Terracotta JBoss Data Grid
Application integration
IBM Integration Bus, Oracle SOA Suite and ESB, MuleSoft
AnyPoint Platform, Sonic ESB, Tibco ActiveMatrix JBoss Fuse
Business rules and
process automation
IBM Operational Decision Manager and BPM, Oracle SOA
Suite and BPM Suite, Pega BPM, FICO Blaze Advisor
JBoss BRMS
JBoss BPM Suite
Messaging
IBM WebSphereMQ, Pivotal RabbitMQ, VMware vFabric,
Tibco Enterprise Message Service JBoss A-MQ
Mobile
IBM MobileFirst, SAP Mobile Platform, Kony Mobility
Platform, Telerik Platform, AnyPresence Mobile Application Platform
Data virtualization and
data services
IBM InfoSphere, Progress DataXtend SI, Composite
Information Server, Denodo JBoss Data Virtualization
Links
Microservices Playground
bit.ly/msa-instructions
http://developers.redhat.com/downloads
Container Development Kit
Recorded Demo: https://youtu.be/SPATMHP-xw8
https://github.com/redhat-italy/osd-microservices-apps
OSD Demo Applications
Integrazione e Microservizi:
come un cammello può passare dalla
cruna di un ago
Filippo Calà & Ugo Landini
#redhatosd
Che cosa NON è Apache Camel?
Non è un
Enterprise Service Bus
Che cos’è Apache Camel?
Camel è un potente
Framework Open Source di Integrazione
basato sugli
Enterprise Integration Pattern
Che cos’è Apache Camel?
JBoss Fuse
Open Source Lightweight Integration Platform
Che cos’è Apache Camel?
JBoss Fuse
Architettura modulare e capacità di integrazione
Che cos’è Apache Camel?
JBoss Fuse
JBoss Fuse include Apache Camel
Che cos’è Apache Camel?
JBoss Fuse
Facile da estendere
Che cos’è Apache Camel?
JBoss Fuse
Facile da gestire
Che cos’è Apache Camel?
JBoss Fuse
Fa tutto quello che fanno gli ESB e molto di
più
Integration Framework
Enterprise Integration Patterns
Enterprise Integration Patterns
Enterprise Integration Patterns
Enterprise Integration Patterns
Content Based Router
Enterprise Integration Patterns
Content Based Router
from newOrder
Enterprise Integration Patterns
Content Based Router
from newOrder
choice
Enterprise Integration Patterns
Content Based Router
from newOrder
choice
when isWidget to widget
Enterprise Integration Patterns
Content Based Router
from newOrder
choice
when isWidget to widget
otherwise to gadget
Enterprise Integration Patterns
Content Based Router
from (newOrder)
choice
when (isWidget) to (widget)
otherwise to (gadget)
Enterprise Integration Patterns
Content Based Router
from (newOrder)
.choice()
.when(isWidget) .to(widget)
otherwise().to(gadget);
Enterprise Integration Patterns
Content Based Router
from (newOrder)
.choice()
.when(isWidget) .to(widget)
otherwise().to(gadget);
Enterprise Integration Patterns
Content Based Router
from (newOrder)
.choice()
.when(isWidget) .to(widget)
otherwise().to(gadget);
Endpoint newOrder = endpoint("activemq:queue:newOrder");
Enterprise Integration Patterns
Content Based Router
from (newOrder)
.choice()
.when(isWidget) .to(widget)
otherwise().to(gadget);
Endpoint newOrder = endpoint("activemq:queue:newOrder");
Predicate isWidget = xpath("/order/product = 'widget'");
Enterprise Integration Patterns
Content Based Router
from (newOrder)
.choice()
.when(isWidget) .to(widget)
otherwise().to(gadget);
Endpoint newOrder = endpoint("activemq:queue:newOrder");
Predicate isWidget = xpath("/order/product = 'widget'");
Endpoint widget = endpoint("activemq:queue:widget");
Endpoint gadget = endpoint("activemq:queue:gadget");
Enterprise Integration Patterns
Java DSL
import org.apache.camel.builder.RouteBuilder;
public class MyRoute extends RouteBuilder {
public void configure() throws Exception {
from("activemq:queue:newOrder")
.choice()
.when(xpath("/order/product = 'widget'"))
.to("activemq:queue:widget")
.otherwise()
.to("activemq:queue:gadget");
}
}
Enterprise Integration Patterns
XML DSL
<route>
<from uri="activemq:queue:newOrder"/>
<choice>
<when>
<xpath>/order/product = 'widget'</xpath> <to uri="activemq:queue:widget"/>
</when>
<otherwise>
<to uri="activemq:queue:gadget"/>
</otherwise>
</choice>
</route>
Architecture
Componenti
Fuse Brownfield
● Runtime:
○ Pure Java
○ Karaf
○ EAP
I ferri del mestiere
● Wiring:
○ Blueprint
○ CDI
○ Spring
Fuse Greenfield
● Runtime:
○ Pure Java
○ Karaf
○ Spring Boot
I ferri del mestiere
● Wiring:
○ CDI
○ Spring
Fuse e Openshift
● Fuse + Openshift = Fuse Integration Services
● Parte dell’offerta Red Hat xPaas
● Lavoro della community Fabric8
Camel Riding in the Cloud
Fuse e Openshift
● Build then push:
○ Compilo usando il maven plugin di Fabric8
○ Push del risultato (Container Image + Metadata) in OCP
● Push then build:
○ Push del progetto su git
○ Source 2 image in OCP
Modalità di deployment
Fuse e Openshift
● Soap2Rest:
○ CXF, Freemarker
○ Pure Java, CDI
○ S2I
Un caso concreto
Fuse e Openshift
Camel
Context
Fuse e Openshift
Camel
Context
Definizione
Endpoint
Fuse e Openshift
Camel
Context
Definizione
Endpoint
Rotta in
Java DSL
Fuse e Openshift
Camel
DSL
Fuse e Openshift
Hystrix
Circuit
Breaker
Fuse e Openshift
Nome App
Puntamenti
GIT
DEMO CAMEL + OSE
Virtuale
Cloud
Fisico
App
tradizionali
Microservizi
Red Hat xPaas
Application Server
Pivotal tc Server, VMware vFabric, Oracle WebLogic
Server, IBM WebSphere
JBoss EAP
JBoss Web Server
In-memory data grid
IBM WebSphere eXtreme Scale, Oracle Coherence,
Pivotal GemFire, Software AG Terracotta JBoss Data Grid
Application integration
IBM Integration Bus, Oracle SOA Suite and ESB, MuleSoft
AnyPoint Platform, Sonic ESB, Tibco ActiveMatrix JBoss Fuse
Business rules and
process automation
IBM Operational Decision Manager and BPM, Oracle SOA
Suite and BPM Suite, Pega BPM, FICO Blaze Advisor
JBoss BRMS
JBoss BPM Suite
Messaging
IBM WebSphereMQ, Pivotal RabbitMQ, VMware vFabric,
Tibco Enterprise Message Service JBoss A-MQ
Mobile
IBM MobileFirst, SAP Mobile Platform, Kony Mobility
Platform, Telerik Platform, AnyPresence Mobile Application Platform
Data virtualization and
data services
IBM InfoSphere, Progress DataXtend SI, Composite
Information Server, Denodo JBoss Data Virtualization
Links
Microservices Playground
bit.ly/msa-instructions
http://developers.redhat.com/downloads
Container Development Kit
Recorded Demo: https://youtu.be/SPATMHP-xw8
https://github.com/redhat-italy/osd-microservices-apps
OSD Demo Applications
API Management con 3Scale
Nell’era dei Microservizi
Luca Bigotta
#redhatosd
● Il 22 giugno Red Hat annuncia
l’acquisizione di 3Scale
● Inizia la roadmap di evoluzione
verso Open Source di 3Scale
● 3Scale complementa il portfolio
middleware nella definizione delle
“Strategia API" di Red Hat
BREAKING NEWS!!!
https://www.redhat.com/it/about/press-releases/red-hat-acquire-api-management-leader-3scale
La Strategia API di Red Hat
Un esempio del valore di 3Scale + Fuse insieme:
Composizione API + Management API
3scale è la soluzione API management più adottata nel mondo
(750+ clienti)
L’architettura di 3Scale è stata progettata per garantire:
1. incomparabile Scalabilità e Alta affidabilità e Performance
2. Il minor time-to-value possibile
3. pricing competitivo sul mercato.
3Scale in breve ...
Component Technology
Front End Ruby on Rails
Gateway NGINX, Lua
Back End Ruby, Sinatra, Redis
Perchè 3Scale è sempre stata “interessante” per Red Hat?
propensione all’Open Source: l’architettura è completamente basata
su componenti Open Source
esiste da diversi anni una collaborazione fattiva tra 3Scale e Red Hat
3Scale e il Middleware Red Hat si complementano a vicenda
Il Traffic manager di 3Scale è da diverso tempo disponibile in
Openshift
Alcuni clienti 3Scale
Mobile &
supporto a IOT
Ecosistema dei
clienti
Ecosistema dei
partner
Agilità interna Monetizzazione
delle API
Gestione canali
multimediali e
transazionali
Use Case di adozione di 3Scale
Da applicazione monolitica a microservizi
applicazione monolitica microservizi
API management: elemento essenziale nei
Microservizi
API
APIAPI
API
API
API
API Management
Develop Deploy Scale Manage
Container Application Platform (PaaS)
Use Case di adozione di 3Scale
Controllo Flessibilità e
capacità di scalare
Visibilità
Full Control delle API con 3Scale
Controllo
● Sicurezza
● Gestione Chiavi
autenticazione
● Limiti di traffico & SLA
● Policy Enforcement
● Gestione Apps & Users
● Provisioning
Flessibilità/scalabilità
● Deployment distribuito
● Multi-dipartimento
● Multi-Ambiente
● Estrema scalabilità
● Multi-protocollo
● Webhooks
Visibilità
● Analytics
● Tracking Apps
● User Tracking
● Alerts sull’ utilizzo
● On-boarding
● Supporto agli
Sviluppatori
API Management: il ruolo di 3Scale
Architettura modulare e flessibile
● Modulare
○ Configurazioni, Analytics, Portale clienti/sviluppatori
○ Traffic Manager
● Nessun “single point of failure”
● Configurazioni in Cloud su Tenant dedicato
● Molteplici Scenari di deployment del Traffic Manager
○ Managed (Saas)
○ Self-managed:
■ on-premise (fisico o virtuale)
■ in OpenShift
■ come libreria (gateway-less)
■ come CDN (negli scenari di content delivery
management)
a) Alta Affidabilità garantita: 99.999% uptime negli
ultimi anni.
b) 100.000.000+ di chiamate ad API gestite ogni
girono
c) Nessun single point of failure, architettura in HA e
traffico bilanciato sui più nodi
d) Bassissima latenza aggiunta dal traffic manager:
tra 20 ms and (at max) 50 ms
e) Ogni singolo nodo di traffic manager può gestire
più di 10.000 calls per second
f) Architettura del traffic manager è scalabile, e
configurabile in base alle esigenze
3Scale Traffic Manager: principali caratteristiche
Sicurezza e Privacy
● Diverse modalità di autenticare la API previsti di default
● Flessibilità e possibilità di estendere il supporto ad altri meccanismi di autenticazione
● Privacy garantita sul contenuto del messaggio. 3Scale lavora al livello degli header
● PCI-DSS and HIPAA compliant
● ISO27001 and SOC3 compliant
Utilizzato per la verifica delle policy e
aggiornamento delle statistiche
NON utilizzato
3scale API Management principali caratteristiche: 1/5
Controllo degli accessi alle API flessibile e granulare
➢ API keys
➢ coppia App_ID e App_key
➢ Supporto allo standard de-facto:
OAuth v1.0 and 2.0
3scale API Management principali caratteristiche: 2/5
Configurazione di contratti di livello di servizio
➢ Configurazione granulare dei livelli di
servizio per gruppi API consumer
➢ Configurazione di limiti flessibile
per-time-period
3scale API Management principali caratteristiche: 3/5
Statistiche di utilizzo API
➢ Identificazione pattern di traffico
➢ Top API utilizzatori
➢ Alerts, creazione reporting ad hoc
3scale API Management principali caratteristiche: 4/5
Documentazione delle interfacce automatica e interattiva
➢ Documentazione API Interattiva
➢ Swagger-based
➢ Self-service developer portal
Portale degli sviluppatori & clienti/partner
esperienza utente completamente personalizzabile
3scale API Management principali caratteristiche: 5/5
Gestione granulare della monetizzazione delle API
➢ pricing model flessibile
➢ Fatturazione automatica
➢ Servizi di pagamento pre-integrati
Monetizzazione delle API
Regole di
pricing
• Pagamento One time & canone fisso mensile
• Canone mensile variable (a consumo, pricing
dipendente dal volume)
Ciclo di
fatturazion
e
• 2 opzioni (prepagato e postpagato)
• Fatturazione mensile
Compliancy
• Nessun salvataggio di
informazioni di carta di
credito
Integration
• payments gateways pre-integrati
3Scale Traffic Manager e Openshift
URL tenant 3Scale admin
Chiave autenticazione al
tenant 3Scale admn
Nome traffic manager
GRAZIE!
#redhatosd
#redhatosd
● Il 7 settembre Red Hat pubblica una
customer reference che dimostra la
validità delle “Strategia API” di Red Hat.
● Prima referenza full Red Hat
● Red Hat 3Scale + JBoss Fuse
BREAKING NEWS!!!
https://www.redhat.com/it/about/press-releases/flytoget-deploys-red-hat-jboss-fuse-and-3scale-api-management-technology-further-its-digital-ambitions
Osd 2016 Middleware Track
Osd 2016 Middleware Track
Osd 2016 Middleware Track
Osd 2016 Middleware Track
Osd 2016 Middleware Track

More Related Content

What's hot

DevOps - Come diventare un buon DevOpper
DevOps -  Come diventare un buon DevOpperDevOps -  Come diventare un buon DevOpper
DevOps - Come diventare un buon DevOpperConsulthinkspa
 
Come i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature TeamsCome i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature TeamsGiulio Roggero
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e MicroserviziConsulthinkspa
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...Marco Parenzan
 
Software modularity, microservices ed headless platform all in one. Liferay: ...
Software modularity, microservices ed headless platform all in one. Liferay: ...Software modularity, microservices ed headless platform all in one. Liferay: ...
Software modularity, microservices ed headless platform all in one. Liferay: ...Commit University
 
Approccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per MicroserviceApproccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per MicroserviceDaniele Mondello
 
Architetture a Microservizi (con Kubernetes)
Architetture a Microservizi (con Kubernetes)Architetture a Microservizi (con Kubernetes)
Architetture a Microservizi (con Kubernetes)Steve Maraspin
 
Smau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazioneSmau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazioneSMAU
 
IBM Bluemix @Codemotion
IBM Bluemix @CodemotionIBM Bluemix @Codemotion
IBM Bluemix @CodemotionRoberto Pozzi
 
.NET Microservices
.NET Microservices.NET Microservices
.NET MicroservicesLuca Congiu
 
04 vmugit aprile_2018_raff_poltronieri
04 vmugit aprile_2018_raff_poltronieri04 vmugit aprile_2018_raff_poltronieri
04 vmugit aprile_2018_raff_poltronieriVMUG IT
 
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoWSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoProfesia Srl, Lynx Group
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai MicroservicesDaniele Mondello
 

What's hot (19)

Che cosa sono i microservizi?
Che cosa sono i microservizi?Che cosa sono i microservizi?
Che cosa sono i microservizi?
 
Ibm bluemix r pozzi
Ibm bluemix r pozziIbm bluemix r pozzi
Ibm bluemix r pozzi
 
Viaggio nel mondo a servizi, come prepararsi per l'avventura
Viaggio nel mondo a servizi, come prepararsi per l'avventuraViaggio nel mondo a servizi, come prepararsi per l'avventura
Viaggio nel mondo a servizi, come prepararsi per l'avventura
 
DevOps - Come diventare un buon DevOpper
DevOps -  Come diventare un buon DevOpperDevOps -  Come diventare un buon DevOpper
DevOps - Come diventare un buon DevOpper
 
Come i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature TeamsCome i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature Teams
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e Microservizi
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
 
Presentazione Unibo
Presentazione UniboPresentazione Unibo
Presentazione Unibo
 
Software modularity, microservices ed headless platform all in one. Liferay: ...
Software modularity, microservices ed headless platform all in one. Liferay: ...Software modularity, microservices ed headless platform all in one. Liferay: ...
Software modularity, microservices ed headless platform all in one. Liferay: ...
 
Approccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per MicroserviceApproccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per Microservice
 
Architetture a Microservizi (con Kubernetes)
Architetture a Microservizi (con Kubernetes)Architetture a Microservizi (con Kubernetes)
Architetture a Microservizi (con Kubernetes)
 
Smau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazioneSmau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazione
 
IBM Bluemix @Codemotion
IBM Bluemix @CodemotionIBM Bluemix @Codemotion
IBM Bluemix @Codemotion
 
Netspin Lab soluzioni per le aziende
Netspin Lab soluzioni per le aziendeNetspin Lab soluzioni per le aziende
Netspin Lab soluzioni per le aziende
 
.NET Microservices
.NET Microservices.NET Microservices
.NET Microservices
 
04 vmugit aprile_2018_raff_poltronieri
04 vmugit aprile_2018_raff_poltronieri04 vmugit aprile_2018_raff_poltronieri
04 vmugit aprile_2018_raff_poltronieri
 
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoWSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
 
Introduzione ai Microservices
Introduzione ai MicroservicesIntroduzione ai Microservices
Introduzione ai Microservices
 

Similar to Osd 2016 Middleware Track

Docker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITDocker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITYefry Figueroa
 
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLPar-Tec S.p.A.
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringMarcello Teodori
 
Team Netuse & IBM - Il Cloud Native rende agile il tuo business.
Team Netuse & IBM -  Il Cloud Native rende agile il tuo business.Team Netuse & IBM -  Il Cloud Native rende agile il tuo business.
Team Netuse & IBM - Il Cloud Native rende agile il tuo business.Team Netuse srl
 
Seminario: GNU/Linux come punto di forza
Seminario: GNU/Linux come punto di forzaSeminario: GNU/Linux come punto di forza
Seminario: GNU/Linux come punto di forzaMauro Fava
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEANaLUG
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss CloudJBug Italy
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009Sanne Grinovero
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerRoberto Messora
 
Ubuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneUbuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneGiulio Collura
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetesblexin
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloudRiccardo Zamana
 
Node.js - Server Side Javascript
Node.js - Server Side JavascriptNode.js - Server Side Javascript
Node.js - Server Side JavascriptMatteo Napolitano
 
MySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microserviziMySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microserviziPar-Tec S.p.A.
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...Daniele Mondello
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzajekil
 

Similar to Osd 2016 Middleware Track (20)

Docker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITDocker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti IT
 
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Cloud in Action_6 giugno 2014
Cloud in Action_6 giugno 2014Cloud in Action_6 giugno 2014
Cloud in Action_6 giugno 2014
 
Team Netuse & IBM - Il Cloud Native rende agile il tuo business.
Team Netuse & IBM -  Il Cloud Native rende agile il tuo business.Team Netuse & IBM -  Il Cloud Native rende agile il tuo business.
Team Netuse & IBM - Il Cloud Native rende agile il tuo business.
 
Seminario: GNU/Linux come punto di forza
Seminario: GNU/Linux come punto di forzaSeminario: GNU/Linux come punto di forza
Seminario: GNU/Linux come punto di forza
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEA
 
Webinar: "DevOps e Orchestrazione Bimodale dei Processi IT"
Webinar: "DevOps e Orchestrazione Bimodale dei Processi IT"Webinar: "DevOps e Orchestrazione Bimodale dei Processi IT"
Webinar: "DevOps e Orchestrazione Bimodale dei Processi IT"
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss Cloud
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 
Ubuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneUbuntu Phone: the community smartphone
Ubuntu Phone: the community smartphone
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
 
Servizio di Connettività d'Ateneo - Network and services provisioning automation
Servizio di Connettività d'Ateneo - Network and services provisioning automationServizio di Connettività d'Ateneo - Network and services provisioning automation
Servizio di Connettività d'Ateneo - Network and services provisioning automation
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
 
Node.js - Server Side Javascript
Node.js - Server Side JavascriptNode.js - Server Side Javascript
Node.js - Server Side Javascript
 
MySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microserviziMySQL Day Milano 2018 - Le architetture a microservizi
MySQL Day Milano 2018 - Le architetture a microservizi
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
 

More from Ugo Landini

Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyondCloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyondUgo Landini
 
Codemotion 2015 Infinispan Tech lab
Codemotion 2015 Infinispan Tech labCodemotion 2015 Infinispan Tech lab
Codemotion 2015 Infinispan Tech labUgo Landini
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech LabUgo Landini
 
Codemotion fuse presentation
Codemotion fuse presentationCodemotion fuse presentation
Codemotion fuse presentationUgo Landini
 
"Pubblica il tuo gioco sugli app store in pochi giorni"
"Pubblica il tuo gioco sugli app store in pochi giorni""Pubblica il tuo gioco sugli app store in pochi giorni"
"Pubblica il tuo gioco sugli app store in pochi giorni"Ugo Landini
 
Scala Primi Passi
Scala Primi PassiScala Primi Passi
Scala Primi PassiUgo Landini
 

More from Ugo Landini (10)

Cloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyondCloudify your applications: microservices and beyond
Cloudify your applications: microservices and beyond
 
Codemotion 2015 Infinispan Tech lab
Codemotion 2015 Infinispan Tech labCodemotion 2015 Infinispan Tech lab
Codemotion 2015 Infinispan Tech lab
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech Lab
 
Data grid
Data gridData grid
Data grid
 
Codemotion fuse presentation
Codemotion fuse presentationCodemotion fuse presentation
Codemotion fuse presentation
 
"Pubblica il tuo gioco sugli app store in pochi giorni"
"Pubblica il tuo gioco sugli app store in pochi giorni""Pubblica il tuo gioco sugli app store in pochi giorni"
"Pubblica il tuo gioco sugli app store in pochi giorni"
 
2.5 Tiers
2.5 Tiers2.5 Tiers
2.5 Tiers
 
Concurrency
ConcurrencyConcurrency
Concurrency
 
Objective C
Objective CObjective C
Objective C
 
Scala Primi Passi
Scala Primi PassiScala Primi Passi
Scala Primi Passi
 

Osd 2016 Middleware Track

  • 1. MIDDLEWARE TRACK A cura del Middleware Solution Architect team di Red Hat #redhatosd
  • 2.
  • 3. Agenda Middleware Track part 1 ● 14.00 MicroServices, le dimensioni non contano ○ Ugo Landini, Samuele Dell’Angelo ● 14.30 Wildfly Swarm, Spring Boot & Vertx.io: il nuovo che avanza ○ Ugo Landini, Samuele Dell’Angelo ● 15.00 Microservices con JBoss EAP 7: innovare in continuità ○ Giuseppe Bonocore ● 15.30 Microregole per grandi progetti con il BRMS ○ Andrea Leoncini
  • 4. Agenda Middleware Track part 2 ● 16.00 Integrazione e microservizi: come un cammello può passare dalla cruna di un ago ○ Filippo Calà, Giuseppe Bonocore ● 16.30 API Management con 3Scale nell’era dei microservizi ○ Luca Bigotta ● 17.00 SALA PLENARIA ● 17.15 ESTRAZIONE FINALE PREMI
  • 6.
  • 7. MicroServices: le dimensioni non contano Ugo Landini & Samuele Dell’Angelo #redhatosd
  • 8. 389 project | aeolus-configure | anaconda | attr | Audrey | Augeas | AuthHub | Autofs | Avahi | Beaker | Boxes | Btrfs | CacheFS | Cairo | candlepin | certmonger | CIFS | Cluster 3 | cobbler | colord | Completely Fair Scheduler | Conductor Control Group Configuration Library | Corosync | CRaSH | Crypto API | Cumin | Cygwin | D-Bus | Dashbuilder | Data Grids for the Java Platform | device-mapper | DeviceKit | DistributionUtilities | dlm | Dogtag | DPDK | Dracut | Editline Library EDS | EJB 3 | elfutils | elfutils | Embedded Jopr | Evolution | Evolution-exchange | eXo JCR | ext3 | ext4 | fence-agents | fence-virt | Flannel | fontconfig | func | Gamin | GateIn Portal | gcc | gcc | gcj | gdb | GFS | GFS2 | glib | gss-proxy GTK+ | gvfs | gzip | HTCondor | ID Utils | imagefactory | IPSec-Tools | iptraf-ng | Jandex | Java | JGroups | Jreadline | JRuby | JSFUnit | jUDDI | Katello | Kerberos | Kimchi | Koji | libguestfs | libibverbs | libminidump | libnotify | libqb libstoragemgmt | libuser | libvirt | libxml2 | libxslt | Linux Audit | Linux Infiniband Project | Linux Kernel | Linux PAM | linux-nfs | Luci | LVM2 | LVM2 | lynx | ManageIQ | Matahari | Maven Integration for Eclipse | Maven Integration for Web Tools Platform | Mock | mod_cluster | moVirt | nautilus | netfilter | NetworkManager | NFS-Ganesha | nmap | Open vSwitch | openais | OpenDaylight | OpenJDK | OpenSSH | OpenSSL | OPNFV | OProfile | oVirt | oVirt Engine | oVirt Node | OVMF | Oz pacemaker | PackageKit | PackageKit | pango | PAPI | Paradyn | patchutils | Performance Co-Pilot | PicketBox | PicketLink | piglit | pixman | polkit | Polkit Qt | Poppler | Portlet Bridge | PostgreSQL | PressGang psmisc | Pulp | PulseAudio | pungi | pynfs | QEMU | Red Hat Update Agent | RESTEasy | rgmanager | RHQ | rpm | rpmgrill | RSYSLOG | Samba | Samba | SETroubleshoot ShrinkWrap | slapi-ns | Smokestack | Spacewalk Spherical | Spice | Spice-gtk | Spice-protocol | Stilts | suds | SWI Prolog | SwitchYard | syslog-ng | System Security Services Daemon | systemd | SystemTap | The Foreman | Thin Crust | tin | UberFire | udev udisks | udisks | UPower | util-linux | Valgrind | vc-dwim | vdagent | vdsm | vfs | Virt-clone | Virt-image | Virt-Install | Virt-manager | Virt-viewer | Virtual memory manager | Wallaby | Wayland | Wise | XFS | xinput | XNIO | Xorg | XrandR | yum
  • 9. 10 Deploy al giorno Come è possibile?
  • 10.
  • 11. Cos’è una Microservice Architecture (MSA)? Un approccio architetturale per decomporre applicazioni complesse in sistemi indipendenti ● Organizzati per business capabilities ● Scalabilità indipendente ● Ciclo di vita indipendente ● Governo decentralizzato ● Data management decentralizzato
  • 12. Cos’è una Microservice Architecture (MSA)? Picco di aspettative gonfiate x Disillusione Qui si fa sul serio
  • 13. Your Journey to Microservices :-) Self-Service, On-Demand, Elastic, Infrastructure as Code (Cloud) Re-Org -> DevOps Automazione: Puppet, Chef, Ansible e/o Containers CI & CD Deployment Pipeline Un Microservizio Silicon Valley DotCom Startup Cos’è una Microservice Architecture (MSA)?
  • 14. 1. Self-Service, on-demand, elastic infrastructure as code a. Quanti gg per il provisioning di una nuova VM? 2. Dev vs Ops Chi risponde al telefono se l’app non funziona? 3. Automation Phoenix vs Snowflake 4. CI & CD a. Deployment Pipeline Cos’è una Microservice Architecture (MSA)?
  • 15. Cos’è una Microservice Architecture (MSA)? GREEN BROWN
  • 16. A Development / Deployment Time: ● Automation ● Continuous Integration / Delivery ● Configuration Management ● Service / API design ● Rigorous Testing ● Dependency management ● Design for eventual consistency ● Artifact repositories Container: standardizzazione, automation e dependency management User Experience: maggiore produttività per gli sviluppatori A Runtime: ● Standardization ● Isolation ● Service Discovery ● Load Balancing ● Circuit Breaker, Fallback ● Health checks & automated recovery ● Distributed logging ● Tracing ● Infrastructure Monitoring
  • 17. ● Deploy facile e portabile ● Creato da immagini immutabili e a strati (layered) ● Isolato dal sistema operativo dell’host. I Container impacchettano le applicazioni con le loro dipendenze, isolando il runtime Alta densità e massima efficienza HOST OS SERVER CONTAINER LIBS APP CONTAINER LIBS APP
  • 18. DEMO BUILD YOUR OWN CONTAINER IN 50 lines
  • 19. ● Isolati e sicuri ● Sembrano girare in un loro ambiente ● Se ne possono far girare centinaia in una sola macchina ● Le funzionalità sono nel kernel ● Docker è semplicemente un formato I Container sono dei semplici processi Linux Alta densità e massima efficienza HOST OS SERVER CONTAINER LIBS APP CONTAINER LIBS APP
  • 20. Kubernetes è un container orchestrator per le applicazioni (non per le macchine) Dal greco “pilota”: radice della parola “governatore” (dal latino: gubernator) Master Node Bare Metal Virtual Private Cloud Public Cloud Storage Operator External Services
  • 21. A Development / Deployment Time: ● Automation ● Continuous Integration / Delivery ● Configuration Management ● Service / API design ● Rigorous Testing ● Dependency management ● Design for eventual consistency ● Artifact repositories Kubernetes aggiunge caratteristiche fondamentali per le MSAs (e non solo!) Kubernetes è la versione open di Borg, il sistema usato internamente da Google per scalare. A Runtime: ● Standardization ● Isolation ● Service Discovery ● Load Balancing ● Circuit Breaker, Fallback ● Health checks & automated recovery ● Distributed logging ● Tracing ● Infrastructure Monitoring
  • 22.
  • 23. OpenShift Container Platform è la versione ENTERPRISE di Kubernetes SERVICE CATALOG (LANGUAGE RUNTIMES, MIDDLEWARE, DATABASES, …) SELF-SERVICE APPLICATION LIFECYCLE MANAGEMENT (CI / CD) BUILD AUTOMATION DEPLOYMENT AUTOMATION CONTAINER CONTAINERCONTAINER CONTAINER CONTAINER NETWORKING SECURITYSTORAGE REGISTRY LOGS & METRICS CONTAINER ORCHESTRATION & CLUSTER MANAGEMENT (KUBERNETES) RED HAT ENTERPRISE LINUX CONTAINER RUNTIME & PACKAGING (DOCKER) ATOMIC HOST INFRASTRUCTURE AUTOMATION & COCKPIT
  • 24. A Development / Deployment Time: ● Automation ● Continuous Integration / Delivery ● Configuration Management ● Service / API design ● Rigorous Testing ● Dependency management ● Design for eventual consistency ● Artifact repositories Openshift Container Platform aggiunge ulteriori servizi per gli sviluppatori Il developer si deve concentrare solo sul design & development dei microservizi A Runtime: ● Standardization ● Isolation ● Service Discovery ● Load Balancing ● Circuit Breaker, Fallback ● Health checks & automated recovery ● Distributed logging ● Tracing ● Infrastructure Monitoring
  • 25. Wildfly Swarm, Vertx.io & Spring Boot: Il nuovo che avanza Ugo Landini & Samuele Dell’Angelo #redhatosd
  • 26. MicroProfile 1.0! Ottimizzare Enterprise Java per i Microservices Microservice Collaboration and Innovation in the Java Community Learn more @ microprofile.io
  • 27.
  • 28. DropWizard www.dropwizard.io JAX-RS API Il primo sul mercato DropWizard Metrics Embeddable servers: Jetty Spring Boot projects.spring.io/spring-boot Spring API (@RestController) ‘Starter’ POMs: start.spring.io Embeddable servers: Tomcat, Jetty, Undertow WildFly Swarm wildfly-swarm.io Java EE 7 APIs ‘Starter’ POMs: wildfly-swarm.io/generator Embeddable servers: WildFly (Undertow) Opinionated & java -jar myapp.jar
  • 29. ● Stesse tecnologie di JBoss, ma diverso punto di vista ● Si “monta” tanto Application Server quanto basta per il servizio ○ MicroProfile 1.0 ○ Flat jar ○ Interfaccia web o via JBoss Forge per scegliere cosa serve
  • 30.
  • 31. (Un-Opinionated) Toolkit per applicazioni reactive & async Low-latency microservices che interagiscono con l’EventBus Elasticità e resilienza “built-in” Democratico, parla con tutti (.NET, Go, Ceylon, Rust, Cobol, Java EE, Spring...) vertx.io http://vertx.io/blog/my-first-vert-x-3-application/
  • 33. DEMO VERTX.IO, SWARM & SB & All in One
  • 34. Release It! Michael T. Nygard (Java outdated, ma le storie dei fallimenti sono eccezionali) Il libro che ha inventato il Circuit Breaker
  • 35. Service A Service B Circuit Breaker
  • 36. Service A Service B Hystrix - circuit-breaker, bulkhead
  • 37.
  • 38.
  • 42. Red Hat xPaas Application Server Pivotal tc Server, VMware vFabric, Oracle WebLogic Server, IBM WebSphere JBoss EAP JBoss Web Server In-memory data grid IBM WebSphere eXtreme Scale, Oracle Coherence, Pivotal GemFire, Software AG Terracotta JBoss Data Grid Application integration IBM Integration Bus, Oracle SOA Suite and ESB, MuleSoft AnyPoint Platform, Sonic ESB, Tibco ActiveMatrix JBoss Fuse Business rules and process automation IBM Operational Decision Manager and BPM, Oracle SOA Suite and BPM Suite, Pega BPM, FICO Blaze Advisor JBoss BRMS JBoss BPM Suite Messaging IBM WebSphereMQ, Pivotal RabbitMQ, VMware vFabric, Tibco Enterprise Message Service JBoss A-MQ Mobile IBM MobileFirst, SAP Mobile Platform, Kony Mobility Platform, Telerik Platform, AnyPresence Mobile Application Platform Data virtualization and data services IBM InfoSphere, Progress DataXtend SI, Composite Information Server, Denodo JBoss Data Virtualization
  • 43. Links Microservices Playground bit.ly/msa-instructions http://developers.redhat.com/downloads Container Development Kit Recorded Demo: https://youtu.be/SPATMHP-xw8 https://github.com/redhat-italy/osd-microservices-apps OSD Demo Applications
  • 44. MICROSERVICES con EAP7: Innovare in continuità Giuseppe Bonocore #redhatosd
  • 45. JBoss Enterprise Application Platform ● Basato su WildFly ○ Hibernate, CXF, Infinispan... ● Utilizzato da migliaia di aziende in Italia e nel mondo ○ Banking, Telco, Utility, mission critical ● Semplice e performante ○ Packaging, boot time, performance #1 Open Source JEE Server
  • 46. Enterprise Application Platform 7 ● JEE 7 certified ○ WebSocket, batch, JSon ● Semplificazione ○ Port reduction, graceful shutdown ● Consolidamento ○ Undertow, Artemis Cosa c’è di nuovo
  • 47. Enterprise Application Platform 7 ● AngularJS ● Arquillian ● jQuery, jQuery Mobile ● Spring (Web Flow, WS, Security) Tested Frameworks
  • 48. Enterprise Application Platform 7 Scenari Fisico Virtuale Cloud Applicazioni Tradizionali Microservizi
  • 49. Enterprise Application Platform 7 Scenari Applicazioni Tradizionali Microservizi
  • 50. Enterprise Application Platform 7 ● Microservizi in Java: UberJar con Hibernate, CXF, Log4j… ○ Il rischio è di ricostruire un application server… ● EAP: Ottimizzato per i Microservizi ○ Boot time in 2 sec (circa), lazy loading modules, 2 (o 1) porte, containerizzabile, scriptabile Microservices in JEE ?!?!
  • 51. Enterprise Application Platform 7 ● Riutilizzo di codice e skills ○ JEE features in un microservizio (Clustering con OSE !) ● Hipster ready :-) ○ Wildfly Swarm, JS Server side Microservices in JEE ?!?!
  • 53. Enterprise Application Platform 7 Red Hat xPaas Enterprise Application Platform JBoss Web Server (Tomcat) JBoss Data Grid JBoss Developer Studio Fuse A-MQ Data Virtualization * Business Process Management * Business Rules Management System Red Hat Mobile / FeedHenry Application Container Services Integration Services Business Process Services Mobile Services * Coming Soon
  • 54. Enterprise Application Platform 7 Red Hat xPaas OPENSHIFT CONTAINER PLATFORM Red Hat Enterprise Linux Red Hat Enterprise Linux Red Hat Enterprise Linux Container ContainerJBoss EAP JBoss Data Grid JBoss Fuse Container JBoss A-MQ ContainerJBoss BRMS ORCHESTRATION
  • 56.
  • 57. OpenShift può girare su qualsiasi tipo di infrastruttura
  • 58. I nodi sono istanze di RHEL
  • 59. I servizi girano in container Docker
  • 60. Registry I Pod eseguono uno o più docker container
  • 61. I Master orchestrano i nodi e le app
  • 62. I Master forniscono API per autenticazione di utenti & client
  • 63. I Master usano etcd per la persistenza
  • 64. I Master forniscono lo scheduler per la gestione dei pod sui nodi
  • 65. Il posizionamento dei Pod è determinato da una policy
  • 66. I Service permettono ai pods di connettersi l’un l’altro
  • 67. I Management/Replication controller gestiscono il ciclo di vita dei pod
  • 68. OpenShift gestisce il recover in automatico
  • 69. OpenShift gestisce il recover in automatico
  • 70. I Pods possono connettersi ad uno shared storage
  • 71. Il Routing layer “ruota” richieste esterne ai pod
  • 72. I Dev accedono ad openShift via web, CLI o IDE
  • 74. Red Hat xPaas Application Server Pivotal tc Server, VMware vFabric, Oracle WebLogic Server, IBM WebSphere JBoss EAP JBoss Web Server In-memory data grid IBM WebSphere eXtreme Scale, Oracle Coherence, Pivotal GemFire, Software AG Terracotta JBoss Data Grid Application integration IBM Integration Bus, Oracle SOA Suite and ESB, MuleSoft AnyPoint Platform, Sonic ESB, Tibco ActiveMatrix JBoss Fuse Business rules and process automation IBM Operational Decision Manager and BPM, Oracle SOA Suite and BPM Suite, Pega BPM, FICO Blaze Advisor JBoss BRMS JBoss BPM Suite Messaging IBM WebSphereMQ, Pivotal RabbitMQ, VMware vFabric, Tibco Enterprise Message Service JBoss A-MQ Mobile IBM MobileFirst, SAP Mobile Platform, Kony Mobility Platform, Telerik Platform, AnyPresence Mobile Application Platform Data virtualization and data services IBM InfoSphere, Progress DataXtend SI, Composite Information Server, Denodo JBoss Data Virtualization
  • 75. Links Microservices Playground bit.ly/msa-instructions http://developers.redhat.com/downloads Container Development Kit Recorded Demo: https://youtu.be/SPATMHP-xw8 https://github.com/redhat-italy/osd-microservices-apps OSD Demo Applications
  • 76. MicroRegole per grandi progetti con il BRMS Andrea Leoncini #redhatosd
  • 77. La comunità Drools Workbench (web UI per la redazione e la gestione delle regole) Expert (Rule Engine) Fusion (CEP, Complex Event Processing) jBPM (integrazione con processi) OptaPlanner (pianificazione delle risorse)
  • 78. Cos’è un motore di regole (Rule Engine)? A business rules engine is a software system that executes one or more business rules in a runtime production environment. The rules might come from legal regulation ("An employee can be fired for any reason or no reason but not for an illegal reason"), company policy ("All customers that spend more than $100 at one time will receive a 10% discount"), or other sources. A business rule system enables these company policies and other operational decisions to be defined, tested, executed and maintained separately from application code. Source: wikipedia
  • 79. DROOLS/Red Hat JBoss BRMS ● Vantaggi di un Motore di Regole: ○ Permette di dire "COSA fare", e non "COME farlo". ○ Separazione della logica e dei dati ○ Centralizzazione della conoscenza ○ Integrazione dei Tool ○ Regole Understandable ○ Velocità e Scalabilità
  • 80. Quando dovreste usare Red Hat JBoss BRMS ● Scenari molto complessi, difficili da definire anche per i business experts ● Non esiste o non è noto un ben definito algoritmo ● Requisiti che hanno bisogno di essere modificati molto spesso ● Necessità di prendere decisioni molto velocemente, spesso su set di dati non completi
  • 81. rule "Sound the alarm" when $f : FireDetected( ) not( SprinklerActivated() ) then // sound the alarm end Una semplice regola Una semplice regola CEP, senza il concetto di tempo
  • 82. rule "Sound the alarm" when $f : FireDetected( ) not( SprinklerActivated() ) then // sound the alarm end Una semplice regola Nome Regola Una semplice regola CEP, senza il concetto di tempo
  • 83. rule "Sound the alarm" when $f : FireDetected( ) not( SprinklerActivated() ) then // sound the alarm end Una semplice regola LHS Una semplice regola CEP, senza il concetto di tempo
  • 84. rule "Sound the alarm" when $f : FireDetected( ) not( SprinklerActivated() ) then // sound the alarm end Una semplice regola Una semplice regola CEP, senza il concetto di tempo RHS
  • 85. rule "Sound the alarm" when $f : FireDetected( ) not( SprinklerActivated( this after[0s,10s] $f ) ) then // sound the alarm end Una semplice regola CEP Una semplice regola CEP, con il concetto di tempo
  • 86. rule "Sound the alarm" when $f : FireDetected( ) not( SprinklerActivated( this after[0s,10s] $f ) ) then // sound the alarm end Una semplice regola CEP Una semplice regola CEP, con il concetto di tempo TEMPO
  • 87. CEP con il BRMS Complex Event Processing: accorgersi di eventi significativi per il business riconoscendo time-based patterns in uno o più data feed in real-time... ● Regola + Tempo: aggiunge il concetto di tempo alle regole base ○ Sliding windows ○ Entry points ○ Time operations
  • 88. Rule Engine taglia slim ● Possibilità di invocare le regole ○ localmente al runtime ○ da remoto ● Deploy ○ JEE ○ OSGI ○ Wildfly Swarm ○ Spring-Boot ○ Java standalone ○ Docker
  • 89. Lanciamo la campagna Pro If ● Non preoccupatevi se la logica della vostra applicazione è piena di If. ● Soprattutto non preoccupatevi se non l’avete capito subito... ● Lanciamo ufficialmente la campagna Pro If ○ Gli if dal codice li togliamo noi!
  • 91. KIE factor Sviluppatori e analisti lavorano ai progetti e producono regole, servizi, modelli di dati e processi
  • 92. KIE factor La build dei progetti produce i cosiddetti “artefatti”
  • 93. KIE factor L’Execution Server prende gli artefatti con cui crea la propria base di conoscenza direttamente dal server Maven
  • 94. KIE factor L’Execution Server può essere eseguito nel “Java Flavour” preferito.
  • 95. Uso del Rule Engine
  • 96. Uso del Rule Engine Un Engine “Specializzato” No scanner, uno specifico GAV, integrato nella mia pipeline di rilascio
  • 97. E se serve un motore di regole scalabile ed in alta affidabilità? HACEP: https://github.com/redhat-italy/hacep/ ● Si possono gestire, grazie a JBoss Data Grid, un certo numero di Engine contemporanei ○ Mantenendo contemporaneamente copie di backup ● Distribuzione degli eventi per uno o più gruppi uniformi (carta di credito, utente, giocatore, ecc.) ● Scalabilità fino a centinaia di nodi ● Prestazioni del cluster direttamente proporzionali al numero di nodi BRMS
  • 101. Red Hat xPaas Application Server Pivotal tc Server, VMware vFabric, Oracle WebLogic Server, IBM WebSphere JBoss EAP JBoss Web Server In-memory data grid IBM WebSphere eXtreme Scale, Oracle Coherence, Pivotal GemFire, Software AG Terracotta JBoss Data Grid Application integration IBM Integration Bus, Oracle SOA Suite and ESB, MuleSoft AnyPoint Platform, Sonic ESB, Tibco ActiveMatrix JBoss Fuse Business rules and process automation IBM Operational Decision Manager and BPM, Oracle SOA Suite and BPM Suite, Pega BPM, FICO Blaze Advisor JBoss BRMS JBoss BPM Suite Messaging IBM WebSphereMQ, Pivotal RabbitMQ, VMware vFabric, Tibco Enterprise Message Service JBoss A-MQ Mobile IBM MobileFirst, SAP Mobile Platform, Kony Mobility Platform, Telerik Platform, AnyPresence Mobile Application Platform Data virtualization and data services IBM InfoSphere, Progress DataXtend SI, Composite Information Server, Denodo JBoss Data Virtualization
  • 102. Links Microservices Playground bit.ly/msa-instructions http://developers.redhat.com/downloads Container Development Kit Recorded Demo: https://youtu.be/SPATMHP-xw8 https://github.com/redhat-italy/osd-microservices-apps OSD Demo Applications
  • 103. Integrazione e Microservizi: come un cammello può passare dalla cruna di un ago Filippo Calà & Ugo Landini #redhatosd
  • 104. Che cosa NON è Apache Camel? Non è un Enterprise Service Bus
  • 105. Che cos’è Apache Camel? Camel è un potente Framework Open Source di Integrazione basato sugli Enterprise Integration Pattern
  • 106. Che cos’è Apache Camel? JBoss Fuse Open Source Lightweight Integration Platform
  • 107. Che cos’è Apache Camel? JBoss Fuse Architettura modulare e capacità di integrazione
  • 108. Che cos’è Apache Camel? JBoss Fuse JBoss Fuse include Apache Camel
  • 109. Che cos’è Apache Camel? JBoss Fuse Facile da estendere
  • 110. Che cos’è Apache Camel? JBoss Fuse Facile da gestire
  • 111. Che cos’è Apache Camel? JBoss Fuse Fa tutto quello che fanno gli ESB e molto di più
  • 117. Enterprise Integration Patterns Content Based Router from newOrder
  • 118. Enterprise Integration Patterns Content Based Router from newOrder choice
  • 119. Enterprise Integration Patterns Content Based Router from newOrder choice when isWidget to widget
  • 120. Enterprise Integration Patterns Content Based Router from newOrder choice when isWidget to widget otherwise to gadget
  • 121. Enterprise Integration Patterns Content Based Router from (newOrder) choice when (isWidget) to (widget) otherwise to (gadget)
  • 122. Enterprise Integration Patterns Content Based Router from (newOrder) .choice() .when(isWidget) .to(widget) otherwise().to(gadget);
  • 123. Enterprise Integration Patterns Content Based Router from (newOrder) .choice() .when(isWidget) .to(widget) otherwise().to(gadget);
  • 124. Enterprise Integration Patterns Content Based Router from (newOrder) .choice() .when(isWidget) .to(widget) otherwise().to(gadget); Endpoint newOrder = endpoint("activemq:queue:newOrder");
  • 125. Enterprise Integration Patterns Content Based Router from (newOrder) .choice() .when(isWidget) .to(widget) otherwise().to(gadget); Endpoint newOrder = endpoint("activemq:queue:newOrder"); Predicate isWidget = xpath("/order/product = 'widget'");
  • 126. Enterprise Integration Patterns Content Based Router from (newOrder) .choice() .when(isWidget) .to(widget) otherwise().to(gadget); Endpoint newOrder = endpoint("activemq:queue:newOrder"); Predicate isWidget = xpath("/order/product = 'widget'"); Endpoint widget = endpoint("activemq:queue:widget"); Endpoint gadget = endpoint("activemq:queue:gadget");
  • 127. Enterprise Integration Patterns Java DSL import org.apache.camel.builder.RouteBuilder; public class MyRoute extends RouteBuilder { public void configure() throws Exception { from("activemq:queue:newOrder") .choice() .when(xpath("/order/product = 'widget'")) .to("activemq:queue:widget") .otherwise() .to("activemq:queue:gadget"); } }
  • 128. Enterprise Integration Patterns XML DSL <route> <from uri="activemq:queue:newOrder"/> <choice> <when> <xpath>/order/product = 'widget'</xpath> <to uri="activemq:queue:widget"/> </when> <otherwise> <to uri="activemq:queue:gadget"/> </otherwise> </choice> </route>
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136. Fuse Brownfield ● Runtime: ○ Pure Java ○ Karaf ○ EAP I ferri del mestiere ● Wiring: ○ Blueprint ○ CDI ○ Spring
  • 137. Fuse Greenfield ● Runtime: ○ Pure Java ○ Karaf ○ Spring Boot I ferri del mestiere ● Wiring: ○ CDI ○ Spring
  • 138. Fuse e Openshift ● Fuse + Openshift = Fuse Integration Services ● Parte dell’offerta Red Hat xPaas ● Lavoro della community Fabric8 Camel Riding in the Cloud
  • 139. Fuse e Openshift ● Build then push: ○ Compilo usando il maven plugin di Fabric8 ○ Push del risultato (Container Image + Metadata) in OCP ● Push then build: ○ Push del progetto su git ○ Source 2 image in OCP Modalità di deployment
  • 140. Fuse e Openshift ● Soap2Rest: ○ CXF, Freemarker ○ Pure Java, CDI ○ S2I Un caso concreto
  • 146. Fuse e Openshift Nome App Puntamenti GIT
  • 147. DEMO CAMEL + OSE
  • 149. Red Hat xPaas Application Server Pivotal tc Server, VMware vFabric, Oracle WebLogic Server, IBM WebSphere JBoss EAP JBoss Web Server In-memory data grid IBM WebSphere eXtreme Scale, Oracle Coherence, Pivotal GemFire, Software AG Terracotta JBoss Data Grid Application integration IBM Integration Bus, Oracle SOA Suite and ESB, MuleSoft AnyPoint Platform, Sonic ESB, Tibco ActiveMatrix JBoss Fuse Business rules and process automation IBM Operational Decision Manager and BPM, Oracle SOA Suite and BPM Suite, Pega BPM, FICO Blaze Advisor JBoss BRMS JBoss BPM Suite Messaging IBM WebSphereMQ, Pivotal RabbitMQ, VMware vFabric, Tibco Enterprise Message Service JBoss A-MQ Mobile IBM MobileFirst, SAP Mobile Platform, Kony Mobility Platform, Telerik Platform, AnyPresence Mobile Application Platform Data virtualization and data services IBM InfoSphere, Progress DataXtend SI, Composite Information Server, Denodo JBoss Data Virtualization
  • 150. Links Microservices Playground bit.ly/msa-instructions http://developers.redhat.com/downloads Container Development Kit Recorded Demo: https://youtu.be/SPATMHP-xw8 https://github.com/redhat-italy/osd-microservices-apps OSD Demo Applications
  • 151. API Management con 3Scale Nell’era dei Microservizi Luca Bigotta #redhatosd
  • 152. ● Il 22 giugno Red Hat annuncia l’acquisizione di 3Scale ● Inizia la roadmap di evoluzione verso Open Source di 3Scale ● 3Scale complementa il portfolio middleware nella definizione delle “Strategia API" di Red Hat BREAKING NEWS!!! https://www.redhat.com/it/about/press-releases/red-hat-acquire-api-management-leader-3scale
  • 153. La Strategia API di Red Hat
  • 154. Un esempio del valore di 3Scale + Fuse insieme: Composizione API + Management API
  • 155. 3scale è la soluzione API management più adottata nel mondo (750+ clienti) L’architettura di 3Scale è stata progettata per garantire: 1. incomparabile Scalabilità e Alta affidabilità e Performance 2. Il minor time-to-value possibile 3. pricing competitivo sul mercato. 3Scale in breve ... Component Technology Front End Ruby on Rails Gateway NGINX, Lua Back End Ruby, Sinatra, Redis Perchè 3Scale è sempre stata “interessante” per Red Hat? propensione all’Open Source: l’architettura è completamente basata su componenti Open Source esiste da diversi anni una collaborazione fattiva tra 3Scale e Red Hat 3Scale e il Middleware Red Hat si complementano a vicenda Il Traffic manager di 3Scale è da diverso tempo disponibile in Openshift
  • 157. Mobile & supporto a IOT Ecosistema dei clienti Ecosistema dei partner Agilità interna Monetizzazione delle API Gestione canali multimediali e transazionali Use Case di adozione di 3Scale
  • 158. Da applicazione monolitica a microservizi applicazione monolitica microservizi
  • 159. API management: elemento essenziale nei Microservizi API APIAPI API API API API Management Develop Deploy Scale Manage Container Application Platform (PaaS)
  • 160. Use Case di adozione di 3Scale Controllo Flessibilità e capacità di scalare Visibilità
  • 161. Full Control delle API con 3Scale Controllo ● Sicurezza ● Gestione Chiavi autenticazione ● Limiti di traffico & SLA ● Policy Enforcement ● Gestione Apps & Users ● Provisioning Flessibilità/scalabilità ● Deployment distribuito ● Multi-dipartimento ● Multi-Ambiente ● Estrema scalabilità ● Multi-protocollo ● Webhooks Visibilità ● Analytics ● Tracking Apps ● User Tracking ● Alerts sull’ utilizzo ● On-boarding ● Supporto agli Sviluppatori
  • 162. API Management: il ruolo di 3Scale
  • 163. Architettura modulare e flessibile ● Modulare ○ Configurazioni, Analytics, Portale clienti/sviluppatori ○ Traffic Manager ● Nessun “single point of failure” ● Configurazioni in Cloud su Tenant dedicato ● Molteplici Scenari di deployment del Traffic Manager ○ Managed (Saas) ○ Self-managed: ■ on-premise (fisico o virtuale) ■ in OpenShift ■ come libreria (gateway-less) ■ come CDN (negli scenari di content delivery management)
  • 164. a) Alta Affidabilità garantita: 99.999% uptime negli ultimi anni. b) 100.000.000+ di chiamate ad API gestite ogni girono c) Nessun single point of failure, architettura in HA e traffico bilanciato sui più nodi d) Bassissima latenza aggiunta dal traffic manager: tra 20 ms and (at max) 50 ms e) Ogni singolo nodo di traffic manager può gestire più di 10.000 calls per second f) Architettura del traffic manager è scalabile, e configurabile in base alle esigenze 3Scale Traffic Manager: principali caratteristiche
  • 165. Sicurezza e Privacy ● Diverse modalità di autenticare la API previsti di default ● Flessibilità e possibilità di estendere il supporto ad altri meccanismi di autenticazione ● Privacy garantita sul contenuto del messaggio. 3Scale lavora al livello degli header ● PCI-DSS and HIPAA compliant ● ISO27001 and SOC3 compliant Utilizzato per la verifica delle policy e aggiornamento delle statistiche NON utilizzato
  • 166. 3scale API Management principali caratteristiche: 1/5 Controllo degli accessi alle API flessibile e granulare ➢ API keys ➢ coppia App_ID e App_key ➢ Supporto allo standard de-facto: OAuth v1.0 and 2.0
  • 167. 3scale API Management principali caratteristiche: 2/5 Configurazione di contratti di livello di servizio ➢ Configurazione granulare dei livelli di servizio per gruppi API consumer ➢ Configurazione di limiti flessibile per-time-period
  • 168. 3scale API Management principali caratteristiche: 3/5 Statistiche di utilizzo API ➢ Identificazione pattern di traffico ➢ Top API utilizzatori ➢ Alerts, creazione reporting ad hoc
  • 169. 3scale API Management principali caratteristiche: 4/5 Documentazione delle interfacce automatica e interattiva ➢ Documentazione API Interattiva ➢ Swagger-based ➢ Self-service developer portal
  • 170. Portale degli sviluppatori & clienti/partner esperienza utente completamente personalizzabile
  • 171. 3scale API Management principali caratteristiche: 5/5 Gestione granulare della monetizzazione delle API ➢ pricing model flessibile ➢ Fatturazione automatica ➢ Servizi di pagamento pre-integrati
  • 172. Monetizzazione delle API Regole di pricing • Pagamento One time & canone fisso mensile • Canone mensile variable (a consumo, pricing dipendente dal volume) Ciclo di fatturazion e • 2 opzioni (prepagato e postpagato) • Fatturazione mensile Compliancy • Nessun salvataggio di informazioni di carta di credito Integration • payments gateways pre-integrati
  • 173. 3Scale Traffic Manager e Openshift URL tenant 3Scale admin Chiave autenticazione al tenant 3Scale admn Nome traffic manager
  • 176. ● Il 7 settembre Red Hat pubblica una customer reference che dimostra la validità delle “Strategia API” di Red Hat. ● Prima referenza full Red Hat ● Red Hat 3Scale + JBoss Fuse BREAKING NEWS!!! https://www.redhat.com/it/about/press-releases/flytoget-deploys-red-hat-jboss-fuse-and-3scale-api-management-technology-further-its-digital-ambitions