Patrones Cloud
Introducción
Categorías
Introducción
Los patrones cloud son un conjunto de técnicas de diseño que son especialmente útiles para resolver problemas y situaciones comunes en el nuevo paradigma digital, además de conseguir crear aplicaciones confiables, escalables y seguras en la nube, en una correcta aproximación al paradigma Cloud Native.
Cada patrón describe el problema que aborda dicha patrón, sus consideraciones para ser aplicado y un caso de uso en el que podría ser aplicado. Es importante conocer los principales, y como en Onesait establecemos ciertos estándares para darlos cobertura correctamente.
Categorías
Disponibilidad
La disponibilidad es el grado en el que nuestro sistema de encuentra en un estado operativo y en funcionamiento. Este grado se suele medir como una proporción de tiempo, esta proporción se reduce al producirse distintos errores y problemas alrededor de nuestro sistema. Es importante mantener la máxima disponibilidad posible en nuestro sistema para cumplir los acuerdos establecidos con los usuarios y clientes.
Diseño e implementación
Una característica importante de las aplicaciones de la nube, es la reutilización de componentes y servicios para otras aplicaciones, que nos permitirá reducir tiempos y costes en los desarrollos futuros, también igual de importante es la capacidad de mantenimiento de nuestros servicios o el diseño de los mismo. Todas estas características provienen en gran medida de las decisiones tomadas durante la fase de diseño e implementación.
Gestión y seguimiento
Al estar nuestros sistemas funcionando en servidores externos a nosotros, perdemos parte del control y nos dificultan las tareas de monitorización de nuestros servicios. Por ellos son los propios servicios los que deben exponer información de monitorización y que esta sea explotada por los usuarios(admin) o por otros servicios encargados únicamente de esta monitorización.
Resistencia
Nuestros sistemas en la nube deben ser capaces de manejar posibles fallos que ocurran y recuperarse de ellos, buscando siempre afectar lo menos posible al funcionamiento de nuestro servicio, a esto lo denominamos resiliencia. Las aplicaciones que se ejecutan en la nube son más propensas a que se produzcan errores, esto se debe a que los servicios comparten recursos con otros servicios al estar alojados en los mismos centros de datos.
Gestión de datos
Otro punto clave de los servicios en la nube es la gestión de datos. Siempre buscamos tener el máximo rendimiento posible y la mayor disponibilidad con el objetivo de ofrecer el mejor servicio a los usuarios, para ello estos datos no es almacenan en un único servidor, sino que se reparte entre varios y en varias localizaciones. Esto genera nuevos desafíos a los desarrolladores como puede ser la sincronización de datos entre otros.
Mensajería
Las aplicaciones en la nube están formadas por destinos componentes y servicios, que se deben comunicarse entre ellos para trabajar de forma coordinada. Una buenas forma de resolver esta comunicación es mediante mensajería asíncrona, que nos da una seria de ventajas para nuestro sistema a cambio de una serie de desafíos para los desarrolladores provocados por la gestión de estos mensajes.
Rendimiento y escalabilidad
Por la naturaleza de las aplicaciones en la nube, la carga que reciben no es fija, sino que va variando a lo largo del tiempo, por esta razón nuestros servicios deben ser capaces de manejar estos aumentos de carga, sin afectar al rendimiento de nuestra aplicación, a esto lo llamamos escalabilidad. En la escalabilidad entran distintos elementos como son las propias instancias de cómputos, la memoria del sistema, el almacenamiento o los sistemas de mensajes.
Seguridad
Un punto importante de las aplicaciones cloud es que deben tener la capacidad de aguantar ataques a nuestros sistemas dándonos garantías de confidencialidad, integridad y disponibilidad, es decir, frente a un ataque nuestro sistema debe ser capaz de no mostrar información a los atacante, y además continuar funcionando de la manera habitual. Para mantener esta seguridad los desarrolladores deber estar alerta de lo que sucede en el sistema(auditoria) y remediar de manera eficiente vulnerabilidades encontradas.