Sei sulla pagina 1di 76

Nuevas Tendencias en

Desarrollo de Software para


instituciones públicas
PhD. Diego José Luis Botia Valderrama
2020

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

Sector TI : USD $ 3,756,862

Software: USD $ 1,200,000


1. Microsoft,
2. Oracle,
3. IBM,
4. Salesforce,
5. Apple,
6. Dell EMC y
7. Activision
Fuente: informe Gartner, 2020
Mercado del Software
Resultados

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

Estados Unidos es el principal destino, con 29%,


España con 19% y Ecuador con 11%.
Entre las empresas colombianas más destacadas en esta industria
están:
1. Carvajal, con facturaciones superiores a los $600.000
millones,
2. Intergrupo, con ventas de más de $94.000 millones y
3. Open Systems con $56.000 millones.
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

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

Microservicios / Serverless Visual / Low Code


<Eventing>

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

Tomado de: http://www.enter.co/cultura-digital/colombia-digital/perspectivas-de-contratacion-del-sector-tic-colombiano-en-2017/


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

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

Server Sent Event (SSE) 31


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

❑Documentar APIs Existentes


❑Generación de Proxies / skeletons , SDKs Nativos
❑Integración con herramientas de APIs Managment

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!!!!

Quiero Nuevas Apps


Quiero Nuevas Funcionalidades
Quiero Apps rápidamente
Etc……
La ultima actualización a una app critica
Origen

• Brecha entre Metodologías Agiles e Infraestructura


• DevOps Nace en 2009 para arreglar este problema
• “Infraestructura Ágil”
Que es DevOps?
Que es DevOps?
• “DevOps es una metodología de desarrollo de
software que se centra en la comunicación,
colaboración e integración entre desarrolladores
de software y profesionales en la tecnológicas de
la información (IT)”.

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

• Entornos Operacionales estandarizados


• Aprovisionamiento Automático
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

CODE Integración continua BINARIO


(CI)

Despliegue Continuo
(CD)

TEST UAT STAGING PROD


Proceso con DevOps
• Cuando se implementa
correctamente,
DevOps,Microservicios,
Contenedores, y Cloud
Computing permiten al
equipo de IT
simultaneamente
optimizar las 3
restricciones de los
proyectos: Costos,
Calidad y tiempo hacia el
mercado

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

Alto desempeño, Alta Disponibilidad


71 , IaaS seguro.
Orientación a Cloud
Herramientas de Desarrollo Plataforma Poliglota de Desarrollo de Apps DevOps Pipeline

Microservicios / Serverless

Servicio de Contenedores y Registro

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

Potrebbero piacerti anche