Publicado por: sadeckgeo | junho 28, 2011

Cloud computing and GIS

Olá caros colegas, 

Estamos hoje dando continuidade à sequência de postagens sobre as novas geotecnologias, mas hoje não serei eu a abrir essa discussão. Durante as pesquisas que vinha fazendo sobre cloud computing e GIS tive algumas ajudas e com isso percebi que era melhor criamos o nosso primeiro guest-post, pois achamos importante que seja passado conteúdo de qualidade, sendo assim, nada melhor do que alguém da área para falar desse assunto que é tão cogitado no meio das geotecnologias. 

Hoje deixo com vocês o amigo Cássio Rogério Eskelsen (@sricanesh), que é Analista de Sistemas há 13 anos e tem se dedicado ao GIS mais recentemente. O Cássio é Sócio da 3Geo (http://www.3geo.com.br), empresa  que presta serviços nas áreas de Defesa Civil, Planejamento Urbano e Gestão Ambiental com o uso dos Sistemas de Informação Geográfica. 

Para não nos alongarmos, fiquem agora com o artigo do Cássio Eskelsen.

CLOUD COMPUTING 

“Cloud computing” (“Computação nas Nuvens”) é a buzzword do momento, mas como isso pode se encaixar no mundo das aplicações GIS? 

Antes de adentrarmos em nosso negócio fim convém conceituar o que vem a ser “Computação nas Nuvens” e suas várias modalidades. 

O termo “nuvem” é utilizado há muito tempo em diagramas como abstração para qualquer rede, seja ela uma rede telefônica, uma WAN ou mesmo a Internet. 

Mais recentemente virou sinônimo de ambiente na internet para executar aplicações, hospedar arquivos e toda sorte de atividades que antes eram executadas exclusivamente em rede local. 

Para os informatas apenas teremos cloud computing se alguns requisitos mínimos forem atendidos: redundância, elasticidade (ou escalabilidade) e tolerância a falhas. 

Redundância é a capacidade de continuar executando uma função mesmo com a falha do equipamento primário. 

Elasticidade e escalabilidade são termos que se confundem. Enquanto que a escalabilidade tem relação com a capacidade de o sistema ser expandido quando necessário, a elasticidade pressupõe a capacidade dos recursos se ajustarem à carga necessária (tanto o aumento quanto a diminuição deles).

O termo elasticidade tem grande importância, pois dessa forma os custos de um ambiente cloud também serão também elásticos, ou seja, “pague pelo que você usou”. 

Além de ser redundante, um ambiente de Cloud Computing necessita ser Tolerante à Falhas, ou seja, precisa prever mecanismos de checagem de erros (tanto de software quanto de hardware) e recuperação em caso de falhas.

Definida tecnicamente Cloud Computing, cabe ressaltarmos que, comercialmente falando, o termo vem sendo utilizado de forma “elástica”. Não raro vemos provedores ofertando Cloud Computing que nada mais são do que os antigos serviços de Servidor Virtual / Alocação de Servidor. Essa é uma prática bastante comum no Brasil, onde ainda não temos nenhum serviço em território nacional que provenha Cloud Computing no sentido literal da palavra. 

No exterior, principalmente nos Estados Unidos, temos vários serviços de Cloud Computing, com abordagens diferentes entre eles. Entre os mais conhecidos podemos citar:

GoogleAppEngine (GAE): entre todos, é o que leva mais ao pé da letra o conceito de Cloud Computing. Você constrói sua aplicação em Java ou Python, sobe para o GAE e ele se encarrega de alocar os recursos necessários de acordo com a demanda (e cobra de acordo). Os pontos negativos são a necessidade de a aplicação ser codificada em Java (ou alguma outra linguagem que gere bytecode Java) ou Python (versão 2.5) e não possuir uma abordagem madura de banco de dados relacional (que permita comandos SQL comumente utilizados). Não que o GAE não possua um banco de dados maduro, pelo contrário, o seu banco de dados utiliza a mesma tecnologia utilizada no buscador Google, mas a forma de trabalho é diferente do que a maioria dos desenvolvedores está acostumada – e não possui extensões espaciais. 

Amazon AWS: Sim, a loja Virtual Amazon provê serviços de Cloud Computing! Aliás, muitos serviços conhecidos por todos (por exemplo o Dropbox) rodamem servidores Amazon. 

O AWS possibilita que você monte uma máquina virtual (denominada “instância”) com praticamente qualquer sistema operacional (mas os mais utilizados são os baseados em Linux). Mas ao contrário de ser apenas um serviço de “servidor virtual” ele entrega uma série de ferramentas para garantir a escalabilidade e redundância. Você pode, por exemplo, definir critérios para ligar ou desligar instâncias automaticamente. 

Todas as instâncias são baseadas em imagens, as AMIs (Amazon Machine Image). Na prática, são máquinas virtuais prontas (contendo sistema operacional, banco de dados e aplicações) que servem de modelo para as instâncias. Você pode comandar algo como: “inicie 2 instâncias baseadas na AMI de código amiXYZ”. 

Além de executar máquinas virtuais, a Amazon possui um serviço de storage a um custo muito atraente (o que pode ser interessante para nós que precisamos manter backups de arquivos enormes). 

Como você monta a sua máquina virtual não existe restrição ao que se pode rodar nela (desde que você tenha as respectivas licenças). 

Microsoft Azure: A Microsoft é um dos mais recentes players no mercado de Cloud Computing. O serviço oferecido por eles pode ser considerada uma certa mistura dos serviços do Google App Engine e Amazon AWS. Originalmente o Azure oferecia apenas a possiblidade de hospedar aplicações .Net. Agora também permite hospedar aplicações PHP e JAVA, além de possibilitar a hospedagem de máquinas virtuais Windows Server. Também disponibiliza a hospedagem em banco de dados Microsoft SQL Server.

Cloud Computing e GIS 

Aplicações GIS são fortes candidatas à utilização de Cloud Computing, pois são intensivas na utilização de espaço (principalmente). Em termos de processamento, por outro lado, são poucas as aplicações que possuem picos absurdos de utilização que justifiquem, por exemplo, subir uma ou mais instâncias adicionais. 

Não pretendendo fazer comercial de espécie alguma (até porque não estamos sendo remunerados por isso), podemos indicar o serviço da Amazon como um dos que mais se encaixam em nossas necessidades. Você pode montar um Geoserver, um i3Geo, um MapServer, etc em uma ou mais instâncias do Amazon EC 2 e armazenar seus arquivos rasters no Amazon S3 (Storage). Se for usar um servidor de mapas na web baseado em tiles (como o Mapnik), pode inclusive armazenar seus tiles no S3. 

Agora, você pode também querer desenvolver uma aplicação GIS do zero em Java (ou .Net) e hospedá-la no Google App Engine ou no Microsoft Azure. O Azure tem a vantagem de disponibilizar banco de dados Microsoft Sql Server que possui extensões espaciais.  Na Google você pode usar o Google Fusion Tables para seus dados espaciais.

As ofertas existentes de serviços GIS nas nuvens (e para as nuvens) 

Em alguns casos não é interessante montarmos toda uma infra do zero. Podemos utilizar algumas ferramentas já prontas, como por exemplo: 

ArcGIS for Server on Amazon EC 2

É um ArcGIS Server pronto em forma de AMI (Amazon Machine Image). Você não precisa se preocupar em instalar todo o ambiente, ele já vem pronto com Windows, ArcGIS Server e ArcGIS Desktop. A ESRI inclusive fornece o serviço de montar o servidor.

SimpleGeo

Provê hospedagem de dados espaciais, bem como uma extensa API para manipular esses dados espaciais. Além das APIs, disponibiliza código pronto para utilizar os dados em aplicações iOS (iPad e iPhone), Android, Javascript, Java, .Net, Ruby e PHP. O serviço é cobrado por utilização (chamadas).

WeoGeo 

Semelhante ao SimpleGeo, focado na hospedagem de dados espaciais. O diferencial é o ambiente preparado para a negociação de dados espaciais. Você pode tanto adquirir dados espaciais de terceiros quanto disponibilizar seus dados para licenciamento, onde o  WeoGeo fica com um percentual da transação.

Concluindo

As aplicações GIS são intensivas na utilização de recursos computacionais e o custo de manter in-house todo um datacenter para a disponibilização das informações é muito alto, enquanto um provedor de cloud computing pode oferecer custo baixo, alta disponibilidade e velocidade para a execução das aplicações. 

A escolha do provedor ideal dependerá muito do tipo de aplicação que se pretende executar. Em termos de custos de processamento e espaço todos são muito parecidos.

_-_-_-_-_

Espero que vocês tenham gostado. Qualquer duvida você pode entrar direto em contato com o Cássio ou postar comentário aqui.

Você sabe algo que acha que poderia virar um Guest-Post? Entre em contato.

Até o próximo post.

Links relacionados:

Localização

GOV 2.0 e SIG

AS NOVAS GEOTECNOLOGIAS


Respostas

  1. Parabéns Cássio e Sadeck, matéria extremamente informativa.
    Um Abraço!

    Curtir

  2. Quando estava fazendo as pesquisas sobre CloudGIS, lembrei de um projeto da NASA chamado SETI que coletava ondas de rádio vindas do espaço e tentava decodificá-las usando o tempo de processamento dos computadores de voluntários (internautas) que se inscreviam para a análise desses sinais no intuito de detectar vida extraterrestre. Será que isso já era uma forma de Cloud Computing?

    Curtir

  3. Sadeck,

    Isso é um negócio chamado “grid computing”, ou seja, dividir processamento entre n dispositivos.
    Ẽ uma modalidade muito interessante pois você pode pegar muitos dispositivos de baixa capacidade de processamento e junta-los em um grande computador virtual.
    Pode ser usado, por exemplo, em uma universidade que esteja fazendo uma pesquisa com alta necessidade de processamento: ela pode colocar todos os computadores de laboratórios de alunos para processar em horários sem aula.

    Não deixa de ser Cloud Computing, pois escala,é elástico e é redundante !

    Curtir

  4. http://twitter.com/#!/sadeckgeo/status/106708384480374786

    Curtir

  5. Have you ever thought about adding a little bit more than just your articles?
    I mean, what you say is fundamental and all. However just imagine if
    you added some great pictures or video clips
    to give your posts more, “pop”! Your content is excellent but with pics and video clips, this website
    could definitely be one of the greatest in its niche. Good blog!

    Curtir


Deixe um comentário

Categorias