Che tipo di configurazione AWS è necessaria per eseguire un'app di mappe Web con larghezza di banda medio-bassa?


17

Qualcuno ha esperienza con l'esecuzione di mappe Web (tile server + script JS client) su Amazon Web Services (S3, EC2 ecc ...)? Che tipo di configurazione AWS è necessaria per eseguire un'app di mappe Web con larghezza di banda medio-bassa, che copre un'area (-ish) di dimensioni ridotte (da città a piccola nazione)?

Tutte le tessere verranno pre-renderizzate e caricate su S3. Idealmente, avrei bisogno di un'app di servizio per tessere sul server Web in grado di servire MBTiles (invece di caricare singolarmente centinaia di migliaia di bitmap di piastrelle). Quindi sarebbe necessario un qualche tipo di istanza EC2, ma che tipo?

Grazie per eventuali suggerimenti.

AGGIORNAMENTO: solo per approfondire la mia domanda. Quello che sto sostanzialmente cercando è un feedback su quanto sia fattibile AWS per l'hosting delle tue mappe web come individuo (il che significa che non dovrebbe costare troppo, diciamo fino a $ 30 / al mese). Ho ospitato le mie mappe web per un po 'di tempo attraverso provider di hosting "ordinari", ma questi hanno i loro limiti (la larghezza di banda di upload è una, la velocità è un'altra). Sto anche cercando eventuali buone alternative a AWS e qualsiasi cosa a cui prestare attenzione quando si utilizzano i servizi cloud per le mappe web.


3
Un progetto "Costruire un server nazionale di tessere" Mapserver + MapProxy + AWS (EC2) Postgres su ubuntu speakerdeck.com/u/walkermatt/p/building-a-national-tile-server
Mapperz

1
@Mapperz grazie per il link. La loro configurazione è un po 'più ambiziosa, con la pipeline di rendering delle piastrelle interamente eseguita su AWS, quindi questo (immagino) potrebbe essere piuttosto costoso. Ma una rivelazione è MapProxy, poiché supporta MBTiles.
Igor Brejc,

1
utilizzando il server di piccole dimensioni e fornendo circa 500 MB di dati gis mi è stato comunicato da Amazon che mi qualifico per il livello gratuito. sto solo dicendo
Brad Nesom,

Risposte:


6

Quando si sceglie un'architettura per un servizio che si basa così tanto su un'architettura "classica" come le mappe Web, non sottovalutare mai l'efficacia di soluzioni di hosting più tradizionali come RackSpace Cloud Servers o Linode .

Avrai molte meno scelte da fare (come usare S3 o no, bilanciamento del carico o no, backup, ecc. O no e quanto costerà?) Il cui risultato è difficile da prevedere E, cosa ancora più importante, sarai in grado di usa strumenti che conosci già.

Avendo vissuto la stessa cosa qualche tempo fa, posso dirti che i fattori critici nella mia decisione di ospitare un servizio di mappe web su Rackspace piuttosto che AWS erano:

  1. I server cloud sono (più) resistenti rispetto alle istanze EC2. Istanze EC2 sono in realtà tenuti a fallire e che saranno fallire
  2. Anche i volumi EBS falliscono (ci sono molte storie tristi nelle notizie) e generalmente hanno un I / O scadente
  3. a meno che non si scelga la contesa I / O di istanze più grandi potrebbe essere un problema (specialmente se si prevede di eseguire il seeding dei riquadri su EC2, anziché copiarli). Potrebbe anche essere un problema con i database MTBtiles
  4. Ogni volta che riavvii il tuo server, l'ip pubblico cambierà: ciò non accade su Linode o Rackspace
  5. Dovrai elaborare tu stesso una strategia di backup e ripristino, mentre Linode e Rackspace forniscono snapshot e ripristini automatici giornalieri e settimanali
  6. Se l'host che esegue il tuo VPS fallisce, Rackspace si occuperà di riposizionare la tua istanza e riavviarla su un altro server e lo faranno in 4 ore (è nel loro SLA). Mi è successo mentre ero in vacanza: mi sono sentito molto professionale. Linode dovrebbe fare lo stesso
  7. Linode ha un ottimo SLA di disponibilità: 99,9% e pretende grandi prestazioni perché non esegue l'overprovision
  8. Rackspace ha recentemente messo a punto una strategia di volume come EBS, quindi lo spazio su disco non dovrebbe più essere un problema. In precedenza, se avevi bisogno di molto spazio su disco, dovevi avere un'istanza di grandi dimensioni, mentre su EC2 puoi eseguire il provisioning di archiviazione, CPU e memoria con un controllo più preciso

Con questo non sto dicendo che Amazon AWS sia inferiore agli altri, sto solo dicendo che a volte le soluzioni di hosting tradizionali possono scalare così come quelle basate su cloud. Un esempio notevole è la rete StackExchange stessa.


Quindi, nel tuo caso, vorrei avviare una grande istanza su Rackspace e quindi caricare tutti i dati in un'istanza Postgis locale. Quindi, dopo aver configurato il motore di rendering, eseguivo il seeding della cache. Un'istanza di grandi dimensioni completerà il processo di seeding abbastanza velocemente da non essere troppo costoso da eseguire. Puoi archiviare i riquadri in fs, MTBtiles, anche su S3 (tra l'altro, puoi servire i dati S3 su un CDN con CloudFront ).

Dopo aver completato il seeding, riavviavo il server e lo ridimensionavo in un'istanza piccola (forse anche 512 MB) poiché a quel punto avrebbe dovuto solo servire dati statici.


Questa è una risposta un po 'lunga, quindi mi fermo qui. Se vuoi che elabori alcuni aspetti, lascia un commento.

Disclaimer: non sono affiliato con Rackspace, Linode o qualsiasi altro provider che ho citato.


1
Grazie per la tua risposta approfondita. Hai indicato alcuni problemi che non ho preso in considerazione (come la modifica dell'IP di EC2). Molte opzioni tra cui scegliere. In questo momento non sto cercando molta potenza di CPU-cloud, poiché ospiterò solo riquadri pre-renderizzati (quindi non PostGIS ecc.). Ma la capacità di archiviazione, la larghezza di banda (e la velocità) sono importanti.
Igor Brejc,

Ottimo consiglio! Quello che ho realizzato negli anni è che dovresti andare con AWS, se hai intenzione di utilizzare anche i loro altri servizi. Se stai cercando VM nel cloud, è meglio rivolgersi ad altri provider come Digital Ocean, Linode ecc. Questo sarà un lavoro più economico essendo più robusto.
Devdatta Tengshe,

5

Sto usando WebFaction per l'hosting dei dati GIS in un database Postgresql / PostGIS con MapServer e penso che il servizio non abbia rivali al costo di <$10al mese. Se si desidera utilizzare PostGIS 2.0, è necessario installarlo da soli, il che è un po 'complicato, ma forniscono PostGIS 1.5 per impostazione predefinita (è necessario aprire un ticket di supporto). Questo è un servizio di hosting condiviso su CentOS in cui hai la massima flessibilità per installare qualsiasi cosa nella tua porzione di server.

Non sto usando Webfaction per servire i riquadri, ma forniscono 100 GB di spazio; Non sono sicuro che la RAM sarebbe troppo costosa in quanto l'impostazione predefinita è 256 MB (e ogni blocco 256 costa un ulteriore $ 7 al mese)


Per inciso, va bene includere un link di riferimento quando si risponde a domande come queste? Non influenza consapevolmente il mio punto di vista, ma potrebbe in teoria!
djq,

1
grazie per il suggerimento. I prezzi di WebFaction sembrano invitanti. Peccato che non offrano maggiori informazioni sulle app che offrono. Quanto è stato difficile installare PostGIS e MapServer su di esso, BTW?
Igor Brejc,

Se PostGIS 1.5 è tutto ciò che serve è solo un ticket di supporto. PostGIS 2.0 non è troppo complicato ma richiede solo il download e l'installazione di alcuni pacchetti come GDAL, ecc. Il personale di supporto è molto disponibile e pronto a rispondere. (mi rendo conto di aver cancellato parte della mia risposta durante la scrittura; la aggiornerò.).
djq,

1
Di recente ho installato MapServer e TinyOWS sul mio account di web hosting WebFaction. I miei dati spaziali sono archiviati in un database PostGIS 1.5 sullo stesso account di web hosting. Ho descritto i passaggi che ho fatto per rendere attivo e funzionante un servizio WMS MapServer qui: link
jirikadlec2

5

Un'altra possibilità che utilizza AWS:

Potresti voler esaminare il metodo AWS Lambda Tiler ideato da Seth Fitzsimmons. Lo ha usato per il progetto Open Aerial Map e l'ho usato per un progetto di cliente privato mentre lavoravo presso Stamen Design.

C'è un post completo sul blog che ho scritto che documenta come impostare AWS Lambda Tiler su Medium.com . Si noti che il post del blog copre solo i dati raster della piastrellatura, ma abbiamo anche utilizzato questo processo in Stamen per guidare le nostre tessere globali di mappe Terrain Classic che sono generate da una combinazione di dati OSM e Natural Earth tramite PostgreSQL, PostGIS, Mapnik e CartoCSS.

Uno dei vantaggi di questo approccio è che non si dispone di un server a riquadri da gestire e si paga solo per utilizzo di ciascuna chiamata di funzione AWS Lambda, che sono abbastanza certo che sia conveniente per i progetti più piccoli che non lo fanno ricevere un'enorme quantità di traffico web. Uno degli aspetti negativi di questo approccio è che i riquadri vengono seminati dall'utente che esegue la panoramica e lo zoom della mappa, quindi il primo rendering può essere lento, anche se è possibile pre-seminare i riquadri in anticipo. Le tessere vengono scritte e memorizzate su S3 dopo il primo rendering, quindi il successivo caricamento delle tessere è molto più veloce.


Bella risposta. Esiste un modo automatizzato per sviluppare riquadri Vector con servizi AWS?
Devils Dream,

Non sono sicuro di cosa intendi per "automatizzato", ma il tutorial di Brain Bancroft sull'impostazione di un server MVT utilizzando Tegola su AWS come uno di questi metodi: bancroft.io/blog/mvt-server-2
clhenrick,

3

Per ottenere prezzi dettagliati per i servizi AWS è possibile utilizzare il calcolatore online disponibile qui: http://calculator.s3.amazonaws.com/calc5.html

Per una piccola istanza EC2 che esegue Linux, se sei disposto a impegnarti per un anno, puoi acquistare un'istanza riservata che costerà circa $ 25 al mese. Ciò è in confronto a circa 44 / mese per i prezzi on demand o prezzi senza contratto.

Penso che la risposta breve alla tua domanda sia che se stai cercando un fornitore di infrastrutture che si occupi delle tue esigenze personali di applicazione di mappatura web, AWS potrebbe essere eccessivo. Se stai cercando un fornitore IT per le app di produzione, soprattutto se richiedono HA e scalabilità, allora AWS è la tua risposta. Ciò diventa ancora più vero se stai creando app che sfruttano i numerosi servizi di colla che AWS fornisce, come SQS, SNS, SWF ecc.

Di che tipo di EC2 hai bisogno? Questa è una funzione richiesta dalle tue app. L'intero punto dell'IT basato su cloud è che puoi provare prima di acquistare. Metti alla prova la tua app senza impegno e solo quando sai, prendi una decisione informata sull'impegnarsi in un tipo EC2 per un periodo di tempo (acquisto RI).


3

Non sono un esperto con molta o davvero alcuna conoscenza al di fuori di quanto stia gestendo un server web su Amazon EC2 da qualche tempo, quindi questa non è una risposta.

Non sono sicuro che tu stia utilizzando questi strumenti al loro meglio con il pre-rendering e il caricamento.

  • La maggior parte delle mie spese di aws è sul mio trasferimento di dati (di cosa stai parlando di caricamento).
  • Cos'altro deve fare il server (a meno che non si stiano utilizzando le licenze per il rendering di riquadri e non si disponga di una licenza per AWS).

Se ciò non scoraggia o causa un ripensamento, probabilmente prima scegli il tuo server di mappe preferito, quindi scegli un sistema operativo supportato per quel server di mappe, quindi vai su AWS EC2 e trova l'istanza che soddisfa meglio le tue esigenze (dimensioni, memoria, spazio, regione).
Potrebbe esserci o meno un'AMI contenente tutto lo stack necessario, quindi configuralo e installa lo stack.
Esiste una forte possibilità che tu realizzi tutto ciò per "libero" o economico.


1
grazie per la tua risposta. Sono d'accordo che il pre-rendering non sia l'ideale, ma il rendering su richiesta richiede molte più risorse per le app cloud, che sono anche piuttosto costose. In uno scenario di pre-rendering, il server deve solo recuperare i riquadri da un archivio MBTiles (sqlite) e servirli, quindi è necessario molto meno CPU, spazio su disco e nessun RDBMS reale. E se limiti il ​​livello di zoom più alto a qualcosa di gestibile, non ci sono molte tessere da caricare. A proposito, ho aggiornato un po 'la mia domanda.
Igor Brejc,

0

È vero che puoi scegliere AWS se stai utilizzando i loro diversi servizi poiché AWS è piuttosto costoso. Se vuoi andare a prezzi più convenienti con gli stessi vantaggi, consiglierei https://fxdata.cloud o https://digitalocean.com poiché entrambi hanno servizi apprezzabili e prezzi più economici. Praticamente otterrai tutte le opzioni di OS e DBMS con alta affidabilità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.