{"id":9829,"date":"2016-05-26T11:45:35","date_gmt":"2016-05-26T15:45:35","guid":{"rendered":"http:\/\/www.analystik.ca\/blogue\/?p=9829"},"modified":"2019-01-23T16:41:17","modified_gmt":"2019-01-23T21:41:17","slug":"approche-developpement-application-multiplateforme-chez-analystik","status":"publish","type":"post","link":"https:\/\/analystik.ca\/blogue\/language\/fr\/approche-developpement-application-multiplateforme-chez-analystik\/","title":{"rendered":"L&rsquo;approche du D\u00e9veloppement d&rsquo;application multiplateforme chez Analystik"},"content":{"rendered":"<p>Dire que la paysage du d\u00e9veloppement d\u2019application multiplateforme a \u00e9volu\u00e9 ces derni\u00e8res ann\u00e9es serait un euph\u00e9misme, tant sur le plan mobile que back-end ou front-end. Et toujours \u00e0 la cl\u00e9, le d\u00e9fi de la performance en termes de d\u00e9veloppement (d\u00e9velopper le plus rapidement possible et \u00e0 moindre co\u00fbt pour le client) et de la performance de l\u2019application multiplateforme livr\u00e9e qui ne se r\u00e9sorbent pas au fil du temps, bien au contraire.<\/p>\n<p>Le nouveau paradigme de d\u00e9veloppement d\u2019application multiplateforme confronte les d\u00e9veloppeurs \u00e0 un environnement h\u00e9t\u00e9roclite multi-OS et multi-appareils (iOS, Android, PC, Web). Et bien s\u00fbr, la demande exige un livrable multiplateforme et multi-appareils performant !!!<\/p>\n<p><!--more--><\/p>\n<h2>Du d\u00e9veloppement mobile au multi-appareil au d\u00e9veloppement d&rsquo;application multiplateforme<\/h2>\n<p>Avant, le d\u00e9veloppeur codait selon son expertise et sa philosophie de programmation et la profonde connaissance d\u2019un environnement donn\u00e9, vous \u00e9tiez Java, Open Source, Windows, iOS ou BlackBerry ; bref, vous codiez pour une et une seule plateforme.<\/p>\n<p>Avec l\u2019av\u00e8nement du BYOD, l\u2019explosion de la Mobilit\u00e9 et la multiplicit\u00e9 des applications mobiles ; le d\u00e9veloppeur \u00e9tait confront\u00e9 \u00e0 la multiplicit\u00e9 des OS\u00a0et \u00e0 choisir une strat\u00e9gie de d\u00e9ploiement \/ codage car il devait coder pour 2-3 OS diff\u00e9rents et leurs UI, bien s\u00fbr. Deux \u00e9coles de pens\u00e9e se sont affront\u00e9es\u00a0: le natif versus le web mobile avec ses diff\u00e9rents fureteurs.<\/p>\n<p>Le d\u00e9fi des d\u00e9veloppeurs consistait aussi \u00e0 rencontrer des contraintes de prix impos\u00e9es par la comp\u00e9tition outre-mer et outre-continent tout en codant\u2026 2 \u00e0 3 fois plus de code !<\/p>\n<p>Ajoutez \u00e0 cela que le monde de la Mobilit\u00e9 a introduit un nouveau mod\u00e8le d\u2019Affaires dans le march\u00e9, soit la gratuit\u00e9 du logiciel (application) quitte \u00e0 trouver une fa\u00e7on de mon\u00e9tiser plus tard le trafic (les abonnements &amp; t\u00e9l\u00e9chargements) dont beaucoup ont surestim\u00e9 la valeur ou n\u2019ont jamais r\u00e9ussi \u00e0 le mon\u00e9tiser ad\u00e9quatement pour faire leurs frais ou des profits.<\/p>\n<p>Ainsi, les \u00ab\u00a0Purs Mobiles\u00a0\u00bb ont opt\u00e9 initialement pour la strat\u00e9gie de d\u00e9velopper \/ d\u00e9ployer une application native compl\u00e8te uniquement pour l\u2019OS du march\u00e9 principal vis\u00e9 (et plus tard, pour chaque OS \/ march\u00e9); ce qui vous coupait de certains march\u00e9s mais qui, en th\u00e9orie, d\u00e9livrait des applications tr\u00e8s performantes. Les autres moins puristes se sont tourn\u00e9s vers le d\u00e9veloppement web mobile auquel on a souvent reproch\u00e9 son manque de charme (design moins sexy) en contrepartie de son adaptabilit\u00e9 \u00e0 plusieurs OS ! Cependant, le d\u00e9veloppement web mobile offrait un avantage ind\u00e9niable en termes de co\u00fbts de d\u00e9veloppement et de d\u00e9ploiement.<\/p>\n<a href=\"http:\/\/www.analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/avant-apres.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9856 size-medium\" src=\"http:\/\/www.analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/avant-apres-300x130.png\" alt=\"avant-apres\" width=\"300\" height=\"130\" srcset=\"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/avant-apres-300x130.png 300w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/avant-apres-768x333.png 768w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/avant-apres-1024x445.png 1024w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/avant-apres.png 1930w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>\n<h3><strong>Voyez grand mais codez petit<\/strong><\/h3>\n<p>Ainsi, dans ce contexte, face au d\u00e9fi de coder \u00e0 moindre co\u00fbt tout en acc\u00e9dant \u00e0 toutes les plateformes (OS), certains ont cherch\u00e9 une pierre d\u2019assise sur laquelle appuyer leur d\u00e9veloppement sans toutefois p\u00e9naliser la performance de leurs applications ; en l\u2019occurrence, le Serveur.<\/p>\n<p>C\u2019est l\u2019angle sous lequel Analystik a choisi de regarder, ou si vous voulez, l\u2019actif sur lequel elle a choisi de capitaliser ; ainsi dans le design de nos applications multiplateformes, nous gardons toute la logique d\u2019affaires de l\u2019entreprise, les principaux calculs et traitements ainsi que les donn\u00e9es du c\u00f4t\u00e9 \u00ab Serveur\u00a0\u00bb. Oui, c\u2019est vrai, on parle encore et toujours de la bonne vieille Architecture Serveur \/ Client, comme dans le temps o\u00f9 les caract\u00e8res affich\u00e9s sur les \u00e9crans \u00e9taient verts.\u00a0 La grande diff\u00e9rence aujourd\u2019hui est dans la fa\u00e7on de \u00ab\u00a0parler\u00a0\u00bb aux diff\u00e9rents Clients; cela n\u00e9cessite un protocole de communication ad\u00e9quat qui est en mesure de bien r\u00e9pondre aux besoins d\u2019affaires et ce, \u00a0sur diff\u00e9rentes plateformes et diff\u00e9rents OS (diff\u00e9rents Clients).<\/p>\n<p>Pour la communication Serveur &#8211; Client, Analystik a choisi REST (Representational State Transfer), un protocole HTTP tr\u00e8s performant et polyvalent, ce qui lui permet de \u00ab\u00a0parler\u00a0\u00bb avec <strong>Java, JavaScript, C#, Swift, Objective C<\/strong>, etc.; bref, nous <strong><em>voyons grand<\/em><\/strong> ! <strong>REST<\/strong> est tr\u00e8s performant car il transf\u00e8re les donn\u00e9es d\u2019une fa\u00e7on peu <em>verbeuse<\/em> (contrairement \u00e0 SOAP).<\/p>\n<p>Cons\u00e9quemment, dans notre philosophie de design d\u2019applications, nous avons convenu de <strong><em>coder petit <\/em><\/strong>sur le plan des Clients \/ UIs, soit de restreindre la nature et la quantit\u00e9 des instructions ex\u00e9cut\u00e9es \u00e0 des instructions d\u2019affichage, de couleurs, etc.<\/p>\n<p>En un mot, ce qui est unique \u00e0 chaque Client sera cod\u00e9 c\u00f4t\u00e9 \u00ab\u00a0Client\u00a0\u00bb et tout ce qui est commun \u00e0 tous les Clients sera cod\u00e9 c\u00f4t\u00e9 \u00ab\u00a0Serveur\u00a0\u00bb.<\/p>\n<a href=\"http:\/\/www.analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-fr.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9855 size-medium\" src=\"http:\/\/www.analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-fr-300x118.png\" alt=\"server-rest-fr\" width=\"300\" height=\"118\" srcset=\"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-fr-300x118.png 300w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-fr-768x303.png 768w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-fr-1024x404.png 1024w, https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/server-rest-fr.png 2006w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>\n<p><strong>Exemple<\/strong>\u00a0: Pour les taxes et les frais d\u2019exp\u00e9dition d\u2019un site eCommerce, les donn\u00e9es seront t\u00e9l\u00e9charg\u00e9es sur le Serveur et les calculs (sommes et taxes) se feront aussi du c\u00f4t\u00e9 Serveur, puis les donn\u00e9es seront mises en cache et affich\u00e9es c\u00f4t\u00e9 Client seulement lorsque requises.<\/p>\n<h3><strong>Assumer ses choix\u2026<\/strong><\/h3>\n<p>Cette approche nous a amen\u00e9 \u00e0 faire preuve d\u2019ing\u00e9niosit\u00e9 car elle capitalise aussi beaucoup sur le protocole de communication <strong>REST<\/strong> en lui imposant parfois la charge d&rsquo;un haut d\u00e9bit de transfert de donn\u00e9es entre le Serveur et les Diff\u00e9rents Clients, ce qui eut \u00e9t\u00e9 impossible il n\u2019y a que quelques ann\u00e9es encore. Il a donc fallu en tenir compte et s\u2019y adapter.<\/p>\n<h3>\u2026<strong>et d\u00e9velopper de bonnes pratiques<\/strong><\/h3>\n<p>Cons\u00e9quemment, nous avons appris et d\u00e9velopp\u00e9 quelques bonnes pratiques :<\/p>\n<ul>\n<li>Limiter la quantit\u00e9 d\u2019instructions ex\u00e9cut\u00e9es du c\u00f4t\u00e9 \u00a0Client\n<ul>\n<li>D\u00e9velopper son flair pour le timing d\u2019ex\u00e9cution<\/li>\n<li>Choisir le bon moment pour transf\u00e9rer les donn\u00e9es aux Clients \/ UIs<\/li>\n<\/ul>\n<\/li>\n<li>Donner les bonnes instructions de mise en cache pour chaque Client \/ UI<\/li>\n<li>Savoir identifier et profiter des capacit\u00e9s et performance de chaque Client<\/li>\n<\/ul>\n<p>Vous vous attaquez au d\u00e9veloppement d&rsquo;application multiplateforme ; suivez ces bonnes pratiques, voyez grand mais codez petit et votre\u00a0code devrait <strong><em>durer\u2026 longtemps, longtemps<\/em><\/strong> !<\/p>\n<p>Bon d\u00e9veloppement d&rsquo;application multiplateforme,<\/p>\n<p><strong>Denis Paul &amp; Michel<\/strong><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Dire que la paysage du d\u00e9veloppement d\u2019application multiplateforme a \u00e9volu\u00e9 ces derni\u00e8res ann\u00e9es serait un euph\u00e9misme, tant sur le plan mobile que back-end ou front-end. Et toujours \u00e0 la cl\u00e9, le d\u00e9fi de la performance en termes de d\u00e9veloppement (d\u00e9velopper le plus rapidement possible et \u00e0 moindre co\u00fbt pour le client) et de la performance&#8230;  <a class=\"excerpt-read-more\" href=\"https:\/\/analystik.ca\/blogue\/language\/fr\/approche-developpement-application-multiplateforme-chez-analystik\/\" title=\"Read L&rsquo;approche du D\u00e9veloppement d&rsquo;application multiplateforme chez Analystik\">Read more &raquo;<\/a><!-- AddThis Advanced Settings generic via filter on wp_trim_excerpt --><!-- AddThis Share Buttons generic via filter on wp_trim_excerpt --><\/p>\n","protected":false},"author":3,"featured_media":11623,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"L'approche du D\u00e9veloppement d'application multiplateforme chez Analystik","_seopress_titles_desc":"Notre approche \"voyez grand, codez petit\" du D\u00e9veloppement d'application multiplateforme repose sur une Architecture Client Serveur et le protocole REST","_seopress_robots_index":"","content-type":"","footnotes":""},"categories":[3361,3359,3363,3377],"tags":[3344,3523,3525,2724,2946,3346,3060,3527],"better_featured_image":{"id":11623,"alt_text":"","caption":"","description":"","media_type":"image","media_details":{"width":2880,"height":1620,"file":"2016\/05\/multiplatform.jpg","sizes":{"thumbnail":{"file":"multiplatform-150x150.jpg","width":150,"height":150,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-150x150.jpg"},"medium":{"file":"multiplatform-300x169.jpg","width":300,"height":169,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-300x169.jpg"},"medium_large":{"file":"multiplatform-768x432.jpg","width":768,"height":432,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-768x432.jpg"},"large":{"file":"multiplatform-1024x576.jpg","width":1024,"height":576,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-1024x576.jpg"},"bones-thumb-2880":{"file":"multiplatform-2880x1620.jpg","width":2880,"height":1620,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-2880x1620.jpg"},"bones-thumb-1920":{"file":"multiplatform-1920x1271.jpg","width":1920,"height":1271,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-1920x1271.jpg"},"bones-thumb-1536":{"file":"multiplatform-1536x1016.jpg","width":1536,"height":1016,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-1536x1016.jpg"},"bones-thumb-960":{"file":"multiplatform-960x635.jpg","width":960,"height":635,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-960x635.jpg"},"bones-thumb-600":{"file":"multiplatform-600x397.jpg","width":600,"height":397,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-600x397.jpg"},"bones-thumb-300":{"file":"multiplatform-300x199.jpg","width":300,"height":199,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-300x199.jpg"},"post-thumbnail":{"file":"multiplatform-125x125.jpg","width":125,"height":125,"mime-type":"image\/jpeg","source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform-125x125.jpg"}},"image_meta":{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0","keywords":[]}},"post":9841,"source_url":"https:\/\/analystik.ca\/blogue\/wp-content\/uploads\/2016\/05\/multiplatform.jpg"},"_links":{"self":[{"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/posts\/9829"}],"collection":[{"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/comments?post=9829"}],"version-history":[{"count":16,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/posts\/9829\/revisions"}],"predecessor-version":[{"id":12131,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/posts\/9829\/revisions\/12131"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/media\/11623"}],"wp:attachment":[{"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/media?parent=9829"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/categories?post=9829"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/analystik.ca\/blogue\/wp-json\/wp\/v2\/tags?post=9829"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}