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