Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1
AGENDA
• Algunas Cifras y estadísticas del Mercado del Software
• Lenguajes de programación más populares
• Mundo Backend / Frontend
• Tendencias en Desarrollo de Software 2020
• Arquitecturas de Software y Web APIs
• DevOps
• Cloud Native
2
Algunas Estadísticas
• Según Observatorio TI de MINTIC y FEDESOFT
• Faltan 62.000 profesionales en Tecnologías de la Información
• Para 2025 faltarán 200.000 profesionales según Observatorio Ruta N
• En Colombia existen 8.500 empresas de tecnología que emplean 156.000 profesionales.
• Dentro del Plan de Desarrollo de Medellín (2020-2023) un eje fundamental es el Valle del Software.
• Profesionales faltantes en
• Desarrollo de Software
• Científicos de Datos
• Ingenieros de Sistemas
• Programadores
• Expertos en Ciberseguridad certificados
• Expertos en Inteligencia Artificial.
• Desarrolladores para Blockchain
• Ingenieros de Machine Learning
Fuente: https://www.semana.com/tecnologia/articulo/cuantos-ingenieros--necesita-colombia/651995
Algunas Estadísticas
• Pocas mujeres interesadas en estudiar carreras TIC.
• El mercado colombiano de Software y Tecnologías de la Información es el cuarto más grande
de Latinoamérica, entre los que se encuentran Brasil, México y Argentina.
• Durante los últimos 10 años en Colombia:
• Mercado de TI ha crecido a una tasa del 18%;
• Sector del software ha crecido un 19,1%
• Servicios de TI han crecido un 15,4%.
A través de ACI están llegando múltiples empresas de tecnología a la ciudad que demandan
gran cantidad de talento humano el cual es bien remunerado.
En promedio a un recién egresado se le paga $2.500.000 y a Desarrolladores Senior
$15.000.000 a $20.000.000
Fuente: https://velneo.es/el-desarrollo-de-software-de-gestion-en-colombia-en-2019/
Mercado del Software
Resultados
Gasto global en billones de dólares-
2019
Principales importadores
1. Estados Unidos
2. Alemania
3. China
4. Singapur
5. Países bajos
Principales exportadores
1. Irlanda
2. India
3. Alemania
Elaborado a partir de datos del informe Gartner, 2020 4. China
5. Estados Unidos
Mercado del Software
Resultados
Mercado del Software
Resultados
9
TIOBE Index September 2020
RedMonk Ranking 2019
Fuente: https://redmonk.com/sogrady/2020/07/27/language-rankings-6-20//
Encuesta 2020 - Fedesoft
Según nuestros Egresados
AGENDA
• Algunas Cifras y estadísticas del Mercado del Software
• Lenguajes de programación más populares
• Mundo Backend / Frontend
• Tendencias en Desarrollo de Software 2020
• Arquitecturas de Software y Web APIs
• DevOps
• Cloud Native
14
Node.js
JavaEE
.NET
NoSQL
Patrones para desarrollo de Apps Modernas
Aplicaciones Poliglotas Ligeras Mobile / Chatbot
f(x)
17
Looking for Jobs Oportunities
Y en Colombia???
✓ Una encuesta de la firma TicJob.co
, a 3000 profesionales muestra De entre los encuestados,
cómo es el panorama salarial de ➢ uno de cada cuatro profesionales
los desarrolladores de software en (24%) percibe alrededor de
el país. $4.000.000
➢ uno de cada cinco (20%) devenga
✓ Entre más experiencia tienen los $8.000.000
desarrolladores más ingresos ➢ uno de cada cinco ( 18%) recibe
reciben, incluso, el informe $2.000.000.
plantea que una persona que
tiene nueve años de trayectoria • Tecnologías más demandadas por
puede ganar el triple que una que las empresas de tecnología son, en
lleva dos años ejerciendo. primer lugar, las relacionadas con
desarrollo como Java (42,63%),
✓ Las empresas extranjeras pagan .Net (30.20%) y PHP (19.01%).
hasta el doble de lo que pagan las • En segundo lugar se encuentran las
firmas locales. relacionadas con consultoría y
✓ Ver: gestión de proyectos como
https://www.michaelpage.com.co/sites/mi Business Intelligence (38.54%),
chaelpage.com.co/files/estudio_de_remun
Oracle (27,89%) y ERP (21.49%).
eracion_michael_page_2019-2020.pdf
20
Technology Radar de ThoughtWorks
Fuente: https://www.thoughtworks.com/radar
21
Technology Radar de ThoughtWorks
22
Tendencias de InfoQ
23
AGENDA
• Algunas Cifras y estadísticas del Mercado del Software
• Lenguajes de programación más populares
• Mundo Backend / Frontend
• Tendencias en Desarrollo de Software 2020
• Arquitecturas de Software y Web APIs
• DevOps
• Cloud Native
24
Evolución de las Arquitecturas
Fuente: https://www.appcentrica.com/the-rise-of-microservices/
25
Que ha cambiado con los años?
• Ciclo de desarrollo de las Aplicaciones de 12 a 18 meses → Ciclo de
Desarrollo del tiempo cero (Días u horas)
• Equipos Centralizados → Equipos Distribuidos, diferentes preferencias
(Poliglota)
• Monolítico → Componentes Pequeños (Microservicios)
• UI básicas → Crear mejores Interfaces (UX, Móviles, Bots, etc)
• Desarrollar primero la funcionalidad → Diseñar primero las APIs.
26
Exponen
servicios REST Usan
Tendencia a en formato JSON HTML 5 /
aplicar o Usan GraphQL
Arquitecturas con CSS3
Microservicios y
Serverless
Adoptan
Emplean
persistencia
servicios de
Aplicaciones de
App Web poliglota
Redes Sociales. Modernas
Orientada
a la nube. Aplicación web
Cloud de una sola
Native Usan diseño página (SPA).
web
adaptable Usan OAuth.
(Responsive
Web Design).
27
Ejemplo de persistencia poliglota
28
Arquitecturas de WebApps
29
Arquitecturas de WebApps
30
Arquitecturas de WebApps
32
Importancia de las WebAPIs
• Es muy común que las aplicaciones Cloud presenten Web APIs para
comunicarse con ellas.
• Las organizaciones publican servicios al exterior.
• El desarrollo Móvil se alimenta de APIs.
• Internamente las organizaciones implementan SOA. Es ya es muy común.
No es algo nuevo. Pero es un habilitador para la exposición de APIs.
• Los canales se han multiplicado (móvil, web, wearables, beacons,
chatbots, bots, etc).
• Las necesidades de la industria requieren opciones dinámicas como
Microservicios, DevOps, etc.
33
HAL
• Hypertext Application Language
• Define la hypermedia como enlaces a
recursos externos con JSON or XML.
• Dos tipos de MIME:
application/hal+xml y
application/hal+json
• La documentación puede ser
fácilmente descubierta desde las APIs.
• Facilita la interacción de las APIs con
JSON o XML
• Más Información en
http://stateless.co/hal_specification.html
35
Swagger / OpenAPI
• https://openapis.org
• https://swagger.io/
• Open API Initiative
• Descripción de Servicios / APIs
• Documenta las APIs
• Facilita su uso por desarrolladores
• Herramientas permiten:
❑Contract First Fuente: https://2434zd29misd3e4a4f1e73ki-wpengine.netdna-ssl.com/wp-
content/uploads/2016/11/Swagger_Editor_Full-1.png
36
APIARY
• http://apiary.io
• Diseño de APIs
• Usa API Blueprint como lenguaje
• Sincronización con GitHub
• Inspección de Tráfico
• Orientado a RESTful
• API Driven Development (ADD)
37
AGENDA
• Algunas Cifras y estadísticas del Mercado del Software
• Lenguajes de programación más populares
• Mundo Backend / Frontend
• Tendencias en Desarrollo de Software 2020
• Arquitecturas de Software y Web APIs
• DevOps
• Cloud Native
38
El Problema
Como luce I.T dentro de muchas
organizaciones hoy?
Despliegue de una App típica
Operaciones esta bajo mucha presión
Los entornos de operación están fuera de
control
Los Desarrolladores quieren las ultimas
herramientas
El negocio demanda más!!!!
Según Wikipedia:
Es una metodología de desarrollo con una
serie de prácticas que apuntan a integrar las
áreas de Desarrollo y Operaciones haciendo
énfasis en la comunicación, colaboración,
integración continua, asegurando la calidad y
entregando soluciones de software con
despliegues automatizados.
Que no es DevOps?
• No son únicamente herramientas Open Source o Closed
Source
• No son solo metodologías ágiles.
• No es algo que se aplica del mismo modo en todas las
industrias.
• No es una sola persona; es la unión de todos los esfuerzos
entre el negocio, operaciones (IT, Release Management) y
Desarrollo.
Quienes más lo usan
DEV vs OPS
Como habilitar DevOps
• Integración Continua
• Entregas Continuas
Como habilitar DevOps
• Prototipaje Rápido
Beneficios
Rápido
tiempo al
mercado
Entregas Reduce la
Continuas complejidad
DevOps
Sistemas
Estables y Incrementa
altamente el ROI
escalables
Integración Continua (CI)
• Es un modelo propuesto por Martin Fowler que se basa en
➢ compilar,
Con la mayor frecuencia posible
➢ realizar el análisis de código estático Detección Temprana de Errores
➢ ejecutar pruebas automáticas de todo el proyecto
Entrega Continua y Despliegue Continuo
• La diferencia principal entre la entrega continua y el despliegue continuo es
que el primero requiere de una aprobación manual antes de implantar en
Producción, mientras que el segundo incluso la puesta en producción se
realiza de forma automática una vez que se cubren todos los criterios
definidos para la entrada en Producción para una aplicación.
El proceso de entrega usual
SCM SCM
Despliegue Continuo
(CD)
Fuente: https://www.linkedin.com/pulse/actionable-guidance-managers-devops-microservices-containers-golia
Sin OpenSource no habría DevOps!!!!!!
Virtualizar o Cloud?
• Las arquitecturas modernas suelen tener cierta parte de su infraestructura en virtualización
tradicional y otra en la nube.
• Como saber cual usar?
• - Mascotas vs Ganado – SERVIDORES COMO GANADO NO COMO MASCOTAS
Mascotas:
Le ponemos un nombre. Cual nombre? https://namingschemes.com/
Es única, amada y cuidada
Cuando se enferma la llevamos al veterinario
Ganado:
Le ponemos nombres como VM0993-dev-lab.nodo.udea.edu.co
No importa tanto.
Son casi idénticos entre si.
Cuando uno se enferma consigues otro.
Clustering – Alta escalabilidad y Performance
Alta Disponibilidad
Herramientas Recomendadas
Infraestructura como Código
• Entorno Operativo Estandarizada
• Sistema Operativo
• Lenguaje
• Librerías
• Servidor de Aplicaciones
Tomado de : https://www.edureka.co/blog/devops-tutorial
Pipelines para infraestructura como código
• El uso de pipelines de
entrega continua para
orquestar el proceso de
entrega de software se ha
vuelto muy popular.
• Herramientas de CI/CD
pueden ser usadas para:
• Testear configuraciones de
servidores
• Aprovisionamiento de
ambientes
• Integración de ambientes.
66
Fuente: https://medium.com/cloudnativeinfra/when-to-use-which-infrastructure-as-code-tool-665af289fbde
Ingeniería del Caos
• Introducido por NETFLIX
• Es un enfoque para comprender como se comporta un
sistema aplicando exploración empírica en ambientes de
producción.
• Mediante una serie de pruebas específicas, se pondrían a
prueba características de la infraestructura, como lo son la
disponibilidad, la seguridad y el rendimiento.
• El objetivo es que la resolución de los problemas en estos
sistemas distribuidos proporcione una gran confianza y
capacidad de recuperación de todo el sistema.
• Conseguir estructuras que soporten condiciones extremas.
Fuente: http://ayudasydemascosas.blogspot.com/2016/07/ingenieria-del-caos.html
67
Ingeniería del Caos
• Los servicios pueden fallar: debemos prepararnos!
• No depender de la disponibilidad de otros servicios
• Pruebas bajo estrés y fallas en los servicios.
• Hacer hipó tesis acerca del comportamiento normal del
sistema.
• Variar eventos del mundo real.
• Automatizar experimentos
• Minimizar el efecto de las pruebas.
Fuente: https://medium.com/@rootsec/seguridad-en-la-ingenier%C3%ADa-del-caos-780d24429c8c 68
AGENDA
• Algunas Cifras y estadísticas del Mercado del Software
• Lenguajes de programación más populares
• Mundo Backend / Frontend
• Tendencias en Desarrollo de Software 2020
• Arquitecturas de Software y Web APIs
• DevOps
• Cloud Native
69
Cloud Native
• Cloud Native (nube nativa) es un patrón de arquitectura de software
para desarrollar aplicaciones usando principios esenciales de cloud
computing como la escalabilidad, elasticidad y agilidad.
70
Infraestructura para el desarrollo de Apps
Modernas
Automatizar
DevOps para API Managment
Agilizar.
Contenedores /
Monitoreo Orquestación para
portabilidad /
Elasticidad
Base de
Procesamiento VM VPN Firewall Bloques
Datos
Microservicios / Serverless
Servicios Comunes
Configuración Elasticidad Dirigido a Eventos Orquestación Logging Seguridad Monitoreo
CLOUD
72
Características
Escalabilidad: Posibilidad de que los recursos y Velocidad: Desarrollar, probar y entregar Costos Marginales: Desde un punto estratégico, Cloud
aplicaciones escalen horizontal o código de calidad mucho más rápido. Cloud Native aprovecha la facturación flexible de
verticalmente de manera rápida y dinámica, Native aumenta la capacidad de los equipos proveedores cloud así como el dinamismo de pagar
por recursos adicionales solo cuando sean necesarios.
con pocas restricciones en términos del sin aumentar los recursos de las empresas. En entornos on-premise, permite agregar o quitar
hardware en que se ejecutan. hardware de manera dinámica sin afectar el
funcionamiento base del sistema.
73
Cloud Native
Fuente: https://www.aplyca.com/es/blog/cloud-native
74
Monolitico vs Microservicios
MONOLITICO MICROSERVICIOS
Fuente: http://konverters.com/2018/10/05/microservices-architecture-development-lumen/ 75
• Plataformas Cloud listas
para DevOps.
• Nubes Privadas / Hibridas
• Arquitecturas con
Microservicios dentro de
contenedores.
• Orquestación de servicios.
• Alta escalabilidad
horizonal
GRACIAS !!!!
PhD. Diego José Luis Botia Valderrama
diego.botia@udea.edu.co
2020
77