Quel type de configuration AWS est nécessaire pour exécuter une application de carte Web à bande passante faible à moyenne?


17

Quelqu'un a-t-il de l'expérience avec l'exécution de cartes Web (serveur de tuiles + scriptage JS client) sur Amazon Web Services (S3, EC2 etc ...)? Quel type de configuration AWS est nécessaire pour exécuter une application de carte Web à bande passante faible à moyenne, couvrant une petite zone (-ish) (taille de la ville au petit pays)?

Toutes les tuiles seraient pré-rendues et téléchargées sur S3. Idéalement, j'aurais besoin d'une application de service de tuiles sur le serveur Web qui pourrait servir des MBTiles (au lieu de télécharger des centaines de milliers de bitmaps de tuiles individuellement). Donc, une sorte d'instance EC2 serait nécessaire, mais quelle sorte?

Merci pour tout indice.

MISE À JOUR: juste pour développer ma question. Ce que je recherche en gros, ce sont des commentaires sur la viabilité d'AWS pour l'hébergement de vos propres cartes Web en tant qu'individu (ce qui signifie que cela ne devrait pas coûter trop cher, disons jusqu'à 30 $ / mois). J'héberge mes cartes Web depuis un certain temps par le biais de fournisseurs d'hébergement «ordinaires», mais ceux-ci ont leurs propres limites (la bande passante de téléchargement en est une, la vitesse en est une autre). Je suis également à la recherche de bonnes alternatives à AWS et de tout ce qu'il faut surveiller lors de l'utilisation des services cloud pour les cartes Web.


3
Un projet "Building a National Tile Server" Mapserver + MapProxy + AWS (EC2) Postgres sur ubuntu speakerdeck.com/u/walkermatt/p/building-a-national-tile-server
Mapperz

1
@Mapperz merci pour le lien. Leur configuration est un peu plus ambitieuse, avec un pipeline de rendu de tuiles fonctionnant entièrement sur l'AWS, donc (j'imagine) cela pourrait être assez cher. Mais une révélation est MapProxy, car il prend en charge les MBTiles.
Igor Brejc

1
en utilisant le serveur de petite taille et en servant environ 500 Mo de données SIG, Amazon m'a informé que j'étais admissible au niveau gratuit. juste dire
Brad Nesom

Réponses:


6

Lorsque vous choisissez une architecture pour un service qui repose tant sur une architecture «classique» comme les cartes Web, ne sous-estimez jamais l'efficacité des solutions d'hébergement plus traditionnelles comme les serveurs Cloud RackSpace ou Linode .

Vous aurez beaucoup moins de choix à faire (comme utiliser S3 ou non, des équilibreurs de charge ou non, des sauvegardes, etc. ou non et combien cela va coûter?) Dont le résultat est difficile à prévoir ET, plus important encore, vous pourrez utilisez des outils que vous connaissez déjà.

