introducción al concepto de la nube nativa.
¿Qué significa ser Nube Nativa (Cloud native) y cómo podemos encaminar hacia ella?
Vistazo a la Nube Nativa sus principios y prácticas.
2. Creasoft.dev 2021
A cerca del documento
Proposito
Proveer introducción al concepto de la
nube nativa, los principios y prácticas.
Audiencia
Directores técnicos, líderes de equipos
de desarrolladores
Ingenieros en general
No previa experiencia de nube necesaria
Contenido
1. Aplicación tradicional
2. Promesa de la nube y beneficios
3. Migrando hacia la nube
a. Hacia la nube nativa
b. El “Twelve Factor App”
c. Más allá del “Twelve Factors”
d. Microservicios
2
3. Creasoft.dev 2021
Aplicación tradicional (sans-Cloud)
MONOLITO
Almacenamiento de
datos
E
S
B
Administra todo!
1. Se requiere personales especializarse por
procesos y capas
2. Todos trabajan para un mega aplicacion
3. Arquitectura se tiende a componentes
altamente acoplados (sincronos)
4. Aplicaciones escalan verticalmente: más
memoria, procesadores más potentes
5. Las mismas aplicaciones son responsables
de soporte operativo como logs, monitoreo,
alerta, etc.
3
4. Creasoft.dev 2021
Prácticas en el desarrollo tradicional
Práctica Dificultades
Especialización dentro del
equipo por procesos y capas
Propensa a errores durante relevo de tareas. Ineficiente
manejando caídas de servicios. Cultura de culpamiento.
Una mega-aplicación, un solo
repositorio
Ausencia de libertad tecnológica. Lento ciclo de desarrollo.
Componentes estrechamente
acoplados
Arquitectura rígida, difícil de modificar y evolucionar
Aplicación con crecimiento
vertical
Costoso, complejo, punto único de fallo. Crecimiento
vertical es limitado.
Aplicación responsable por el
soporte operativo
Código hinchado. Desarrollo lento. Lógicas no relacionadas
con el negocio principal.
4
6. Creasoft.dev 2021
La promesa de la nube
Abstracción de la infraestructura
1. Los equipos se pueden especializar por
dominios y adueñarse del proceso
2. Cada equipo administra módulo(s) de
tamaño manejable
3. Aplicaciones puede reemplazar servicios
backed.
4. Aplicaciones crecen de manera horizontal:
simplemente agrega más nodos.
5. La infraestructura es responsable por el
soporte operativo tales como log,
monitoreo, etc.
SERVI-
CIO
DATOS
SERVI-
CIO
DATOS
SERVI-
CIO
DATOS
App App
6
7. Creasoft.dev 2021
Beneficios de la nube
Ciclo de Desarrollo más
rápido bajo un equipo.
Automatización de procesos de desarrollo y despliegue.
Gestión de infraestructura provista por el proveedor.
Más opciones de tecnología No necesita limitarse a un solo lenguaje. Cantidad de
servicios a escoger.
Requerimientos no-
funcionales realizables
Seguridad, fiabilidad, escalabilidad proporcionada por la
plataforma en la nube
Enfoque en la lógica del
negocio
Uso de servicios de terceros.
Reducción del costo de
mantenimiento
Modelo de paga-por-el-uso. Lambdas pueden reducir
costo de servidores.
7
8. Creasoft.dev 2021
Cumpliendo la promesa!
Se necesita un esfuerzo inicial para obtener los
beneficios!
Sus aplicaciones necesita seguir ciertos principios.
8
13. Creasoft.dev 2021
DESARROLLO OPERACIONES
HERRAMIENTAS
PRÁCTICAS
Elementos de la Nube Nativa (lista parcial)
● Automatizacion
● Lanzamientos
frecuentes
● Manejo de secretos
● Gitops
● Telemetry
● SLA / SLO
● SRE / RCA
● IaaC
● Manejo de
dependencias
● Escalamiento
● Configuracion
● Seguridad al inicio
● Microservicios
● Diseño
observable
● Orquestación de contenedores
● Automatization de Pipeline
● Autn/Auth
● Monitoreo & Logging PAAS
13
14. Creasoft.dev 2021
Nube Nativa, ¿Cómo lo hacemos?
1. The Twelve-Factor App por Heroku
2. Beyond the Twelve-Factor App, por VMWare
3. Arquitectura de Microservicio
14
15. Creasoft.dev 2021
App de los doce factores
1. Código base
(Codebase)
Un código base sobre el que hacer el control de versiones y
múltiples despliegues. Ej. una sola fuente.
2. Dependencias Declarar y aislar explícitamente las dependencias. E.g. maven.
3. Configuraciones Guardar la configuración en el entorno. E.g. K8s ConfigMap, Consul.
4. Backing services Tratar a los “backing services” como recursos conectables.
5. Construir,
desplegar, ejecutar
Separar completamente la etapa de construcción de la etapa de
ejecución. Nada de “puertas traseras.”
6. Procesos Ejecutar la aplicación como uno o más procesos sin estado.
15
16. Creasoft.dev 2021
7. Asignación de
puertos
Publicar servicios mediante asignación de puertos. E.g. no confíe en
el contenedor web.
8. Concurrencia Escalar mediante el modelo de procesos.
9. Desechabilidad Hacer el sistema más robusto intentando conseguir inicios rápidos y
finalizaciones seguras.
10. Paridad en
desarrollo y
producción
Mantener desarrollo, preproducción y producción tan parecidos
como sea posible.
11. Historiales Tratar los historiales como una transmisión de eventos.
12. Admin. de
procesos
Ejecutar las tareas de gestión/administración como procesos que
solo se ejecutan una vez.
The Twelve-Factor App
Más detalles para los factores en negrilla, que considero se necesita más disciplina. 16
17. Creasoft.dev 2021
12FactorApp: 8. Concurrencia
● ¿QUE?: Escalar mediante modelo de proceso
○ No es reemplazar CPUs, y agregar más memorias
(llamado escalamiento “vertical”)
● SI: Diseñar para escalamiento horizontal
○ Particionable: sharding
○ Pruebas en entorno multi-pod (procesos)
○ Uso de eventos para comunicación entre procesos de
larga duración
● NO: Share or coordinate states across replicas
17
18. Creasoft.dev 2021
12FactorApp: 9. Desechabilidad
● ¿QUE?: Más robustez con inicios rápidos y
finalizaciones seguras. Propiedad de elasticidad.
○ Desechable → iniciar, finalizar en el momento que sea necesario.
● SI: minimice el tiempo de arranque, finalice de
manera segura
○ Adopte diseño de fallo rápido.
● NO: Implemente carga o finalización pesada
○ Por ejemplo cargar los caches
18
19. Creasoft.dev 2021
12FactorApp: 10. Paridad en des. y producción
● ¿QUE?: Mantener desarrollo, preproducción y
producción tan parecidos como sea posible
● SI: mantenga las posibles diferencias de etapas al
mínimo
○ El código, personales, herramientas
● NO:
○ Deje reposando el codigo en dev por mucho tiempo
○ Mantenga archivos especiales para diferentes entornos
19
20. Creasoft.dev 2021
Más alla del Twelve-Factor App
API primero Considerar API como artefactos de primera clase en el proceso de
desarrollo.
El api sirve de contrato entre equipos incrementando la agilidad.
Configuración,
credenciales, y
codigo
Manejar los credenciales (claves secretos) con cuidado.
Telemetría Habilitar Observabilidad: Instrumentando la aplicación; recolectando
métricas de rendimiento y de negocio; habilitar alertas.
Eso es importante debido a la naturaleza distribuida de la nube.
Autenticación y
autorización
Múltiples servicios expone más superficies de ataque.
Seguridad es obligatorio. Autenticación y reglas de permisos.
20
21. Creasoft.dev 2021
Microservicios - Retos para el equipo
1. Necesita entender sobre sistemas distribuidos
2. Necesita entender nuevas herramientas y tecnologías
3. Necesita entender qué patrones aplicar in diferencies
circunstancias.
21
22. Creasoft.dev 2021
Microservicios - Como?
1. Rompiendo el Monolito
2. Operando en la nube
3. Aplicando la Capa de anti-corrupción
4. Aplicando el patrón de extrangulación
5. Refactorizando codigos comunes
6. Implementando seguridad y resiliencia
Considere el teorema CAP: Consistency, High Availability and
Network Partitioning
No existe una
prescripción para la
migración de sistema
monolito a microservicio
22
23. Creasoft.dev 2021
Nube no es una cosa nebulosa
allá afuera.
Es una manera probada para
desarrollar aplicaciones que
maneja negocios de alto
rendimiento.
23
24. Creasoft.dev 2021
No tengan temor a la nube
Nube nativa significa comprometerse al proveedor seleccionado
Valla de lleno!
Es mejor tener un sistema que corre muy bien en un
proveedor (e.j. AWS) que un sistema que corre
mediocremente en diferentes plataformas.
24
25. Creasoft.dev 2021
Hemos tocado una pequeña parte de la superficie…
Contáctenos para más información
https://creasoft.dev/es/
info@creasoft.dev
25
26. Creasoft.dev 2021
Enlaces
1. The Twelve-Factor App por Heroku
2. Beyond the Twelve-Factor App, by VMWare, 2016
3. Cloud Native, Using Containers, Functions, and Data to Build
Next-Generation Applications, O’Reilly, 2019
Sitios
1. Cloud Native
2. Docker
3. Kubernetes
26
27. Creasoft.dev 2021
Otros temas relacionados
1. Diseño guiado por el dominio (Domain Driven Design)
2. Modelo Reactivo
3. Prácticas DevOps y System Reliability Engineering (SRE)
4. Ingeniería de Caos
5. Contenedores y Orquestación
6. Malla de servicio (Service Mesh)
7. Función como Servicio
27
29. Creasoft.dev 2021
Que es la Nube?
29
Acceso al
internet
Servicio
mensurado
Auto-servicio a
la demanda
Recursos
compartidos
Elasticidad
Servidores,
almacenamiento, base de
datos, redes, software,
analitica, automatization
30. Creasoft.dev 2021
Tipos de modelos de las Nubes
30
EN PREMISA
Red
Almacenamiento
Servidor
Virtualización
Sistema Operativo
Middleware
Entorno
Datos
Aplicacion
IAAS
Red
Almacenamiento
Servidor
Virtualización
Sistema Operativo
Middleware
Entorno
Datos
Aplicacion
PAAS
Red
Almacenamiento
Servidor
Virtualización
Sistema Operativo
Middleware
Entorno
Datos
Aplicacion
SAAS
Red
Almacenamiento
Servidor
Virtualización
Sistema Operativo
Middleware
Entorno
Datos
Aplicacion
31. Creasoft.dev 2021
Tipos de modelos de las Nubes
31
EN PREMISA Infraestructura
como Servicio
Plataforma como
Servicio
Software como
Servicio
● Heroku
● OpenShift
● Google
Compute
Engine
● AWS EC2
● Azure VM
● Digital Ocean
● Oracle VM
● Google Apps
● MS Office 360
● Jira
● ...
Su aplicación en
su premisa
Notas del editor
Introducción a la Nube Nativa, ver 1.0 (es)
-- DESCRIPCIÓN --
introducción al concepto de la nube nativa.
¿Qué significa ser Nube Nativa (Cloud native) y cómo podemos encaminar hacia ella?
Vistazo a la Nube Nativa sus principios y prácticas.
-- TAGS --
12 factores, arquitectura, contenedor, devops, diseño, docker, elasticidad, kubernetes, microservicio, nube
Foto: https://pixabay.com/photos/cloud-finger-smartphone-phone-2537777/
Let’s start by examining the traditional monolith application.
Teams: dev, qa, DBA, release, operation
Often, we omit the “lift” step and attempt to just deploy the same application in the cloud.
Iaac: Infrastructure as a Code
Add examples.
Service should be based on SLA’s
Skipping the benefits, so much has been said about it.
Additional knowledge: for the cloud:
Container, container orchestration
Security (OIDC), secret management, circuit breaker,
Distributed Logging, Eventing, CQRS, Functions & Lambdas
Gateways, Service Mesh,