¿Qué tipo de configuración de AWS se necesita para ejecutar una aplicación de mapa web de ancho de banda bajo a medio?

17

¿Alguien tiene experiencia con la ejecución de mapas web (servidor de mosaico + secuencias de comandos JS del cliente) en Amazon Web Services (S3, EC2, etc.)? ¿Qué tipo de configuración de AWS se necesita para ejecutar una aplicación de mapa web de ancho de banda bajo a medio, que cubre un área pequeña (-ish) (ciudad a tamaño de país pequeño)?

Todos los mosaicos se renderizarán previamente y se cargarán en S3. Idealmente, necesitaría una aplicación de servicio de mosaico en el servidor web que pudiera servir MBTiles (en lugar de cargar cientos de miles de mapas de bits de mosaico individualmente). Entonces se necesitaría algún tipo de instancia EC2, pero ¿de qué tipo?

Gracias por cualquier pista.

ACTUALIZACIÓN: solo para elaborar mi pregunta. Lo que básicamente estoy buscando es algún comentario sobre cuán viable es AWS para alojar sus propios mapas web como individuo (lo que significa que no debería costar demasiado, digamos hasta $ 30 / mes). He estado alojando mis mapas web durante algún tiempo a través de proveedores de alojamiento "normales", pero estos tienen sus propias limitaciones (el ancho de banda de carga es uno, la velocidad es otra). También estoy buscando buenas alternativas a AWS y cualquier cosa a tener en cuenta al usar servicios en la nube para mapas web.

Igor Brejc
fuente
3
Un proyecto "Construir un servidor nacional de mosaicos" Mapserver + MapProxy + AWS (EC2) Postgres en ubuntu speakerdeck.com/u/walkermatt/p/building-a-national-tile-server
Mapperz
1
@Mapperz gracias por el enlace. Su configuración es un poco más ambiciosa, con una tubería de renderización de mosaicos que se ejecuta por completo en el AWS, por lo que esto (imagino) podría ser bastante costoso. Pero una revelación es MapProxy, ya que admite MBTiles.
Igor Brejc
1
utilizando el servidor de pequeño tamaño y sirviendo aproximadamente 500 MB de datos gis, Amazon me ha notificado que califico para el nivel gratuito. solo digo
Brad Nesom

Respuestas:

6

Al elegir una arquitectura para un servicio que se basa tanto en una arquitectura 'clásica' como los mapas web, nunca subestimes la efectividad de las soluciones de alojamiento más tradicionales como RackSpace Cloud Servers o Linode .

Tendrá muchas menos opciones para tomar (como usar S3 o no, equilibradores de carga o no, copias de seguridad, etc. o no y ¿cuánto va a costar eso?) Cuyo resultado es difícil de predecir Y, lo que es más importante, podrá use herramientas con las que ya esté familiarizado.

Después de haber pasado por lo mismo hace algún tiempo, puedo decirles que los factores críticos en mi decisión de alojar un servicio de mapas web en Rackspace en lugar de AWS fueron:

  1. Cloud Server son (más) resistentes que las instancias EC2. Instancias de EC2 son en realidad espera a fallar y que van a fallar
  2. Los volúmenes de EBS también fallan (hay muchas historias tristes en las noticias) y generalmente tienen E / S deficientes
  3. a menos que elija las instancias más grandes, la contención de E / S podría ser un problema (especialmente si planea sembrar los mosaicos en EC2, en lugar de copiarlos). También podría ser un problema con las bases de datos MTBtiles
  4. Cada vez que reinicie su servidor, la IP pública cambiará: esto no sucede en Linode o Rackspace
  5. Tendrá que idear una estrategia de copia de seguridad y restauración usted mismo, mientras que Linode y Rackspace proporcionan instantáneas y restauraciones automáticas diarias y semanales.
  6. Si el host que ejecuta su VPS falla, Rackspace se encargará de reubicar su instancia y reiniciarla en un servidor diferente y lo hará en 4h (está en su SLA). Me pasó mientras estaba de vacaciones: me sentí muy profesional. Linode debería hacer lo mismo
  7. Linode tiene un gran SLA de disponibilidad: 99.9% y afirman un gran rendimiento porque no sobreaprovisionan
  8. Rackspace ha presentado recientemente una estrategia de volumen como EBS, por lo que el espacio en disco ya no debería ser un problema. Anteriormente, si necesitabas mucho espacio en disco, TENÍAS que obtener una gran instancia mientras estabas en EC2, puedes aprovisionar almacenamiento, CPU y memoria con un control más preciso

