Que tipo de configuração da AWS é necessária para executar um aplicativo de mapa da Web de baixa a média largura de banda?

17

Alguém tem experiência com a execução de mapas da Web (servidor de tile + script JS do cliente) no Amazon Web Services (S3, EC2 etc ...)? Que tipo de configuração da AWS é necessária para executar um aplicativo de mapa da Web de largura de banda de baixa a média, cobrindo uma área pequena (-ish) (tamanho da cidade para o país pequeno)?

Todos os blocos seriam pré-renderizados e enviados para o S3. Idealmente, eu precisaria de um aplicativo de veiculação de bloco no servidor Web que pudesse servir MBTiles (em vez de carregar centenas de milhares de bitmaps de bloco individualmente). Então, algum tipo de instância do EC2 seria necessário, mas que tipo?

Obrigado por todas as dicas.

ATUALIZAÇÃO: apenas para elaborar minha pergunta. O que estou procurando basicamente é um feedback sobre a viabilidade da AWS para hospedar seus próprios mapas da web como indivíduo (o que significa que não deve custar muito, digamos, US $ 30 / mês). Hospedo meus mapas da web há algum tempo por meio de provedores de hospedagem "comuns", mas eles têm suas próprias limitações (a largura de banda de upload é uma, a velocidade é outra). Também estou procurando boas alternativas para a AWS e qualquer coisa a observar ao usar serviços em nuvem para mapas da web.

Igor Brejc
fonte
3
Um Projeto "Construindo um servidor Nacional do Azulejo" Mapserver + MapProxy + AWS (EC2) Postgres no ubuntu speakerdeck.com/u/walkermatt/p/building-a-national-tile-server
Mapperz
1
@Mapperz obrigado pelo link. Sua configuração é um pouco mais ambiciosa, com o pipeline de renderização de blocos sendo executado inteiramente na AWS, então isso (imagino) pode ser bastante caro. Mas uma revelação é o MapProxy, pois suporta MBTiles.
Igor Brejc
1
usando o servidor de tamanho pequeno e servindo cerca de 500 MB de dados GIS, tenho sido notificado pela Amazon de que me qualifico para o nível gratuito. apenas dizendo
Brad Nesom

Respostas:

6

Ao escolher uma arquitetura para um serviço que depende tanto de uma arquitetura 'clássica' como os mapas da Web, nunca subestime a eficácia de soluções de hospedagem mais tradicionais, como o RackSpace Cloud Servers ou o Linode .

Você terá muito menos opções a fazer (como usar S3 ou não, balanceadores de carga ou não, backups etc. ou não e quanto isso vai custar?), Cujo resultado é difícil de prever E, mais importante, você será capaz de use ferramentas que você já conhece.

Tendo passado pelo mesmo processo há algum tempo, posso dizer que os fatores críticos na minha decisão de hospedar um serviço de mapas da web no Rackspace, em vez da AWS, foram:

  1. O Cloud Server é (mais) resiliente que as instâncias do EC2. Instâncias de EC2 são realmente esperado a falhar e eles irão falhar
  2. Os volumes do EBS também falham (há muitas histórias tristes nas notícias) e geralmente têm E / S ruins
  3. a menos que você escolha as instâncias maiores, a contenção de E / S pode ser um problema (especialmente se você planeja propagar os blocos no EC2, em vez de copiá-los). Também pode ser um problema com os bancos de dados MTBtiles
  4. Sempre que você reiniciar o servidor, o IP público será alterado: isso não acontece no Linode ou no Rackspace.
  5. Você precisará criar uma estratégia de backup e restauração, enquanto o Linode e o Rackspace fornecem apontar e clicar instantâneos e restaurações automáticas diárias e semanais
  6. Se o host que estiver executando o seu VPS falhar, o Rackspace cuidará de realocar sua instância e reiniciá-la em um servidor diferente e eles farão isso em 4h (está no SLA). Aconteceu comigo enquanto eu estava de férias: parecia muito profissional. Linode deve fazer o mesmo
  7. O Linode possui um excelente SLA de disponibilidade: 99,9% e eles reivindicam um ótimo desempenho porque não aprovisionam demais
  8. A Rackspace recentemente criou uma estratégia de volume como o EBS, portanto o espaço em disco não deve ser mais um problema. Anteriormente, se você precisava de muito espaço em disco, tinha para obter uma instância grande enquanto estiver no EC2, pode provisionar armazenamento, CPU e memória com controle mais preciso

