Architecture et Extensions d ArcGIS Server
Plan de la présentation Présentation Générale ArcGIS Server Deconstructed Architecture et retours d expérience Execution (LoadBalancing // FailOver) Securité (DMZ, RP, etc etc) Dynamicité / Performance / Fonctionnalités Dimensionnements : Ordres de grandeur. Synthèse
ArcGIS Server - Deconstructed Définition Technique Ensemble de composants embarquant la technologie ArcGIS pour des problématiques Serveur «Reseau» «Client» ArcObjects
ArcGIS Server Hello World Pseudo Code Java import com.esri.arcgis.server.*; public void ConnectToGISServer(){ ServerInitializer si = new ServerInitializer(); si.initializeserver(mydomain,myuser,mypassword); ServerConnection serverconnection = new ServerConnection(); serverconnection.connect( ServeurAGS"); IServerObjectManager som = serverconnection.getserverobjectmanager(); IServerContext mapcontext = som.createservercontext("", ""); Try { Object legend = mapcontext.createobject( esricarto.legend ); } } finally { mapcontext.releasecontext(); }
Petit point sur cet Exemple COM Le Noyau d ArcGIS Server permet de travailler directement «à distance» avec les objets de la plateforme + autres objets COM. Qq points d attention sur le transport des paramètres / interfaces ArcGIS Server propose un Contexte d utilisation des objets (IServerContext) Méthodes supplémentaires pour : Associer des objets au context Serialiser/déserialiser en chaine de caractère (~base64) un ensemble d objet StateLess / StateFull Par extension : Chaque appel distant coute (environs 10ms) Synchronisation par le serveur -> sur un contexte les appels sont mis en file d attente. Couplage Fort -> le client dépend d un objet sur un serveur, pas de gestion de la défaillance par le middleware (DCOM)
ArcGIS Server - Deconstructed DCOM SOM «Client» DCOM Custom Custom Custom Context - SOC Context - SOC Context - SOC
Perfs?? Et aspects pratiques Des Miliers d objets disponibles, comment faire si l on doit en utiliser quelques milliers pour faire une opération?? Surtout si le coût d appel distant est très important Faire un objet «façade» de plus haut niveau à l intérieur du contexte, qui lui fait appel aux miliers d ArcObjects Coarse Grain Object Encore plus pratique ArcGIS Propose un objet Principal associé au contexte cartographique : Le ServerObject Cycle de vie calqué sur le contexte Peut être préconfiguré (MXD / Loc / Tbx ) getserverobject() Beaucoup de ServerObject existent déjà MapServer GeocodeServer GeodataServer.. Et la possibilité d en creer
ArcGIS Server - GISServer DCOM SOM «Client» DCOM SO SO SOE SOE SO Custom SOE Custom Context Custom - SOC Context - SOC Context - SOC GisServer
ArcGIS Server Decompiled Définition : Un Service est un patron de configuration d objets (ServerObject, ServerObjectExtension aka SOE) + politique d allocation de contexte Poolé / Non Poolé Poolé : aka StateLess Un «groupe / pool» de contexte est pré-éxécuté Le «createcontext» ne cree pas le contexte, mais récupére une référence déjà existante -> beaucoup plus rapide Non Poolé Chaque createcontext cree une nouvelle instance de service Isolation Threaded Chaque instance est un thread d un même processus Process Chaque SOC a son propre EXE
Server Object Extension Compagnon du ServerObject Suit le cycle de vie du ServerObject (creation / destruction / allocation de contexte / desallocation) Est inprocess au contexte -> l appel aux autres arcobjects est theoriquement 10 e 6 fois plus performant Connait le ServerObject (dans l initialisation, une référence est passée) Les + Complète les fonctionnalité d un ServerObject dans réimplementer les fonctions de base Facile à implémenter, généralement 2-3 interfaces de quelques méthodes Communication directe SOAP sur un SOE Implémentable en java depuis 9.3.1, en.net depuis la 9.2
Les Avancées d ArcGIS 10 sur les SOE Grande simplification de l implémentation de SOE Communicants Les SOE peuvent directement dialoguer en REST ou en SOAP Système de description des primitives permet de décrire les paramètres. Des Facilités pour la partie SOAP également La prise en compte des environnements managés (CLR / JVM) simplifie l utilisation, plus besoin d enregistrement dans la base de registre «Addins»
ArcGIS Server Big Picture HTTP /arcgis/services/monservice/mapserver/wmsserver /arcgis/services/monservice/mapserver /arcgis/rest/services Web Tier Interne AGS Web - ADF End Point OGC End Point SOAP End Point REST SOM DCOM Soap over DCOM SO SO SOE SO SOE SOE Custom Custom Context - SOC Context - SOC Custom Context - SOC GisServer
Plan de la présentation Présentation Générale ArcGIS Server Deconstructed Architecture et retours d expérience Exécution (LoadBalancing // FailOver) Sécurité (DMZ, RP, etc etc) Dynamicité / Performance / Fonctionnalités Dimensionnements : Ordres de grandeur. Synthèse
LoadBalancing - Standard Fichiers de paramétrage EndPoint Configuration Manager HTTP HTTP WebTier WebTier DCOM DCOM SOM SOM Context Context - SOC - SOC GISServer Context Context - SOC - SOC GISServer
LoadBalancing / FailOver / Maitrise de l exécution Elements délicats: DCOM / Fortement couplé Dépendance entre webtier AGS / GISServer Gestion des modes de défaillances HTTP HTTP -Faiblement couplé WebTier DCOM -Solutions Hardware / Software pour Loadbalancing / 1 er niveau de fail over -Traçage / Logs GISServer -Supervision Nous avons de très bons retours d expérience sur l utilisation d arcgis server en mode «Node»
Architecture de WebServices de Cartosphere Nœuds ArcGIS Server identiques Frontral Load balancing / 2 eme niveau de FailOver Gestion de la securité / consommation LB - Hardware HTTP Frontal - Orion Frontal - Orion Frontal - Orion WebTier GISServer DCOM WebTier GISServer DCOM WebTier GISServer DCOM SAN - Cluster
Plan de la présentation Présentation Générale ArcGIS Server Deconstructed Architecture et retours d expérience Exécution (LoadBalancing // FailOver) Sécurité (DMZ, RP, etc etc) Dynamicité / Performance / Fonctionnalités Dimensionnements : Ordres de grandeur. Synthèse
Sécurité Séparation réseau des éléments Dans le cadre d applications / fourniture de services, on préfère ne pas ouvrir ArcGIS Server sur l extérieur Fonctionnalités riches Souhait de maitriser l exécution Deux grandes contraintes dans la mise en place DCOM difficile à faire passer le FireWall -> lié au couplage fort Accès aux données gourmand en bande passante
Sécurité CAS 1 HTTP Internet FireWall Tomcat / IIS/ Application Web HTTP FireWall DMZ WebTier DCOM GISServer - Attention aux fonctionnalités (pas d accès DCOM vers AGS) -Sinon à partir d ArcGIS 9.3.1 / ArcGIS 10 -Voir les besoins directs de données de l application
Sécurité CAS 2 HTTP Internet FireWall Apache, HAProxy.. Reverse Proxy HTTP / AJP HTTP/AJP FireWall DMZ Application Web HTTP ou DCOM WebTier DCOM GISServer
Plan de la présentation Présentation Générale ArcGIS Server Deconstructed Architecture et retours d expérience Exécution (LoadBalancing // FailOver) Sécurité (DMZ, RP, etc etc) Dynamicité / Performance / Fonctionnalités Dimensionnements : Ordres de grandeur. Synthèse
Dynamicité / Performances / Fonctionnalités Riches Plusieurs «types» de services cartographiques avec ArcGIS Server Dynamiques (filtrages possibles dans la carte) MXD Accès Full ArcObjects à partir du ServerObject MSD Plus rapide mais pas d accès ArcObjects Des contraintes de symbologie / sources de données Cache (fixe, pas de filtrage) Ordres de grandeur Génération d une carte MXD 200 -> 700ms Génération d une carte en MSD ½ temps MXD Récupération d une tuile 10 ms
Dynamicité / Performances / Fonctionnalités Riches Une Bonne utilisation des types de services Superposition dans le client (bonne pratiques <= 3) Cache + Service Dynamique pour les données métier On peut combiner aussi dans le cadre d un développement les deux modes de fonctionnement
Dynamicité / Performances / Fonctionnalités Riches Exemple de réalisation : Application Extranet à large audience pour un assureur Pas mal de couches compliquées -> zones issues de l imagerie Fonctionnalité : Choix de combinaisons d affichage des couches Beaucoup de cas standard dans la combinaison des couches à afficher Pas de mise à jour des données au «fil de l eau» Application Web Http Accès FileSystem WebTier GISServer DCOM Cache «dynamique» /cache/0_1_4_5/l01/r000001/c000001.png
Dynamicité / Performances / Fonctionnalités Riches Exemple de réalisation 2 : Application Riche WebADF Ajout de données personnalisées Problématique de Contextes dédiés à un utilisateur de l application Http SOAP Proxy SOAP Application Web ADF WebTier MSD Poolé / Cachés GISServer Contexte dédié
Dynamicité / Performances / Fonctionnalités Riches Exemple de réalisation 3 : Application de GeoAnalyse Changement de thématiques à la volée Choix des indicateurs joints à la volée Application Flex Http REST Web Tiers applicatif WebTier SO SOE Custom DS Context GISServer - SOC InfoCentre
Plan de la présentation Présentation Générale ArcGIS Server Deconstructed Architecture et retours d expérience Exécution (LoadBalancing // FailOver) Sécurité (DMZ, RP, etc etc) Dynamicité / Performance / Fonctionnalités Dimensionnements : Ordres de grandeur. Synthèse
Dimensionnement Une application utilisant ArcGIS Server est parfois délicate à dimensionner (multiplicité des types de services, des cas d utilisation ) Des outils disponibles : Dimensionnement Théorique Capacity Planning (Ordre de grandeur sur le réseau / mémoire / CPU) White Paper Design System and Strategies Dimensionnement Pratique pour le passage à l échelle Connaitre les fonctionnalités, les cas d utilisation, avoir l application Scripter + tests en charge
Exemples de dimensionnements Application 1 : Cartographie WebADF, recherche de prestataires (NetworkAnalyst) et calcul d itinéraires 1500 utilisateurs connectés: Serveurs totalisant 64 cœurs. (Avec site de secours identique) Application 2 : Cartographie WebADF, gestion de tournées. Affichage d isochrones 300 utilisateurs connectés: 2 serveurs 4 cœurs pour AGS, 10 serveurs 2 cœurs pour le tier Web. LoadBalancing matériel en amont des serveurs Web, et en accès AGS Application 3 : Cartographie Flex, Arcopole, 50 utilisateurs intranet, XX utilisateurs grand public : 1 serveur 4 cœurs. Limitation des accès simultanés à partir d internet.
Exemples de dimensionnements Application 4 : Cartographie thématique dynamique 150 utilisateurs : 3 serveurs (anciens) 2 cœurs pour AGS, 1 serveur pour le WebTier Application 5 : WebADF, réseaux de chauffage 100 utilisateurs : 3 serveurs 2 cœurs pour AGS en VM, 1 serveur pour le WebTier.
Exemples de dimensionnements Dans TOUT les cas: Le dimensionnement théorique donne un ordre de grandeur correct. La mise en place au plus tôt de tests de montées en charge permet : De corriger / modifier : L architecture :» Mise en place de caches applicatifs (Cf exemple d application)» Transfert de code du tier Web vers des SOE Les données : Simplification, utilisation de bases «caches» plus performantes. Le code de l application (Utilisation d interfaces plus adaptées)
Exemples de dimensionnements Ces tests sont mis en place par: Ecriture d un logiciel exécutant un scénario Enregistrement / exécution d un scénario (LoadRunner/Jmeter/ ) Ils ont pour objectif: D arriver à saturation des ressources de la plateforme de test. Utilisateurs Temps réponse CPU Transaction/sec 5 utilisateurs 1 secondes 36% 6 10 3 secondes 85% 10 15 6 secondes 95% 11 20 10 secondes 99% 8 D obtenir le débit (Transaction/unité de temps) maximal sans excéder le temps de réponse exigé. D en déduire le dimensionnement de la plateforme complète
Conclusion (1) Possibilités d extension avec ArcGIS Server Coté GIS Server Cœur des fonctionnalités Objets instanciés dans le SOC ServerObject ServerObject Extension (SOE) Custom DataSource / Custom Layers / Custom Renderers. Coté Tiers Web DCOM (en fonction des besoins / contraintes) API REST / SOAP Custom à Coté de celle d ArcGIS Server Beaucoup de framework permettant cela facilement Peut utiliser l API SOAP / REST DCOM pour l implémentation Frontal Web devant ArcGIS Server pour utiliser au mieux la plateforme, et gérer les problematiques de Sécurité / Execution / Dynamicité
Conclusion (2) Possibilités d extension avec ArcGIS Server ArcGIS Server est une formidable source de fonctionnalités, «Boite à Services» Regardez les fonctionnalités demandées dans des applications Certaines sont couteuses en ressources / performances Beaucoup de solution pour avoir le service rendu Prendre les problématiques d infrastructure en amont assure une bonne maitrise.