Microservizi: le dimensioni non contano

Transcript

Microservizi: le dimensioni non contano
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à, Ugo Landini
●
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
Qui si fa sul serio
Disillusione
Cos’è una Microservice Architecture (MSA)?
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)?
GREEN
BROWN
Container: standardizzazione, automation e
dependency management
User Experience: maggiore produttività per gli sviluppatori
A Development / Deployment Time:
● Automation
● Continuous Integration / Delivery
● Configuration Management
● Service / API design
● Rigorous Testing
● Dependency management
● Design for eventual consistency
● Artifact repositories
A Runtime:
● Standardization
● Isolation
● Service Discovery
● Load Balancing
● Circuit Breaker, Fallback
● Health checks & automated recovery
● Distributed logging
● Tracing
● Infrastructure Monitoring
I Container impacchettano le applicazioni con le loro
dipendenze, isolando il runtime
Alta densità e massima efficienza
●
●
●
Deploy facile e portabile
Creato da immagini immutabili e
a strati (layered)
Isolato dal sistema operativo
dell’host.
CONTAINER
CONTAINER
APP
APP
LIBS
LIBS
HOST OS
SERVER
DEMO BUILD YOUR OWN CONTAINER IN 50 lines
I Container sono dei semplici processi Linux
Alta densità e massima efficienza
●
●
●
●
●
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
CONTAINER
CONTAINER
APP
APP
LIBS
LIBS
HOST OS
SERVER
Kubernetes è un container orchestrator per
le applicazioni (non per le macchine)
Dal greco “pilota”: radice della parola “governatore” (dal latino: gubernator)
Storage
Operator
Master
Bare Metal
Node
Virtual
Private Cloud
Public Cloud
External
Services
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 Development / Deployment Time:
● Automation
● Continuous Integration / Delivery
● Configuration Management
● Service / API design
● Rigorous Testing
● Dependency management
● Design for eventual consistency
● Artifact repositories
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
CONTAINER
CONTAINER
CONTAINER
CONTAINER
CONTAINER
SELF-SERVICE
SERVICE CATALOG
(LANGUAGE RUNTIMES, MIDDLEWARE, DATABASES, …)
BUILD AUTOMATION
DEPLOYMENT AUTOMATION
APPLICATION LIFECYCLE MANAGEMENT
(CI / CD)
CONTAINER ORCHESTRATION & CLUSTER MANAGEMENT
(KUBERNETES)
NETWORKING
STORAGE
REGISTRY
LOGS &
METRICS
INFRASTRUCTURE AUTOMATION & COCKPIT
CONTAINER RUNTIME & PACKAGING
(DOCKER)
ATOMIC HOST
RED HAT ENTERPRISE LINUX
SECURITY
Openshift Container Platform aggiunge
ulteriori servizi per gli sviluppatori
Il developer si deve concentrare solo sul design & development dei microservizi
A Development / Deployment Time:
● Automation
● Continuous Integration / Delivery
● Configuration Management
● Service / API design
● Rigorous Testing
● Dependency management
● Design for eventual consistency
● Artifact repositories
A Runtime:
● Standardization
● Isolation
● Service Discovery
● Load Balancing
● Circuit Breaker, Fallback
● Health checks & automated recovery
● Distributed logging
● Tracing
● Infrastructure Monitoring