12

Microservices: Next Gen Architectures · ¿Cómo se define un microservicio? “[…] the microservice architectural style is an approach to developing a single applicaon as a suite

  • Upload
    hacong

  • View
    225

  • Download
    1

Embed Size (px)

Citation preview

Microservices: Next Gen Architectures

José Luis Martín Pérez Managing Director Accenture

¿Qué es una aplicación monolítica?

Unaaplicaciónenlaquetodalalógicaseejecutasobreunúnicoservidordeaplicaciones.Estoaplicatantoacargasfrontcomoacargasbackendon-lineybatch.

¿Qué problemática han generado estas arquitecturas con el tiempo?

Sindueño

LenBtud

FaltadeespecializaciónComplejidad

Pruebaspocoeficientes

Fragilidad

Faltadeespecialización

Cada parte de la aplicación tiene necesidades diferentes de CPU,

memoria, almacenamiento más rápido, red, etc y si la aplicación es monolítica

no puedo especializar recursos.

Losproblemasno4enendueño

El código es víctima de “la tragedia de las rutinas comunes”… donde todo el

mundo “culpa” a código que no es suyo

Pruebaspocoeficientes

Cada cambio requiere un ciclo completos de prueba y es difícil utilizar los conceptos de integración continua, casi imposible delivery completamente

automatizado.

Fragilidadantefallos

Un error enseguida hace caer la aplicación que descansa en una

infraestructura de middleware muy estable para soportarlo. Resilencia

aplicativa es mínima.

Len4tud

Los equipos se dividen en capas técnicas: UI, application, middleware,

database, etc.

ComplejidadLas aplicaciones se convierten en algo

demasiado complicado para que un desarrollador lo entienda. Se empiezan

a construir casos de uso en capas comunes de orquestación y mensajería

(efecto cebolla).

¿Cómo se define un microservicio?

“[…]themicroservicearchitecturalstyleisanapproachtodevelopingasingleapplica4onasasuiteofsmallservices,eachrunninginitsownprocessandcommunica4ngwithlightweightmechanisms,oMenanHTTPresourceAPI.Theseservicesarebuiltaroundbusinesscapabili4esandindependentlydeployablebyfullyautomateddeploymentmachinery.Thereisabareminimumofcentralizedmanagementoftheseservices,whichmaybewriAenindifferentprogramminglanguagesandusedifferentdatastoragetechnologies.(Mar%nFowler)

Un microservicio es una funcionalidad aislada No es un concepto técnico si no FUNCIONAL

¿Cómo pueden ayudar los microservicios?

Aplicaciones monolíticas Despliegues por rutinas / tablas

Servicios desacoplados por funcionalidad Despliegue por servicios independientes

Una base de datos para todos Comunicación entre procesos Organizado por capas técnicas Separación desarrollo y operación Sesiones en el servidor Lo hacemos todo en Java

Comunicación ligera entre servicios Organizado por capacidades de negocio Desarrollo con responsabilidades de operación y vice-versa Instancias sin estado, almacenamiento compartido Puedo elegir el lenguaje más adecuado

Elegir el mejor tipo de almacenamiento para el caso de uso

Es complicado de evolucionar\probar Cada servicio se prueba y evoluciona por separado Uso intensivo Procesamiento Batch Reducción batch, incremento online en base a eventos

¿Qué retos plantean los microservicios?

Organiza4vos Arquitectura Operación

•  Organizaciónencapastecnológicas–conmicroserviciosserequirenequiposfocalizadosenelproductoyconskillsentodaslascapas

•  LosprogramadoresnecesitanmayorexperBse

•  Losdesarrolladoresnoquierendarsoporteaproducción

•  LosMicroserviciosconformanunservicioaltamentedistribuidoyescalablequeesnecesariogesBonar

•  EnlasaplicacionesmonolíBcassólotepreocupasdeun“bloque”decódigo(esosí,avecesinabordable)

•  Microserviciostefuerzanamoverteacomputacióndistribuida

