Arquitectura orientada a microservicios: imprescindible para un DevOPS

[et_pb_section fb_built=”1″ admin_label=”section” _builder_version=”3.0.47″][et_pb_row admin_label=”row” _builder_version=”3.18.7″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” hover_enabled=”0″ custom_padding_last_edited=”on|phone” custom_padding=”|10%||0%” custom_padding_tablet=”|0%||”][et_pb_column type=”4_4″ _builder_version=”3.0.47″ parallax=”off” parallax_method=”on”][et_pb_text admin_label=”Text” _builder_version=”3.0.74″ background_size=”initial” background_position=”top_left” background_repeat=”repeat”]

隆Divide y vencer谩s!

 

Actualmente cuando hablamos de la聽migraci贸n de una aplicaci贸n web al Cloud聽se aconseja vivamente adaptar nuestra aplicaci贸n para poder aprovechar los beneficios que ofrecen los proveedores Cloud.

En particular es muy聽beneficioso aplicar el desmembramiento de nuestra aplicaci贸n en聽micro-servicios.驴Qu茅 es esto? Es separar las partes que tienen una funcionalidad concreta en nuestra aplicaci贸n para poder encapsularlas en un servicio aut贸nomo y auto-escalable.

Velocidad y ahorro de costes

Lo curioso es que con esta t茅cnica聽mejoramos la velocidad y la experiencia de usuario de nuestra aplicaci贸ndejando de lado la eficiencia en el c贸digo o los servicios. El motivo de esto es que聽en el Cloud el uso de computaci贸n es decididamente m谩s econ贸mica聽que en un entorno cl谩sico, y utilizar alegremente m谩s recursos no es un riesgo importante en los costes de la infraestructura en la Nube, pero si lo es perder usuarios o ventas porque nuestra aplicaci贸n tiene un cuello de botella en alguna de sus partes.

 

Una funcionalidad es un microservicio

Microservicios t铆picos que podemos encapsular son servicios de bases de datos, almacenamiento ef铆mero de datos como 铆ndices o caches, colas de sincronizaci贸n de tareas, servicios de indexaci贸n de contenidos, pasarelas de correo electr贸nico鈥 La lista es tan larga como compleja sea nuestra aplicaci贸n.

El universo de proyectos Open Source es una fuente f茅rtil de opciones para microservicios dado que la din谩mica propia de creaci贸n y mantenimiento de comunidades encaja con la soluci贸n a un problema concreto, esto es, cada proyecto nuevo Open Source suele responder a un problema concreto en el mundo de sistemas o desarrollo de software.

Una soluci贸n puede ser usada como un microservicio si:

  • Pueden escalarse de manera contenida con t茅cnicas espec铆ficas a su funci贸n: Federaciones, cl煤steres, activo pasivo鈥.
  • Se comunican a trav茅s de protocolos de alto nivel basados en http.
  • La interacci贸n se realiza a trav茅s de REST APIS.
  • Pueden asegurar un tiempo de respuesta. Dado que pueden tener respuestas predefinidas si el servicio no est谩 disponible se evitan las colas esperando.

Un ejemplo pr谩ctico, una aplicaci贸n de gesti贸n de pedidos.

En este ejemplo tenemos una aplicaci贸n monol铆tica que tiene un dise帽o t铆pico: frontend, backend (donde reside la inteligencia de negocio), mantenimiento y notificaciones.

Vamos a explicar como desmembrar de manera simplificada esta aplicaci贸n en microservicios y c贸mo a帽adir otros microservicios que聽mejorar谩n la rapidez y respuesta del sistema.

  • La divisi贸n entre las diferentes partes funcionales de la aplicaci贸n es en s铆 el primer paso para utilizar micro-servicios. Los frontends web van por un lado, mientras que la l贸gica de negocio por otra e importante en ver que el servicio de notificaciones y las tareas de mantenimiento puedes encapsularse e ir a su aire.
  • 聽Otro servicio concreto es el servicio de cach茅 de contenidos est谩ticos que mejora enormemente la entrega de contenidos y la computaci贸n necesaria, utilizaremos el project聽Varnish.
  • Tambi茅n es beneficioso encapsular el uso de almacenamiento temporal de datos como las iD de sesi贸n o las listas de variable de sesi贸n, y Redis es una opci贸n muy s贸lida. De esta manera reducimos el n煤mero de acceso a base de datos relacional y podemos mantener informaci贸n de sesi贸n de usuario entre varios servidores frontales.
  • El motor de b煤squeda de contenidos puede cargar un sistema hasta el punto de colapsar las m谩quinas, el uso de聽SolR聽soluciona esto de manera y adem谩s puede ser escalado.
  • A煤n m谩s, dado nivel de coordinaci贸n de mensajes se hace una gesti贸n de colas con聽RabbitMq聽y de procesos con聽Celerys聽entre las diferentes partes del aplicativo.
  • Concentraremos el an谩lisis de logs con un聽Logstash, esto es necesario puesto que parte de nuestra infraestructura puede incrementarse para dar servicio a un aumento de conexiones (esto es CLOUD!) pero desaparecer谩 tras este pico, y el registro de su actividad no deber铆a desaparecer.

 

No todo son ventajas.聽Esta arquitectura implicar谩 modificaciones de c贸digo en nuestra aplicaci贸n, pero tambi茅n una simplificaci贸n de c贸digo al externalizar funcionalidades y repartir la responsabilidad de programaci贸n de aplicaciones entre diferentes proyectos y comunidades.

Cabe destacar que cada una de las partes es escalable y cada parte es capaz de gestionar aut贸nomamente fallos o problemas de servicio.

En definitiva, los microservicios han pasado a ser la norma en los dise帽os de sistemas en Cloud o de aquellos que se van a migrar. Y en聽Ackstorm somos especialistas en ayudarte tanto con el dise帽o como en el proceso de migraci贸n de estos sistemas.聽Los desarrolladores no tienen porqu茅 que afrontar estos procesos solos, desde Ackstorm podemos acompa帽arlos mitigando los riegos o errores de dise帽o, implementaci贸n y migraci贸n.

 

Espero que el art铆culo os haya sido de ayuda, si quer茅is saber m谩s sobre el Cloud no dud茅is en echar un vistazo al resto de聽nuestro blog.

[/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]