Con esto no digo que Amazon AWS sea inferior a otros, solo digo que a veces las soluciones de alojamiento tradicionales pueden escalar tan bien como las basadas en la nube. Un ejemplo notable es la red StackExchange en sí.


Entonces, en su caso, iniciaría una instancia grande en Rackspace y luego cargaría todos los datos en una instancia local de Postgis. Luego, después de configurar el motor de representación, sembraría el caché. Una instancia grande completará el proceso de siembra lo suficientemente rápido como para que no sea demasiado costoso ejecutarlo. Puede almacenar mosaicos en fs, MTBtiles, incluso en S3 (por cierto, puede servir datos S3 en un CDN con CloudFront ).

Una vez completada la inicialización, reiniciaría el servidor y cambiaría su tamaño a una instancia pequeña (quizás incluso de 512 MB), ya que en ese momento solo tendría que servir datos estáticos.


Esto está obteniendo una respuesta un poco larga, así que voy a parar aquí. Si quieres que explique ciertos aspectos, solo deja un comentario.

Descargo de responsabilidad: no estoy afiliado a Rackspace, Linode ni a ningún otro proveedor que haya citado.

unicoletti
fuente
1
Gracias por su respuesta en profundidad. Usted señaló algunos problemas que no he considerado (como el cambio de IP de EC2). Muchas opciones para elegir. En este momento no estoy buscando mucha potencia de CPU en la nube, ya que solo alojaré mosaicos pre-renderizados (así que no PostGIS, etc.). Pero la capacidad de almacenamiento, el ancho de banda (y la velocidad) es importante.
Igor Brejc
¡Buen consejo! De lo que me he dado cuenta a lo largo de los años es que debe utilizar AWS, si también va a utilizar sus otros servicios. Si está buscando máquinas virtuales en la nube, lo mejor es buscar otros proveedores como Digital Ocean, Linode, etc. Esto será más barato y más robusto.
Devdatta Tengshe
5

He estado usando WebFaction para alojar datos SIG en una base de datos Postgresql / PostGIS con MapServer y creo que el servicio no tiene rival por el costo <$10por mes. Si desea utilizar PostGIS 2.0, debe instalarlo usted mismo, lo cual es un poco complicado, pero proporcionan PostGIS 1.5 de forma predeterminada (debe abrir un ticket de soporte). Este es un servicio de alojamiento compartido en CentOS donde tiene total flexibilidad para instalar cualquier cosa en su propia porción del servidor.

No he estado usando Webfaction para servir mosaicos, pero sí proporcionan 100 GB de espacio; No estoy seguro de si la RAM sería demasiado costosa, ya que el valor predeterminado es 256 MB (y cada bloque 256 cuesta $ 7 adicionales por mes)

djq
fuente
Por cierto, ¿está bien incluir un enlace de referencia al responder preguntas como estas? No influye conscientemente en mi punto de vista, ¡pero podría en teoría!
djq
1
gracias por la pista. Los precios de WebFaction se ven atractivos. Lástima que no ofrezcan más información sobre las aplicaciones que ofrecen. ¿Qué tan difícil fue instalar PostGIS y MapServer en él, por cierto?
Igor Brejc
Si PostGIS 1.5 es todo lo que se requiere, es solo un ticket de soporte. PostGIS 2.0 no es demasiado complicado, pero solo requiere descargar e instalar algunos paquetes como GDAL, etc. Sin embargo, el personal de soporte es muy útil y rápido para responder. (date cuenta de que borré parte de mi respuesta al escribir; la actualizaré).
djq
1
Recientemente instalé MapServer y TinyOWS en mi cuenta de alojamiento web de WebFaction. Mis datos espaciales se almacenan en una base de datos PostGIS 1.5 en la misma cuenta de alojamiento web. Describí los pasos que hice para hacer que un servicio MapServer WMS esté en funcionamiento aquí: enlace
jirikadlec2
5

Otra posibilidad que usa AWS:

Es posible que desee considerar el uso del método AWS Lambda Tiler que Seth Fitzsimmons ideó. Lo ha estado usando para el proyecto Open Aerial Map y lo usé para un proyecto de cliente privado mientras trabajaba en Stamen Design.

Hay una publicación de blog completa que escribí que documenta cómo configurar AWS Lambda Tiler en Medium.com . Tenga en cuenta que la publicación del blog solo cubre datos de trama de mosaico, pero también utilizamos este proceso en Stamen para conducir nuestros mosaicos de mapas globales de Terrain Classic que se generan a partir de una combinación de datos de OSM y Tierra natural a través de PostgreSQL, PostGIS, Mapnik y CartoCSS.

