TECH NEWS
So long 2015, what’s up 2016?
L'industrie de l'informatique est plutôt jeune en comparaison de certaines autres ayant plusieurs centaines d’années d'existence. Ainsi, le premier ordinateur a été créé par Alan Turing durant la Seconde Guerre mondiale, il y a seulement 70 ans. Beaucoup de choses ont changé depuis : l'invention du transistor, l'arrivée d'internet, l'avènement du mobile. En cette fin d’année 2015, nous allons revenir sur les tendances que l’on a pu observer ces derniers mois, et essayer d’envisager quelles seront les nouveautés en 2016.
December 2, 2015
L’industrie de l’informatique est plutôt jeune en comparaison de certaines autres ayant plusieurs centaines d’années d’existence. Ainsi, le premier ordinateur a été créé par Alan Turing durant la Seconde Guerre mondiale, il y a seulement 70 ans. Beaucoup de choses ont changé depuis : l’invention du transistor, l’arrivée d’internet, l’avènement du mobile. En cette fin d’année 2015, nous allons revenir sur les tendances que l’on a pu observer ces derniers mois, et essayer d’envisager quelles seront les nouveautés en 2016.
Analyse par Cédric Pontet – Software Architect & Agile Coach chez Agile Partner.
Une nouvelle architecture ?
Même si notre industrie évolue et se réinvente, on a parfois tendance à voir les mêmes concepts revenir régulièrement sous un nouveau nom. Après SOA et “component-driven architecture”, la dernière mode en terme d’architecture logicielle s’appelle “microservices”. Tout le monde veut en faire, et pourtant, personne n’est réellement capable d’en donner une définition exacte.
2015 a été l’année des “microservices”. Toutes les entreprises se voient faire comme Netflix, Spotify ou Amazon et déployer plusieurs fois par jour en production des centaines de “microservices” développés par autant d’équipes two-pizza. Pas une conférence informatique sans au moins une session sur le sujet. Sus au monolithe, les “microservices” vont révolutionner le monde. Le problème avec ce type d’architecture, tous ceux qui s’y sont essayés s’accordent à le dire, est que c’est extrêmement difficile à mettre en place correctement. Ça demande un niveau de maturité important et implique qu’il faut peser le pour et le contre entre l’avantage concurrentiel attendu et la complexité engendrée par ce type de déploiement. Un seul mot d’ordre, méfions-nous de ce que Thoughtworks appelle “microservices envy“.
L’année 2016 devrait nous apporter une plus grande maturité dans ce domaine, avec des retours d’expérience qui nous permettront d’éviter les principaux écueils et surtout un outillage adapté qui permettra de résoudre plus facilement les problèmes posés par le déploiement de ces centaines de petits services : sécurité, monitoring, découverte et documentation des APIs, etc.
Plus qu’à ce dernier “buzz word”, nous croyons à l’avènement d’applications réactives respectant les principes du Reactive Manifesto. En 2016, nous devrions voir apparaître de plus en plus d’applications résilientes, nativement asynchrones car basées sur des envois de messages, capables de supporter une très grande charge en production et de s’auto-diagnostiquer en cas de problème. Ces applications existent déjà, mais leur usage va se généraliser à coup sûr.
Quoi de neuf du côté des plateformes ?
S’il y a bien une technologie qui a été sur toutes les lèvres en 2015, c’est bien Docker. Docker révolutionne la manière de déployer des applications en production en permettant de construire et déployer des containers qui fournissent une forte isolation tout en garantissant un haut niveau de performances. Docker est pour l’instant disponible sur les plateformes Linux, mais l’implémentation de cette technologie sur la future version de Windows Server 2016 prouve que l’avenir passera par les containers.
Associé au cloud et aux différents outils d’orchestration qui se développent dans cet écosystème (Swarm, Kubernetes), Docker s’inscrit dans une vision d’infrastructure résiliente dynamique, de type Phoenix Servers capables de renaître de leurs cendres en cas de crash. Les systèmes de production sont désormais capables de s’auto-réparer, et même si toutes les entreprises n’ont pas nécessairement besoin d’aller jusqu’à créer une simian army à la Netflix, ces bonnes pratiques poussées notamment par le mouvement DevOps vont enfin amener notre industrie à une véritable maturité dans ce domaine.
Et comme une bonne nouvelle n’arrive jamais seule, l’initiative de standardisation des containers initiée par les grands du web devrait bientôt permettre de déplacer un container de façon transparente d’une plateforme hôte à une autre sans tenir compte de l’OS qui la supporte. 2016 sera l’année Docker ou ne sera pas.
Qu’en est-il du côté des langages ?
Même si les langages objets comme Java et C# restent prédominants, nous sommes en train d’assister à une vraie montée en puissance des langages fonctionnels. Scala, F#, Clojure, Go et même Erlang, qui ne date pas d’hier, sont à la mode. Certains disent que tout bon programmeur se doit d’ajouter au moins un langage fonctionnel à sa boîte à outils.
Eric Evans, fondateur du mouvement Domain-Driven Design et leader d’opinion du développement objet, reconnaît lui-même que les langages fonctionnels ont des propriétés proches de certains des concepts exposés dans son livre de référence : facilité d’abstraction pour créer son propre DSL, immutabilité des structures de données, fonctions sans effets dérivés. La communauté DDD s’intéresse donc de près aux langages fonctionnels. C’est notamment le cas de Scott Wlaschin qui a, en 2015, présenté dans plusieurs conférences sa session intitulée Domain Modelling with F# type system.
L’un des mythes autour des langages fonctionnels, c’est qu’ils sont excellents pour résoudre des problèmes mathématiques et scientifiques, mais déplorables quand il s’agit de réaliser des interfaces graphiques. Le langage Elm prouve le contraire. Elm est un langage de programmation fonctionnelle réactive (FRP), hautement concurrent, qui se focalise sur la création d’interfaces graphiques tournant dans un navigateur web. Il est rapide et facile à débugger, compatible avec Javascript, et offre une syntaxe claire qui une fois compilée garantit qu’aucune exception ne sera lancée lors de l’exécution.
L’avènement de HTML5 et CCS3, ainsi que l’entrée dans la cour des grands de Node.js et d’EcmaScript 6 rendent l’univers du web de plus en plus riche et attrayant. Nous pouvons d’ores et déjà assurer que 2016 verra le nombre d’applications cross-plateformes tournant dans le browser augmenter significativement et Elm sera sans aucun doute un atout majeur dans ce domaine.
Et pour les autres technologies ?
Internet of Things et Big Data ont été deux sujets majeurs de 2015. Les outils s’enrichissent, les besoins se créent et nous pouvons affirmer sans peur de nous tromper que 2016 continuera sur la lancée. Les plateformes cloud offrent de plus en plus de possibilités dans ce domaine, à tel point que nous assistons à une révolution dans la manière de traiter l’information. Ajoutons à cela la montée en puissance du “machine learning” (R, Spark, Storm), il est certain qu’en 2016 les entreprises voudront en apprendre plus sur leurs clients, leur manière de consommer et leur manière d’interagir avec leurs systèmes informatiques.
Un autre sujet à surveiller de près en 2016 est celui de la réalité augmentée et de la réalité virtuelle. Google s’était essayé avec un succès mitigé à l’amélioration de notre quotidien avec Google Glass. C’est maintenant le tour de Microsoft HoloLens et Oculus, qui révolutionnent le monde du jeu vidéo. Certes, ces technologies sont loin d’être matures, mais quand on voit la vitesse avec laquelle se sont développés les smart phones, on peut raisonnablement penser qu’il y a un bel avenir pour ces nouveaux types de devices.
En conclusion
Que peut-on conclure de tout cela ? Et bien nous ne pensons pas que 2016 verra arriver une révolution dans le domaine de l’informatique. Plus vraisemblablement, la nouvelle année amènera une continuité dans un mouvement de fonds commencé déjà depuis plusieurs années, où les plateformes d’exécution deviennent plus transparentes et homogènes, et où l’accent est mis sur la facilité de déploiement et d’opération des logiciels en production, sur la haute disponibilité et la résilience.