sexta-feira, 7 de fevereiro de 2014

X-tudo As A Service

Vamos iniciar hoje uma série de artigos sobre "Continuous Delivery" (Entrega contínua) e DevOps. Dois conceitos que estão transformando o mercado de desenvolvimento de software e você, como "Bom Programador", tem que conhecer bem. Começaremos falando sobre os conceitos que motivaram o surgimento desses dois métodos de desenvolvimento e entrega de software: Tudo As A Service, ou seja: Software As A Service, Platform As A Service e Infrastructure As A Service.


 

Era uma vez um Datacenter...

A evolução natural da Tecnologia da Informação está acabando rapidamente com as fronteiras existentes entre o que é e o que não é TI. Hoje, operamos Datacenters de milhões de dólares usando apenas um Smartphone. Podemos realizar transações bancárias com alguns toques na tela. Assim como podemos acionar uma cadeia enorme de processos e softwares apenas assistindo a um filme no Netflix.

A ubiquidade da informação está provocando um amento da "entropia" em todas as empresas, fazendo com que negócios, TI e Software se fundam e se embaralhem cada vez mais. Parafraseando Andy Warhol, "no futuro, todo mundo carregará um Datacenter consigo".

Duvida? Então, esvazie sua mochila e seus bolsos... Você deve ter um Smartphone, certo? E, provavelmente, está conectado à Internet via 3G ou 4G, certo? E também pode ter um tablet ou mesmo um laptop. Isso representa quase um Datacenter pessoal seu, utilizado para que você fique antenado com sua comunidade de amigos ou mesmo com seu trabalho. No início dos anos 90, os computadores se popularizaram, permitindo que as pessoas criassem Datacenters em casa. Era comum vermos aquelas "mesas de computador" e porta-disquetes, listagens etc.

Com a popularização da Internet, vemos as pessoas interconectadas, consumindo e conversando on-line pelo mundo todo. E, com o barateamento e a modernização, isso tudo foi parar em um laptop, depois em um netbook, agora, em Tablets e Smartphones.

Na verdade, as pessoas estão começando a usar esse "Datacenter pessoal" para ganhar dinheiro, seja prestando serviços, publicando blogs, escrevendo reportagens, vendendo fotos etc. E hoje, você pode hospedar seus serviços onde quiser e, ainda por cima, pode trocar de provedor ao seu bel prazer. Com a computação em nuvem, o Datacenter se tornou "Commodity".

Conheci recentemente, pelo LinkedIn (olha aí) uma pessoa que trabalha com "Customer Recovery", ou seja, ela presta serviços a empresas, tentando recuperar a imagem das mesmas, abalada devido a problemas com pós-venda. Sabe como ela trabalha? Ela tem contratos com algumas empresas, e usa um software agregador de CRM (Customer Relationship Management). Através deste software, que ela acessa em um Tablet, ela vê os problemas, aciona os responsáveis e se "desculpa" com o Cliente. E o faz a partir de qualquer lugar... Ela estava falando comigo na praia (mandou até foto) enquanto conversava com mais 8 pessoas de empresas diferentes.

X-Tudo As A Service



Esta figura, oriunda da Wikipedia  explica muito bem o que está acontecendo no mercado de aplicações e infraestrutura de TI. De um lado, temos os clientes de "Computação em Nuvem" (Cloud Computing), que podem usar uma vasta gama de dispositivos e formas de acesso, de Navegadores tradicionais até dispositivos móveis, e de outro, temos o provimento de toda a Infraestrutura de Tecnologia de Informação, necessária para lhe prestar o serviço, disponibilizada exatamente dessa maneira: COMO SERVIÇO.

Vamos tentar entender um pouco... Essa história de "... As A Service" é uma maneira nova de disponibilizar recursos de TI, seja Software, Hardware ou mesmo Servidores de Aplicação, de maneira desacoplada e simplificada, cobrando por utilização.

Sempre que pensamos em algo "... As A Service", nos vêm a cabeça os serviços em nuvem da Amazon, certo? Bem, se eu tiver um cartão de crédito Internacional, posso configurar uma ou mais máquinas virtuais, com tudo o que eu possa desejar, em apenas alguns minutos. E, ainda por cima, existe uma oferta de uso temporário gratuito (veja bem, isso pode mudar). o Amazon AWS permite que as empresas montem e gerenciem sua infra de TI com baixo custo e prazo. Um exemplo de empresa que usa o AWS é o Netflix.

Outro importante exemplo, mas talvez menos conhecido, é o Heroku, famoso por hospedar aplicações e jogos para o Facebook. Muitas start-ups começaram usando o Heroku como IaaS e PaaS.

Mas, o que são essas siglas exatamente?