Com isso, não estou dizendo que o Amazon AWS seja inferior aos outros, apenas estou dizendo que, às vezes, as soluções de hospedagem tradicionais podem ser escaláveis ​​e também as baseadas na nuvem. Um exemplo notável é a própria rede StackExchange .


Portanto, no seu caso, eu iniciaria uma instância grande no Rackspace e carregaria todos os dados em uma instância local do Postgis. Depois de configurar o mecanismo de renderização, eu propriamente o cache. Uma instância grande concluirá o processo de propagação rápido o suficiente para que não fique muito caro para executar. Você pode armazenar blocos no fs, MTBtiles, mesmo no S3 (entre, você pode servir dados do S3 em uma CDN com o CloudFront ).

Depois que a propagação foi concluída, eu reinicializava o servidor e o redimensionava em uma instância pequena (talvez até 512 MB), pois, nesse ponto, seria necessário apenas servir dados estáticos.


Está recebendo uma resposta longa, então vou parar por aqui. Se você quiser que eu elabore alguns aspectos, basta comentar.

Isenção de responsabilidade: Eu não sou afiliado à Rackspace, Linode ou a qualquer outro provedor que citei.

unicoletti
fonte
1
Obrigado pela sua resposta detalhada. Você apontou para alguns problemas que não considerei (como a alteração de IP do EC2). Muitas opções para escolher. No momento, não estou procurando muita energia da CPU na nuvem, pois hospedarei apenas blocos pré-renderizados (portanto, não há PostGIS etc.). Mas a capacidade de armazenamento, a largura de banda (e a velocidade) são importantes.
Igor Brejc
Ótimo conselho! O que eu percebi ao longo dos anos é que você deve ir com a AWS, se também usará os outros serviços. Se você está procurando VMs na nuvem, é melhor procurar outros fornecedores, como Digital Ocean, Linode etc. Isso será mais barato e mais robusto.
Devdatta Tengshe
5

Eu tenho usado o WebFaction para hospedar dados GIS em um banco de dados Postgresql / PostGIS com o MapServer e acho que o serviço é incomparável pelo custo <$10mensal. Se você deseja usar o PostGIS 2.0, é necessário instalá-lo, o que é um pouco complicado, mas eles fornecem o PostGIS 1.5 por padrão (você precisa abrir um tíquete de suporte). Este é um serviço de hospedagem compartilhada no CentOS, onde você tem total flexibilidade para instalar qualquer coisa em sua própria parte do servidor.

Eu não uso o Webfaction para servir blocos, mas eles fornecem 100 GB de espaço; Não tenho certeza se a RAM seria muito cara, pois o padrão é 256 MB (e cada bloco 256 custa US $ 7 adicionais por mês)

djq
fonte
Aliás, é aceitável incluir um link de referência ao responder a perguntas como estas? Não influencia conscientemente minha opinião, mas poderia, em teoria!
DJQ
1
obrigado pela dica. Os preços do WebFaction parecem convidativos. Pena que eles não oferecem mais informações sobre os aplicativos que oferecem. Quão difícil foi instalar o PostGIS e o MapServer nele, BTW?
Igor Brejc
Se o PostGIS 1.5 é tudo o que é necessário, é apenas um tíquete de suporte. O PostGIS 2.0 não é muito complicado, mas requer o download e a instalação de alguns pacotes como o GDAL, etc. A equipe de suporte é muito útil e rápida de responder. (perceba que apaguei parte da minha resposta ao escrever; a atualizarei.).
DJQ
1
Instalei recentemente o MapServer e o TinyOWS na minha conta de hospedagem na Web WebFaction. Meus dados espaciais são armazenados em um banco de dados PostGIS 1.5 na mesma conta de hospedagem na web. Descrevi as etapas que fiz para tornar um serviço MapServer WMS em funcionamento aqui: link
jirikadlec2
5

Outra possibilidade que usa a AWS:

Você pode usar o método AWS Lambda Tiler que Seth Fitzsimmons criou. Ele o usa para o projeto Open Aerial Map e eu o uso para um projeto de cliente privado enquanto trabalhava no Stamen Design.

Há uma publicação completa no blog que escrevi que documenta como configurar o AWS Lambda Tiler no Medium.com . Observe que a postagem do blog cobre apenas dados rasterizados lado a lado, mas também usamos esse processo no Stamen para conduzir nossos blocos globais de mapas Terrain Classic, que são gerados a partir de uma combinação de dados OSM e Natural Earth via PostgreSQL, PostGIS, Mapnik e CartoCSS.