•  CAPTheorem–Elegir2•  HayquegesBonarconsistenciainformación

víaeventosoréplicadedatos

•  TesBng,logging,monitorización,seguridad,versionado…sevenafectadosporunsistemaaltamentedistribuido

•  Elusodediferentessistemasdealmacenamientorequieredeprocedimientosdeoperaciónespecíficos

•  Esnecesarioquecadaequipodedesarrollomantengasusmicroserviciosdeformaindependiente

¿Cómo planteamos una arquitectura de ejecución?

UNMICROSERVICIOESTÁCOMPUESTOPORDOSCAPASPRINCIPALES:AplicaciónèAtendiendoalametodologíaDDDestacapaconBenevarioscomponentes:• EnBdadesdedominiocorrespondientesalafuncionalidadimplementada(p.e.enBdadesdeaccesoadatos,eventosfuncionales…)

• Lógicadenegocio(p.e.reglasdecomportamiento,constraintscomogesBóndeexcepciones…).EstecomponentetambiénsepuedevercomounaorquestacióndelasenBdadesdedominio.FrameworkèSetratadelaarquitecturainternaalmicroservicio,conunconjuntodeuBlidadesyadaptadores,quedebencumplirdoscondiciones:• Altamantenibilidad:Modelode“arquitecturaevolucionaria”• Bajadeudatécnica

ADICIONALMENTEHAYDOSCAPASMÁSENLAPLATAFORMA:PaaSèConsBtuyeelentornosobreelquesedesplieganyejecutanlosmicroservicios,adicionalmenteproporcionaservicioscomunesalosmicroservicios,organizadospordominios(metodologíaDDD)OtrosSistemasèAlojadosfueradelPaaS,comprendendesdeentornosdeoperaciónalsistemalegacyconelqueseconvive,juntoconlosfrontalesactuales

¿Cómo planteamos una arquitectura DevOps?

Lecciones aprendidas

PuntosFuertes

•  ElsistemaproporcionaunmodelodeescalabilidadhorizontalapoyadoenelPaaS,estoexigequelaarquitecturagenerenormasparalosdesarrolladores,quedebenaplicarsedeformaautomaBzada

•  Automa4zaciónextrema–“Nohaymanos”enlavalidacióndecalidad,reglasdedesarrollo,seguridad,despliegues…

•  UBlizarunmodeloreducidodeTDDfomentalacalidadenelsoMware•  LosentornospreviospuedendesplegarseenunentornodePaaSpublico,loscontenedoresylaarquitecturapermitenesemodelodetrabajo

•  AluBlizarcontenedoresDocker,mejordesplegarsobrehardwareVsico–loscontenedoresproporcionanlacapadevirtualizaciónyseobBenemayorrendimiento

Puntosdeatención

•  Loimportantenoeseltamañodelmicroservicio,laplataformaevolucionaseparandooagregandopiezas,loimportanteeslafuncionalidad

•  EldesplieguefrecuenteaentornodedesarrolloescríBco…Nocaerenlatrampadesubirsolocuandoseestélisto

•  Ojoalatransaccionalidad–elparadigmaproporcionatransaccionalidaddentrodeunmicroservicio

•  Cuidadoconlospatronesdecodificación:SesiónHTTP,dependenciasentreservicios....Otrospatronessonmuycomplejos,comoCQRS

•  Elrendimientodelaplataformaseconsiguecuidandoelrendimientodecadaunodeloscomponentes

•  Ojoalasinvocacionescruzadasentremicroservicios:cuidadoconelnúmerodellamadasyconlalatencia

•  Laarquitecturatécnicadeberíaserligera,perocuidado,hayframeworksquenecesitanmuchamemoriasoloparaelarranque

•  DedicarBempoalmodeloopera4vo–sepuedearrancaryacelerareldesarrolloconarqueBpos,peromerecelapenaunenfoqueAPIFirst

MUCHAS GRACIAS

José Luis Martín Pérez Managing Director Accenture