Um insight sobre o desenvolvimento para smartphones + nuvem
Bom dia a todos !
Durante anos, o desenvolvimento de aplicações vem sofrendo o efeito pendular do desenvolvimento ora centralizado no cliente (client-centric), ora centralizado no servidor (server-centric). Hoje, com proliferação dos dispositivos móveis (smartphones, tablets) e a liderança pelos sistemas operacionais como iOS, Android, WP7, podemos notar que as aplicações necessitam de uma arquitetura cliente-servidor híbrida.
Este movimento significa que os desenvolvedores/empresas precisam juntar mais peças do que antes. Como conciliar linguagens, necessidades, frameworks, alta-disponibilidade em uma aplicação para smartphones ? Em resposta a esta pergunta, sentimentos o surgimento de plataformas que procuram tratar a funcionalidade híbrida de uma maneira mais transparente e produtiva. Estas plataformas procuram incluir desde armazenamento de dados, notificar acontecimentos e até mesmo autenticar os usuários em múltiplos serviços.
Do Cliente, passando pelo servidor para o Híbrido
Apesar de eu ser relativamente novo (35 anos), passei por alguns momentos importantes das indústria da computação no Brasil. Em me lembro no final dos anos 80 para 90, que comecei a trabalhar com ambientes caracteres e algumas vezes baseados no ambiente cliente. Naquele período, o mundo era menos conectado, as redes locais ainda estavam aparecendo aos poucos (LANtastic, Netware e Windows NT), naquele momento os usuários acreditavam que as aplicações podiam rodar em modo offline, e que os dados deveriam estar armazenados nos seus discos locais (algumas vezes, nos disquetes de 5 1/4 ou 3 1/2).
À medida que as redes locais aumentavam o seu desempenho e os sistemas operacionais ganharam novas capacidades, algumas atividades que antes eram feitas no cliente passaram para o servidor, exemplo clássico, processamento e armazenamento de dados em banco de dados relacional (surgem os bancos Oracle, Sybase, SQL Server e outros). Este movimento tornou-se cada vez mais forte com o aparecimento da Web. Na realidade, a Web (meados de 00’s), criou-se a rede das redes, aplicações foram aos poucos se movendo para a Web afim de compartilhar entre si os seus dados (mesmo que de maneira muito rudimentar).
Neste momento, é que vemos a transformação do browser no cliente de vital importância na perspectiva do usuário, de qualquer lugar, bastava abrir o browser, ir para uma URL e pronto ! Da perspectiva do desenvolvedor, o pêndulo se moveu para o desenvolvimento centralizado no servidor (server-centric). Basicamente, estamos falando um modelo de browser requisita uma ação, o servidor a processa e retorna o resultado. Quem nunca, começou a desenvolver os seus formulários para receber dados no padrão (post->->action->result). O ASP (Active Server Pages) foi um modelos mais comumente usados neste período e com a sua ferramenta de desenvolvimento Visual Interdev.
Avançando no tempo até os nossos dias atuais, a rede e a disponibilidade da comunicação tornaram parte vitais de várias empresas. Em recente podcast, ouvi que devemos mudar a contabilização de tempo na Internet para tempo que não estamos conectados. Afinal de contas, através do seu celular você recebe notificações de e-mail, recados do Facebook, tweetes que te colocam em destaque e assim vai (always on). É claro, que esta disponibilidade ainda não é totalmente presente no Brasil (basta viajar para interior de Minas Gerais, e ver que estamos carentes de infraestrutura de telecomunicações), mas apesar desta “questão”, as nossas redes evoluíram muito (de modens de 9.600bps para redes de 1 MB mesmo no interior de Minas Gerais, é eu sei pois estive lá há 4 dias atrás).
Nesta jornada, os desenvolvedores/empresas encontram uma necessidade diferente, os nossos usuários querem que suas aplicações em smartphones estejam sempre online e acessível de qualquer lugar. Querem estar conectados conectados 24 horas por dia para receber as informações, dados e notificações mesmo que a rede não esteja disponível.
Desenvolvimento para uma arquitetura híbrida é complicado
Para os desenvolvedores/empresas reunir as capacidades online e offline não é tarefa fácil. Isto significa reunir para o desenvolvimento de uma simples aplicação: estilos de desenvolvimento em múltiplos ambientes (celular e nuvem), múltiplas linguagens de programação (C#/Silverlight, Object-C, Java) e até mesmo em IDEs diferentes (Eclipse, Visual Studio e outros). Além disso, o modelo deve contemplar a conexão, sincronização de dados de maneira que aparentam sempre disponíveis (online), com centralização de dados em modo offline; e manter sempre um ambiente de alta-disponibilidade para que os dados nunca se percam.
Combinando todos estes aspectos, ficou claro que a taxa de produtividade ficou baixa. E com este “problema” em mãos que podemos ver o surgimento das plataformas de nuvem para desenvolvedores.
As Plataformas
Nestes últimos anos, vemos o surgimento de várias plataformas de nuvem. Há várias no mercado, que vão desde de amplo uso (Amazon, Azure, AppEngine), até as mais centralizadas em frameworks/linguagens (Heroku, Mailgun, dotCloud). Todas estas plataformas de nuvem tem um próposito em comum: aumentar a produtividade dos desenvolvedores/empresas, permitindo que eles se concentram no desenvolvimento da aplicação ao invés de detalhes de uma infraestrutura.
No caso do Windows Azure, é ele quem cuidará dos detalhes da redundância dos dados, conectividade na Internet, alta-disponibilidade do serviço e etc. O que um desenvolvedor/empresa precisa apenas é aprender um conjunto de APIs (Application Programming Interface) para consumir os seus serviços. Sim, uma parte de sua arquitetura você deixará de ter o controle e delegará para um terceiro, mas afinal de contas não é este o movimento natural do mercado? Nem todo mundo consegue reunir em uma mesma cabeça: perfeito pizzaolo, desenvolvedor, executivo e especialista em reatores nucleares. Em algumas funções nos concentramos mais e em outras simplesmentes deixamos para que o mercado possa fazer por nós.
Aumentar a produtividade através da concentração no desenvolvimento da aplicação é dos principais motivadores da inovação na Plataforma Windows Azure. A Microsoft vem lançado continuamente plugins, APIs, bibliotecas e todo o vasto material para que desenvolvedores/empresas possam mover de maneira mais adequada e eficiente suas aplicações para a nuvem. Veja os anúncios mais recentes.
O que venho encontrando em várias palestras, reuniões com clientes/parceiros, desenvolvedores e comunidades é alto interesse no desenvolvimento para Smartphones + Windows Azure. Por outro lado, com toda a mudança no mercado, existem os “receios”. Uma mensagem que sempre procuro mostrar são as dores que muitas tem, mas se acostumaram a sentir. Quem nunca preciso conectar aplicações entre si? Quem nunca teve um site que caiu por excesso de acesso ? Quem nunca precisou integrar dados, aplicações e dispositivos e sentiu o parto que foi? Acredito que precisamos pensar além do óbvio, a produtividade é algo inerente ao mercado, quanto mais rápido, melhor e eficiente; maior a tendência de ter sucesso. Quem nunca gostou de mostrar “what the next big thing”?
Onde busco mais informações?
Para que aquelas empresas/desenvolvedores que gostaram do post, deixo aqui alguns links para download :
- Windows Azure SDK para .NET
- Windows Azure SDK para Java
- Windows Azure SDK para PHP
- Windows Azure SDK para Node.JS
- Windows Azure Toolkit para Windows Phone
- Windows Azure Toolkit para iOS
- Windows Azure Toolkit para Android
- Post do Wader para Android + Windows Azure
- Post do Wader para WP7 + Windows Azure
- Post do Wader para iOS + Windows Azure
abs e T+
Condé
versão 1.0
Comments
Anonymous
December 29, 2011
Muito bom o post. Estou iniciando na área de programação e pretendo seguir a carreira de T.I. Quero saber mais sobre a área. Obrigado por compartilhar.Anonymous
January 09, 2012
Parabéns pelo artigo, Condé! Concordo plenamente com o a questão de nos encorajarmos a viabilizar novas tecnologias ao invés de se acomodar numa zona de conforto e esperar que as mesmas sejam exploradas. Enfrentei mudanças bem drásticas com meus primeiros projetos utilizando Windows Azure, porém, hoje não abro mão da tecnologia e sinto-me preparado para talvez enfrentar algumas dificuldades ao tentar implementar “Azure + Dispositivos Móveis”, mas acreditando no resultado. Obrigado.Anonymous
January 24, 2012
Excelente, o links me ajudaram muito achar o conteúdo direcionado. Nunca usei a nuvem mas não da pra ignorar, recentemente li uma matéria sobre o game para facebook Cow Clicker criado por Ian Bogost, o que começou apenas como uma tentativa de satirizar os games sociais acabaou crescendo de uma forma que o criador nunca imaginou e acabou tendo que migrar o serviço para a nuvem para não perder jogadores(mesmo não querendo tantos ^^).