Ayant vécu la même chose il y a quelque temps, je peux vous dire que les facteurs critiques dans ma décision d'héberger un service de cartes Web sur Rackspace plutôt que sur AWS étaient:

  1. Les serveurs Cloud sont (plus) résistants que les instances EC2. Les instances EC2 sont effectivement attendus à l' échec et ils vont échouer
  2. Les volumes EBS échouent également (il y a beaucoup d'histoires tristes dans les nouvelles) et ont généralement de mauvaises E / S
  3. à moins que vous ne choisissiez les instances plus importantes, la contention des E / S pourrait être un problème (surtout si vous prévoyez d'ensemencer les tuiles sur EC2, plutôt que de les copier). Cela pourrait également être un problème avec les bases de données MTBtiles
  4. Chaque fois que vous redémarrez votre serveur, l'IP publique change: cela ne se produit pas sur Linode ou Rackspace
  5. Vous devrez vous-même proposer une stratégie de sauvegarde et de restauration, tandis que Linode et Rackspace fournissent des instantanés et des restaurations automatiques quotidiens et hebdomadaires.
  6. Si l'hôte exécutant votre VPS échoue, Rackspace se chargera de déplacer votre instance et de la redémarrer sur un autre serveur et ils le feront en 4h (c'est dans leur SLA). Cela m'est arrivé pendant mes vacances: c'était très professionnel. Linode devrait faire de même
  7. Linode a une grande disponibilité SLA: 99,9% et ils revendiquent de grandes performances parce qu'ils ne surprovisionnent pas
  8. Rackspace a récemment mis au point une stratégie de volume comme EBS, donc l'espace disque ne devrait plus être un problème. Auparavant, si vous aviez besoin de beaucoup d'espace disque, vous deviez obtenir une grande instance tandis que sur EC2, vous pouvez provisionner le stockage, le processeur et la mémoire avec un contrôle plus fin.

Avec cela, je ne dis pas qu'Amazon AWS est inférieur aux autres, je dis simplement que parfois les solutions d'hébergement traditionnelles peuvent évoluer aussi bien que celles basées sur le cloud. Un exemple notable est le réseau StackExchange lui-même.


Donc, dans votre cas, je démarrerais une grande instance sur Rackspace puis chargerais toutes les données dans une instance Postgis locale. Ensuite, après avoir configuré le moteur de rendu, j'amorcerais le cache. Une grande instance achèvera le processus d'amorçage assez rapidement afin qu'il ne devienne pas trop coûteux à exécuter. Vous pouvez stocker des tuiles dans les fs, MTBtiles, même sur S3 (btw, vous pouvez servir des données S3 sur un CDN avec CloudFront ).

Une fois l'amorçage terminé, je redémarrerais le serveur et le redimensionnerais en une petite instance (peut-être même 512 Mo) car à ce moment-là, il ne devrait servir que des données statiques.


Cela obtient une réponse un peu longue, donc je vais m'arrêter ici. Si vous voulez que j'élabore sur certains aspects, laissez simplement un commentaire.

Avis de non-responsabilité: je ne suis pas affilié à Rackspace, Linode ou à tout autre fournisseur que j'ai cité.


1
Merci pour votre réponse détaillée. Vous avez souligné certains problèmes que je n'ai pas pris en compte (comme le changement d'IP d'EC2). Beaucoup d'options à choisir. En ce moment, je ne recherche pas beaucoup de puissance CPU dans le cloud, car je n'hébergerai que des tuiles pré-rendues (donc pas de PostGIS, etc.). Mais la capacité de stockage, la bande passante (et la vitesse) sont importantes.
Igor Brejc

Très bon conseil! Ce que j'ai réalisé au fil des ans, c'est que vous devriez utiliser AWS, si vous souhaitez également utiliser leurs autres services. Si vous recherchez des machines virtuelles dans le cloud, il est préférable d'opter pour d'autres fournisseurs tels que Digital Ocean, Linode, etc. Ce sera moins cher étant plus robuste.
Devdatta Tengshe

5

J'ai utilisé WebFaction pour héberger des données SIG dans une base de données Postgresql / PostGIS avec MapServer et je pense que le service est inégalé pour le coût <$10mensuel. Si vous souhaitez utiliser PostGIS 2.0, vous devez l'installer vous-même, ce qui est un peu délicat, mais ils fournissent PostGIS 1.5 par défaut (vous devez ouvrir un ticket de support). Il s'agit d'un service d'hébergement partagé sur CentOS où vous avez toute la souplesse nécessaire pour installer quoi que ce soit dans votre propre partie du serveur.

Je n'ai pas utilisé Webfaction pour servir des tuiles, mais elles fournissent 100 Go d'espace; Je ne sais pas si la RAM serait trop coûteuse car la valeur par défaut est de 256 Mo (et chaque 256 blocs coûte 7 $ de plus par mois)


Soit dit en passant, est-il acceptable d'inclure un lien de référence lorsque vous répondez à des questions comme celles-ci? Cela n'influence pas consciemment mon point de vue, mais cela pourrait en théorie!
djq

1
merci pour l'astuce. Les prix de WebFaction semblent attrayants. Dommage qu'ils n'offrent pas plus d'informations sur les applications qu'ils proposent. À quel point l'installation de PostGIS et de MapServer était-elle difficile, BTW?
Igor Brejc

Si PostGIS 1.5 est tout ce qui est requis, c'est juste un ticket de support. PostGIS 2.0 n'est pas trop compliqué, mais il suffit de télécharger et d'installer quelques packages comme GDAL, etc. Le personnel de support est cependant très serviable et rapide à répondre. (réalisez que j'ai effacé une partie de ma réponse lors de l'écriture; je la mettrai à jour.).
djq

1
J'ai récemment installé MapServer et TinyOWS sur mon compte d'hébergement WebFaction. Mes données spatiales sont stockées dans une base de données PostGIS 1.5 sur le même compte d'hébergement Web. J'ai décrit les étapes que j'ai faites pour rendre un service MapServer WMS opérationnel: lien
jirikadlec2

5

Une autre possibilité qui utilise AWS:

Vous pouvez envisager d'utiliser la méthode AWS Lambda Tiler conçue par Seth Fitzsimmons. Il l'utilise pour le projet Open Aerial Map et je l'ai utilisé pour un projet client privé tout en travaillant chez Stamen Design.

Il y a un article de blog approfondi que j'ai écrit qui explique comment configurer AWS Lambda Tiler sur Medium.com . Notez que le blog ne couvre que les données raster en mosaïque, mais nous avons également utilisé ce processus chez Stamen pour piloter nos tuiles de carte Terrain Classic mondiales qui sont générées à partir d'une combinaison de données OSM et Natural Earth via PostgreSQL, PostGIS, Mapnik et CartoCSS.

L'un des avantages de cette approche est que vous n'avez pas de serveur de tuiles à entretenir et que vous ne payez que par utilisation de chaque appel de fonction AWS Lambda, ce qui, je suis assez certain, est bon marché pour les petits projets qui ne le font pas. recevoir une énorme quantité de trafic Web. L'un des inconvénients de cette approche est que les tuiles sont placées par l'utilisateur en panoramique et en zoomant sur la carte, de sorte que le premier rendu peut être lent, bien que vous puissiez pré-semer les tuiles à l'avance. Les tuiles sont écrites et stockées dans S3 après leur premier rendu, de sorte que le chargement ultérieur des tuiles est beaucoup plus rapide.


Bonne réponse. Existe-t-il un moyen automatisé de développer des vignettes vectorielles avec des services AWS?
Devils Dream

Je ne sais pas ce que vous entendez par «automatisé» mais le tutoriel de Brain Bancroft sur la configuration d'un serveur MVT utilisant Tegola sur AWS comme l'une de ces méthodes: bancroft.io/blog/mvt-server-2
clhenrick

3

Pour obtenir une tarification détaillée des services AWS, vous pouvez utiliser la calculatrice en ligne située ici: http://calculator.s3.amazonaws.com/calc5.html

Pour une petite instance EC2 exécutant Linux, si vous êtes prêt à vous engager sur un an, vous pouvez acheter une instance réservée qui coûtera environ 25 $ / mois. C'est en comparaison à environ 44 / mois pour les prix à la demande ou les prix sans contrat.

Je pense que la réponse courte à votre question est que si vous recherchez un fournisseur d'infrastructure pour répondre à vos besoins personnels en matière d'application de cartographie Web, AWS pourrait être exagéré. Si vous recherchez un fournisseur informatique pour les applications de production, en particulier si elles nécessitent une haute disponibilité et une évolutivité, AWS est votre réponse. Cela devient encore plus vrai si vous créez des applications qui exploitent les nombreux services de collage fournis par AWS, tels que SQS, SNS, SWF, etc.

Quant au type d'EC2 dont vous avez besoin? C'est une fonction spécifique à vos applications. L'intérêt de l'informatique en nuage est que vous pouvez essayer avant d'acheter. Testez votre application sans engagement, et uniquement lorsque vous le savez, prenez une décision éclairée sur la validation d'un type EC2 sur une période de temps (l'achat RI).


3

Je ne suis pas un expert avec beaucoup ou vraiment aucune connaissance à ce sujet, à part que j'exécute un serveur Web sur amazon EC2 depuis un certain temps maintenant, donc ce n'est pas une réponse.

Je ne suis pas sûr que vous utilisiez ces outils à leur meilleur usage en pré-rendu et téléchargement.

  • La plus grande partie de mes dépenses aws concerne mon transfert de données (ce dont vous parlez de chargement).
  • Que doit faire d'autre votre serveur (sauf si vous utilisez des licences pour restituer des tuiles et que vous n'avez pas de licence pour AWS).

Si cela ne décourage pas ou ne repense pas, choisissez probablement d'abord votre serveur de carte préféré, puis choisissez un système d'exploitation pris en charge pour ce serveur de carte, puis accédez à AWS EC2 et trouvez l'instance qui répond le mieux à vos besoins (taille, mémoire, espace, région).
Il peut y avoir ou non une AMI contenant toute la pile dont vous avez besoin, alors configurez-la ensuite, puis installez votre pile.
Il y a une forte possibilité que vous accomplissiez tout cela gratuitement ou à bon marché.


1
Merci pour votre réponse. Je suis d'accord que le pré-rendu n'est pas idéal, mais le rendu à la demande nécessite beaucoup plus de ressources d'applications cloud, qui sont également assez chères. Dans un scénario de pré-rendu, le serveur n'a qu'à récupérer les tuiles d'un stockage MBTiles (sqlite) et à les servir, vous avez donc besoin de beaucoup moins de CPU, de stockage sur disque et pas de vrai SGBDR. Et si vous limitez le niveau de zoom le plus élevé à quelque chose de gérable, il n'y a pas autant de tuiles à télécharger. BTW, j'ai un peu mis à jour ma question.
Igor Brejc

0

Cela est vrai, vous pouvez opter pour AWS si vous utilisez leurs différents services car AWS est assez coûteux. Si vous voulez opter pour des prix moins chers avec les mêmes avantages que je recommanderais pour https://fxdata.cloud ou https://digitalocean.com car tous deux ont des services appréciables et des prix moins chers. Vous obtiendrez essentiellement toutes les options du système d'exploitation et du SGBD avec une grande fiabilité.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.