Sorry, my bad... Vamos começar pelo "Software As A Service" ou "SaaS". Na verdade, o conceito não é novo, e é legado do antigo ASP - Application Service Provider, em moda no início dos anos 2000. SaaS é oferecer o uso compartilhado dos serviços prestados por determinado software, um dos benefícios da "Computação em Nuvem".

O criador do software permite que você crie contas e utilize o software remotamente, sem necessidade de adquirir licença ou instalar pacotes em sua máquina, e te cobra uma taxa de uso, que pode ser mensal ou sob demanda. Alguns exemplos bem clássicos de ASP ou SaaS são:

  • Google apps (email, agenda, planilha, editor de texto e editor de apresentações), uma suíte que substitui os tradicionais pacotes de automação de escritório, com armazenamento de dados em nuvem, além de email corporativo para as empresas;
  • Microsoft Office 365 (toda a suíte Microsoft Office), além de email corporativo e armazenamento privado em nuvem;
  • Wrike (gestão de projetos), software de gestão de projetos, utilizado em nuvem;
  • Sales Force Cloud (CRM), gestão de clientes em nuvem;
Se, por um lado, as empresas produtoras de software estão oferecendo seus softwares em nuvem, na modalidade SaaS, outras empresas estão oferecendo a infraestrutura de TI também em nuvem, como já vimos (Amazon e Heroku). Este oferecimento pode ser em duas modalidades distintas: Platform As A Service (Plataforma como serviço), ou PaaS, e Infrastructure As A Service (Infraestrutura como serviço), ou IaaS.

Platform As A Service - PaaS é uma modalidade de "aluguel" de Servidores de Recursos para Aplicações, como: SGBDs (Servidores de Bancos de Dados), Servidores Web (Hosting), Servidores de Aplicação (Por exemplo: Containers Java EE), Serviços de Integração e Entrega contínua etc. 

E Infrastructure As A Service - IaaS é uma modalidade de "aluguel" de Serviços Básicos de Computação em Nuvem, como: Servidores (Virtuais ou não), Espaço de Armazenamento de Dados, Balanceamento de Carga, Rede etc, 

Veja alguns exemplos interessantes: 
  • Amazon AWS: PaaS e IaaS. Você pode montar tudo, de Servidores Virtuais até SGBDs;
  • Heroku: PaaS e IaaS. Idem;
  • MacInCloud: IaaS, permite alugar um computador Mac (Apple) para desenvolvimento;
  • CodeShip: PaaS, integração contínua e entrega contínua como Serviço;
Geralmente, os provedores de IaaS também fornecem PaaS, mas isto não é necessariamente verdade, como o exemplo do MacInCloud. Aliás, ele é sensacional e permite, por exemplo, ensinar a programar para dispositivos iOS sem ter que comprar computadores Mac para isso. 

Minha experiência pessoal

Há algum tempo, desenvolvi um game para Facebook chamado "RandoSystem", que consistia em ajudar os "Memes" a atravessarem labirintos aleatórios, com grau crescente de dificuldade. 

Para disponibilizar no Facebook, eu precisava de uma infra própria, composta por PaaS e IaaS, pois o Facebook não hospeda aplicações. 

Então, resolvi colocar tudo no Heroku. Eu havia desenvolvido o software em plataforma MAMP (Mac + Apache Web Server + MySQL + PHP), com a parte cliente invocando RESTful Web Services PHP usando jQuery. 

Abri uma conta no Heroku, subi a plataforma e instalei tudo em menos de 15 minutos! EM MENOS DE 15 MINUTOS EU ESTAVA NO AR, DENTRO DO FACEBOOK!

O Heroku me deu TODA a infraestrutura necessária para publicar rapidamente minha aplicação. 

O problema é que, como a demanda foi forte demais, derrubou minha máquina rapidamente. Então, fiz uns cálculos e eu teria que investir quase US$ 100,00 por mês para manter o game no ar, e como eu não estava certo da minha estratégia de retorno, baseada em ADS, eu não quis comprometer essa grana toda diretamente do meu bolso.

Cheguei a oferecer parcerias, porém, eu precisava de um tempo para conseguir investidores e, desta forma, optei por tirar o jogo do ar. Porém, se eu tivesse optado em investir, bastava aumentar o número de "Dynos" (como o Heroku chama as VMs) e instantaneamente teria aumentado a disponibilidade do meu jogo. 

Tá... E o que isso tudo tem a ver com "Continuous Delivery" e "DevOps"?

Como veremos nos próximos artigos, a "Entrega Contínua" (Continuous Delivery) e o próprio conceito de DevOps exitem uma Infraestrutura de TI flexível e ubíqua, geralmente, proporcionada por serviços de SaaS, PaaS e IaaS, por isso é necessário entender esses conceitos antes de prosseguirmos.