Uno de los beneficios de este enfoque es que no tiene un servidor de mosaico para mantener y solo paga por uso de cada llamada de función de AWS Lambda, lo que estoy bastante seguro es que es barato para proyectos más pequeños que no recibir una gran cantidad de tráfico web Una de las desventajas de este enfoque es que los mosaicos son sembrados por el usuario desplazando y haciendo zoom en el mapa, por lo que la primera representación puede ser lenta, aunque puede pre-sembrar los mosaicos con anticipación. Los mosaicos se escriben y almacenan en S3 después de que se procesan por primera vez, por lo que la carga posterior de mosaicos es mucho más rápida.

Clhenrick
fuente
Buena respuesta. ¿Hay alguna forma automatizada de desarrollar mosaicos vectoriales con algún servicio de AWS?
Devils Dream
No estoy seguro de lo que quiere decir con "automatizado", pero el tutorial de Brain Bancroft sobre la configuración de un servidor MVT utilizando Tegola en AWS como uno de esos métodos: bancroft.io/blog/mvt-server-2
clhenrick
3

Para obtener precios detallados de los servicios de AWS, puede usar la calculadora en línea que se encuentra aquí: http://calculator.s3.amazonaws.com/calc5.html

Para una pequeña instancia EC2 que ejecuta Linux, si está dispuesto a comprometerse por un año, puede comprar una instancia reservada que costará alrededor de $ 25 / mes. Eso es en comparación con alrededor de 44 / mes para precios a pedido o precios sin contrato.

Creo que la respuesta breve a su pregunta es que si está buscando un proveedor de infraestructura para encargarse de sus necesidades personales de aplicaciones de mapeo web, AWS podría ser excesivo. Si está buscando un proveedor de TI para aplicaciones de producción, especialmente si requieren HA y escalabilidad, entonces AWS es su respuesta. Esto se vuelve aún más cierto si está creando aplicaciones que aprovechan los muchos servicios de pegamento que proporciona AWS, como SQS, SNS, SWF, etc.

¿Qué tipo de EC2 necesitas? Esa es una función del requisito específico de sus aplicaciones. El punto principal de la TI basada en la nube es que puedes probar antes de comprar. Pruebe su aplicación sin compromiso, y solo cuando sepa, tome una decisión informada acerca de comprometerse con un tipo EC2 durante un período de tiempo (la compra de RI).

Mark Korver
fuente
3

No soy un experto con mucho o realmente ningún conocimiento al respecto, aparte de que he estado ejecutando un servidor web en Amazon EC2 durante algún tiempo, así que esta no es una respuesta.

No estoy seguro de que esté utilizando estas herramientas para su mejor uso mediante el procesamiento previo y la carga.

  • La mayor parte de mis gastos de AWS está en mi transferencia de datos (de lo que estás hablando de cargar).
  • ¿Qué más tiene que hacer su servidor (a menos que esté utilizando licencias para renderizar mosaicos y no tenga licencia para AWS)?

Si eso no disuade o causa un replanteamiento, probablemente primero elija su servidor de mapas favorito, luego elija un sistema operativo compatible para ese servidor de mapas, luego vaya a AWS EC2 y encuentre la instancia que mejor se adapte a sus necesidades (tamaño, memoria, espacio, región).
Puede o no haber una AMI que contenga toda la pila que necesita, por lo que luego configúrela y luego instale su pila.
Existe una gran posibilidad de que logre todo eso de forma "gratuita" o barata.

Brad Nesom
fuente
1
gracias por tu respuesta. Estoy de acuerdo en que la representación previa no es ideal, pero la representación a pedido requiere muchos más recursos de aplicaciones en la nube, que también son bastante caros. En un escenario de representación previa, el servidor solo tiene que buscar mosaicos de un almacenamiento de MBTiles (sqlite) y servirlos, por lo que necesita mucha menos CPU, almacenamiento en disco y ningún RDBMS real. Y si limita el nivel de zoom más alto a algo manejable, no hay tantos mosaicos para cargar. Por cierto, he actualizado mi pregunta un poco.
Igor Brejc
0

Es cierto que puede optar por AWS si está utilizando los diferentes servicios de ellos, ya que AWS es bastante costoso. Si desea obtener precios más baratos con los mismos beneficios, recomendaría https://fxdata.cloud o https://digitalocean.com, ya que ambos tienen servicios apreciables y precios más baratos. Básicamente obtendrá todas las opciones de SO y DBMS con alta confiabilidad.

usuario79544
fuente