Por: TXEMA RODRÍGUEZ
La tecnología avanza a pasos agigantados y, de repente, lo que era lo más común deja de serlo. Te quedas fuera, desfasado. Por ello es importante estar atento a la hora de detectar las tendencias que nos llevarán al futuro del desarrollo software. No hablamos de modas o de los lenguajes que más marketing hacen. Hablamos de lo que realmente están haciendo y aprendiendo los programadores, así como las tecnologías que, aunque minoritarias a día de hoy, serán los estándares de facto del futuro.
Basándonos en el estudio realizado por la plataforma educativa de O’Reilly, hemos analizado los resultados y conclusiones del informe. Una combinación de términos de búsquedas y temas que los desarrolladores están explorando y demandando activamente, lo que da un consistente indicador de los temas cuya tendencia ascendente en popularidad merece echar un vistazo.
En el radar de O’Reilly se encuentran 3 tendencias claves, que más adelante analizaremos:
El fuerte crecimiento de temas relacionados con el cloud. Ya no se trata solamente de llevar una aplicación a la nube sino de su arquitectura y como sistemas cada vez más complejos y enormes han empujado a los microservicios, apoyándose, en la orquestación de servicios mediante Kubernetes.
El Blockchain que para algunos sigue sonando al hype de las criptomonedas, tiene una gran cantidad de usos donde desarrollar aplicaciones distribuidas sin depender de una autoridad central. No solo transacciones monetarias, sino contratos inteligente o verificaciones de autoridad.
Python, Java y JavaScript siguen dominando y parece que cada año revalidan su relevancia gracias a su ecosistema en constante evolución. También empiezan a sonar fuerte: Rust o Go como lenguajes modernos que ayuden a ser más productivos a los desarrolladores a la vez que permiten un alto rendimiento y escalabilidad.
No se trata solo de llevar a la nube las aplicaciones sino aislar cada aplicación en microservicios
La siguiente arquitectura ya está aquí: Docker + Kubernetes
Pocas startups no están construidas a día de hoy basándose en microservicios, usando contenedores Docker para desplegar y escalar servicios orquestando esta arquitectura cada vez más grande usando Kubernetes. El foco queda claro que está en la escalabilidad y la descomposición de cada problema particular en un servicio especializado.
Debido a la flexibilidad que necesita una organización, llevamos años viendo com Amazon Web Services, Google Cloud o Microsoft Azure no paran de crecer. Los tres grandes actores del mercado se llevan gran parte de la tarta del cloud empresarial. El primero de todo, AWS sigue siendo el rey con cada vez más servicios concretos a un problema especifico, pero la migración de grandes compañías hacia la nube de Google Cloud abre camino a otro competidor importante.
Docker no es ningún recién llegado. Forma parte fundamental de esta arquitectura que permite descomponer y modular cada servicio en la nube. Y por otro lado, se busca ayudar a la productividad del desarrollador aislando al máximo esos microservicios en su propio entorno, con solo sus propias dependencias y configuraciones que no entren en conflicto con el resto de servicios. Además que, un factor fundamental en esta arquitectura es la integración continua y el desarrollo continuo: lo que significa que nosotros podemos desarrollar nuevo código, crear una nueva build, empaquetarla y crear una imagen de Docker para ser desplegada a produción con la mínima fricción.
Todo este gran número de microservicios, ejecutándose en algunos casos en centenares o miles de contenedores justifican un claro enfoque en herramientas que sean capaces de orquestar toda esa nube de recursos como Kubernetes. Desde que fuera liberado como proyecto open-source por Google, Kubernetes representa el ingrediente esencial para escalar productos a nivel global con total confianza y estabilidad. El estándar de factor queda claramente representado en Docker + Kubernetes.
Blockchain madurando poco a poco para ser la base que revolucionará internet
Probablemente la confusión entre Blockchain y criptomonedas sigue estando presente. Pero cabe recordar el origen del blockchain, un sistema distribuido, donde no necesitemos una entidad centralizada para realizar operaciones. La posibilidad de crear contratos inteligentes muestra el potencial tremendo de estas plataformas que no sólo revolucionará las finanzas sino también internet.
Teniendo una gran base de datos distribuida donde toda la información está almacenada en bloques, los cuales son inmutables, es decir, nadie puede modificarla, abre un amplio abanico de posibilidades de desarrollo poco exploradas a día de hoy.
Entre las tecnologías relacionadas nos encontramos con Ethereum, no confundir con la criptomoneda Ether. Con ello podemos crear esos smart contract como piezas de código autocontenidas que definan acuerdos entre múltiples partes dentro del blockchain. Más concretamente, uno de los lenguajes a tener en cuenta es Solidity con un sintaxis similar a JavaScript y C con lo que podemos desplegar esas pequeñas entidades de código EVM (Ethereum Virtual Machine). Y tampoco podemos olvidarnos de Bitcoin o la influencia de blockchain como elemento de seguridad y sincronización en IoT.
El principal foco es construir APIs que accedan al blockchain, crear algoritmos de consenso para verificar la información y mantener la red de blockchain sincronizadas. Un incipiente ecosistema por construir con algunas herramientas ya presentes que no hay que dejar escapar.
Python, Java y JavaScript continúan su dominio apoyados en el Machine Learning
Año tras año vemos a estos tres lenguajes en el top de cada ranking que se crea sobre tendencias y usos. Vamos a analizar la explicación no sólo viven de que históricamente tienen un amplio ecosistema y cuota de mercado ganada sino como las nueva tendencias se apoyan en estos tres lenguajes.
Machine Learning es una de las tecnologías que más apoyo recibe de la comunidad de Python. Muchas de las librerías que se utilizan en Data Sciencetienen su base en Python. También la apuesta de Google por TensorFlow cuya API está basada en interfaces Python ha ayudado al interés por este lenguaje con bastante veteranía y solidez demostrada a la hora de analizar y extraer datos de grandes cantidades de información.
Tenemos también algunos ejemplos como PyTorch, una librería para computer vision y procesamiento de lenguaje natural que ha escalado relevancia junto con otra librería como scikit-learn.
Java sigue siendo uno de los lenguajes claves en el de desarrollo de aplicaciones a gran escala, escoltado por Scala y Kotlin aprovechándose de la JVM. Así todos los avances de en soluciones Big Data siguen confiando en Java. Nos encontramos con tecnologías ampliamente utilizadas como Spark o Kafka.
Y, por último, JavaScript sigue siendo el rey dentro del ecosistema web. Con un crecimiento menor que el resto pero que tiene en framework como Angular, Reacto Vue, a este último le dedicamos un post especial hablando de las principales razones para usarlo.
Entre los otros lenguajes que se han colado en el ranking de O’Reilly están Godebido a su combinación de sintaxis fácil, gran soporte de concurrencia y una activa comunidad de desarrolladores, apoyada por Google. Aunque tampoco podemos olvidar de Rust, un lenguaje de sistemas muy cercano al rendimiento que provee C, seguro, con un eficiente uso de memoria, soporte de concurrencia nativa y una sintaxis moderna.
Imagen | RS2Photography
Vía | Genbeta
Escrito por | TXEMA RODRÍGUEZ
コメント