Um dos benefícios dessa abordagem é que você não tem um servidor de bloco para manter e paga apenas pelo uso de cada chamada de função do AWS Lambda, o que tenho quase certeza de que é barato para projetos menores que não receber uma enorme quantidade de tráfego na web. Uma das desvantagens dessa abordagem é que as peças são propagadas pelo usuário fazendo o zoom e o zoom no mapa, de modo que a primeira renderização pode ser lenta, embora você possa pré-propagar as peças com antecedência. Os blocos são gravados e armazenados no S3 após serem renderizados pela primeira vez, portanto, o carregamento subsequente dos blocos é muito mais rápido.

Clhenrick
fonte
Boa resposta. Existe alguma maneira automatizada de desenvolver blocos Vector com algum serviço da AWS?
Devils Sonho
Não tenho certeza que você entende por "automatizado", mas tutorial do Cérebro Bancroft sobre como configurar um servidor MVT usando Tegola no AWS como um tal método: bancroft.io/blog/mvt-server-2
clhenrick
3

Para obter preços detalhados dos serviços da AWS, você pode usar a calculadora on-line localizada aqui: http://calculator.s3.amazonaws.com/calc5.html

Para uma pequena instância do EC2 executando Linux, se você deseja se comprometer com um ano, pode comprar uma Instância Reservada que custará cerca de US $ 25 / mês. Isso é comparado a cerca de 44 / mês para preços sob demanda ou preços sem contrato.

Acho que a resposta curta para sua pergunta é que, se você estiver procurando por um provedor de infraestrutura para cuidar de suas necessidades pessoais de aplicativos de mapeamento da web, a AWS pode ser um exagero. Se você procura um provedor de TI para aplicativos de produção, especialmente se eles exigem alta disponibilidade e escalabilidade, a AWS é sua resposta. Isso se torna ainda mais verdadeiro se você estiver criando aplicativos que aproveitam os vários serviços de cola que a AWS fornece, como SQS, SNS, SWF etc.

Quanto ao tipo de EC2 que você precisa? Essa é uma função dos requisitos específicos de seus aplicativos. O ponto principal da TI baseada na nuvem é que você pode tentar antes de comprar. Teste seu aplicativo sem compromisso, e somente quando você souber, tome uma decisão informada sobre como se comprometer com um tipo de EC2 por um período de tempo (a compra do RI).

Mark Korver
fonte
3

Eu não sou um especialista com muito ou realmente nenhum conhecimento sobre ele, além de estar executando um servidor Web no Amazon EC2 há algum tempo, portanto, essa não é uma resposta.

Não tenho certeza se você está utilizando essas ferramentas da melhor forma possível, pré-renderizando e fazendo upload.

  • A maior parte das minhas despesas com aws está na minha transferência de dados (o que você está falando sobre carregar).
  • O que mais seu servidor precisa fazer (a menos que você esteja utilizando licenças para renderizar blocos e não tenha licença para a AWS).

Se isso não dissuadir ou causar repensar, provavelmente primeiro escolha seu servidor de mapa favorito, escolha um SO suportado para esse servidor de mapa e vá para o AWS EC2 e encontre a Instância que melhor atenda às suas necessidades (tamanho, memória, espaço, região).
Pode ou não haver uma AMI contendo toda a pilha necessária, então, configure-a e instale-a.
Existe uma forte possibilidade de você realizar tudo isso de forma "gratuita" ou barata.

Brad Nesom
fonte
1
obrigado pela sua resposta. Concordo que a pré-renderização não é ideal, mas a renderização sob demanda requer muito mais recursos de aplicativos em nuvem, que também são muito caros. Em um cenário de pré-renderização, o servidor só precisa buscar blocos de um armazenamento MBTiles (sqlite) e atendê-los, portanto, você precisa de muito menos CPU, armazenamento em disco e nenhum RDBMS real. E se você limitar o nível mais alto de zoom a algo gerenciável, não haverá muitos blocos para carregar. Entre, atualizei minha pergunta um pouco.
Igor Brejc
0

É verdade que você pode optar pela AWS se estiver usando os diferentes serviços deles, pois a AWS é bastante cara. Se você deseja obter preços mais baratos com os mesmos benefícios, eu recomendaria para https://fxdata.cloud ou https://digitalocean.com, pois ambos estão tendo serviços apreciáveis ​​e preços mais baratos. Você basicamente obterá todas as opções de sistema operacional e DBMS com alta confiabilidade.

user79544
fonte