Client-serveur ou apps : quelles options pour mes logiciels professionnels ?

Difficile de faire son marché dans la jungle des offres de programmation, frameworks et modes de déploiement des applications. Qu’adopter côté back-end : un serveur d’applications dédié ou une pile LAMP adaptée ? Et côté front-end : une interface web ou une application native ?

Quel choix faire pour mes applications professionnelles ? Une question difficile. Une chose est certaine, le mode client-serveur est revenu en force avec l’avènement des technologies web, utilisées aussi bien en externe (Internet) qu’en interne (Intranet). Mais, dans le même temps, les logiciels autonomes en mode natif ont connu une explosion, grâce au phénomène des apps des terminaux mobiles – smartphones et tablettes.

Back-end : serveurs d’applications

Le grand classique pour le back-end reste l’adoption d’un serveur d’applications. Une approche industrielle très efficace, mais qui sera souvent centrée autour d’un langage de programmation et de frameworks spécifiques.

ASP.NET se focalise ainsi sur la plate-forme .NET. Dans le monde Java, des offres comme Geronimo, GlassFish, JBoss/WildFly, Tomcat, WebLogic, WebSphere et bien d’autres se partagent le marché. Si c’est l’unité qui fait le succès de la plate-forme .NET, c’est bel et bien la diversité des offres qui semble faire celle de la plate-forme Java.

Mais ce n’est pas tout. Nous pouvons ainsi citer Zope, serveur d’applications conçu pour le langage de programmation Python. Côté PHP, c’est Zend Server qui tend à être le serveur d’applications de référence du marché.

Nous pouvons également mentionner des offres hybrides, capables à la fois de créer des applications natives et des titres client-serveur, avec intégration d’un serveur d’applications. Ces offres cross-plateformes sont naturellement arrivées dans le monde du web. C’est par exemple le cas de Xojo. Mais aussi de solutions françaises comme Wakanda ou WebDev.

Back-end : LAMP et dérivés

La pile LAMP (Linux, Apache, MySQL, PHP) s’est imposée très largement dans le monde des sites web. Puis celui des applications web. Et aujourd’hui dans les logiciels métier, qui s’axent pour beaucoup sur du client-serveur, avec – côté client – l’adoption d’interfaces en mode web.

Plus qu’une offre, la pile LAMP est devenue un concept, décliné à loisir selon les plates-formes et langages. Le ‘L’ de Linux peut ainsi se transformer en ‘W’, pour Windows. Le ‘M’ de MySQL est alors de susceptible de céder la place au ‘S’ de SQL Server.

Même sous Linux, la pile LAMP tend à évoluer. Le serveur web Nginx concurrence ainsi de plus en plus Apache. Quant à MySQL, il serait plus exact de parler aujourd’hui de MariaDB. Voire de PostgreSQL, qui sera parfois un choix plus naturel pour les requêtes relationnelles lourdes. Quand à PHP, il cède régulièrement la place à d’autres solutions, comme Perl, Python, Ruby, etc. Et même parfois à du JavaScript en mode serveur, qui permet d’apporter un certain degré d’unification entre back-end et front-end.

Il est à noter que toutes les technologies back-end abordées ici peuvent être déployées sur des serveurs dédiés, en mode virtualisé, dans le Cloud, ou encore sous la forme de conteneurs.

Front-end : le desktop passe en mode web

Avec la montée d’Internet et des Intranets, les applications web sont devenues pratiquement la norme en entreprise. Certes, des titres natifs sont encore proposés, mais la praticité de recentrer les applications métier sur les serveurs constitue un avantage clé pour les DSI. Un argument qui joue en faveur des applications web.

Une petite révolution dans les usages se fait toutefois sentir ici, avec des front-ends de plus en plus intuitifs et modernes. Une conséquence directe de l’adoption massive du JavaScript côté client, et de techniques comme Ajax, qui permet de fluidifier les interactions entre la partie frontale de l’application web et le celle fonctionnant côté serveur.

Le temps des solutions propriétaires semble ici révolu. Place aux standards du web : HTML5, CSS3 et JavaScript. Gare toutefois à l’expertise des développeurs : ils devront savoir se montrer suffisamment modernes pour détecter et utiliser les solutions HTML5 susceptibles d’améliorer les front-ends des applications pros. Mais aussi suffisamment conservateurs pour limiter les soucis futurs de compatibilité et de maintenabilité.

Front-end : des apps mobiles natives

Il est un domaine où les applications natives restent majoritaires ; le monde mobile. Sous Android, AppBrain recense ainsi une logithèque forte de 2,8 milliards de titres. Quant à Apple, il a annoncé en début d’année que 2 milliards d’applications iOS étaient référencées sur son App Store.

Pour créer ces applications mobiles natives, des outils sont proposés par les éditeurs des OS. Le langage de programmation Java est ainsi au cœur d’Android (mais pas la plate-forme Java elle-même), alors que les solutions iOS pourront adopter l’Objective-C ou Swift, et celles sous Windows la plate-forme .NET.

Les synergies entre back-end et front-end seront difficiles à créer dans ce contexte. Côté Android, l’adoption d’un serveur d’applications Java laisse toutefois entrevoir une réutilisation possible de compétences communes entre le code Java serveur et le code Java client. Quoique les différences entre les deux restent ici assez importantes.

Les solutions Xamarin permettent pour leur part d’utiliser du code C# sous Android comme iOS, facilitant ainsi la réutilisation des compétences des développeurs .NET. Xamarin fait aujourd’hui partie de Microsoft, ce qui lui permet de monter en puissance.

Front-end/back-end : webification et javascriptisation

Les PME n’ont souvent pas de moyens très importants pour développer leurs applications. La pile LAMP reste alors une valeur sûre, car facile à mettre en œuvre. Mais lorsqu’une application native est requise, les choses se compliquent.

La solution pourrait venir des applications hybrides. L’idée est ici de créer des applications natives à partir de technologies issues du web : HTML5, CSS3, JavaScript et des API spécifiques à la création d’applications natives. Mobiles et Cloud dans la majorité des cas. La réutilisation du savoir-faire acquis dans la création d’applications web classiques est alors maximale. Exemple de ce type de technologie : Apache Cordova. Ou encore RhoMobile.

Une boucle de rétroaction se fait également sentir, avec la réutilisation de technologies issues des navigateurs web pour la partie back-end des applications client-serveur. Node.js permet d’utiliser du JavaScript pour la mise au point de la partie serveur de l’application. Remplaçant ainsi les classiques C#, Java ou PHP utilisés jusqu’alors. Une tendance à surveiller de près.