¿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)
¿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
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
Top Related