From idea to market in less than 6 months

Hi,

This is my presentation on GCP Next 2016. In this presentation I talk about how CI&T created a new product using Google Cloud Platform in less than 6 months. I explain how we got the vision, the challenges we went through and how we made every decision based on business needs. We are using Google App Engine, Compute Engine, Pub-sub and several other GCP products to build Smart Canvas.

Hope you like it!

Cheers,
Daniel V.

Cloud Computing: “do zero” é fácil… mas o que faço com o que eu já tenho?

Olá,

Estamos chegando ao final de 2015 e fico muito feliz de ver como a adoção de cloud computing melhorou no mercado nacional. Empresas de diversos tamanhos e indústrias estão finalmente colocando cloud computing dentro da categoria de “assunto sério” de discussão. Entretanto, a dúvida que ainda escuto com muita frequência é: o que fazer com o restante dos meus sistemas que estão rodando on-premises ou em clouds privadas?

É possível colher vários benefícios das plataformas de nuvem mesmo nesse cenário! Quero aqui explorar algumas dessas possibilidades.

1. Lift-and-shift

Comecei pelo que eu menos gosto, mas que pode ser interessante a depender do cenário da sua empresa. O termo em inglês “lift and shift” é usado para descrever uma estratégia de migração para a nuvem simplesmente movendo o que hoje roda em um datacenter local para uma plataforma de nuvem sem qualquer redesign da aplicação. Nesse caso, o foco é IaaS (Infrastructure as a Service), que oferece servidores na nuvem (normalmente Windows ou Linux) que vão fazer exatamente o que o seu servidor local faz. Sendo assim, esse processo é praticamente uma troca de datacenter.

Benefícios: maior agilidade no provisionamento de servidores, não se preocupar com a estrutura física de máquinas ou datacenters e, dependendo do seu contrato atual de hosting, pode trazer alguma redução de custos.

Preocupações: primeiramente, por mais simples que seja, mover uma aplicação de um lado para outro adiciona um risco sem trazer benefício de negócio nenhum. Se houver alguma integração com legados, a situação pode demandar uma preocupação especial para criação de redes híbridas e cuidados com latência. Além disso, com o preço do dólar no Brasil, pode ser que o ganho financeiro não exista. Em resumo, é a abordagem de menos valor de negócio, muito técnica. Por isso não gosto tanto.

2. Criação de uma Arquitetura Híbrida

Eu particularmente acredito bastante numa tendência de vermos cenários híbridos crescerem no curto prazo. Algumas coisas rodarão on-premises, outras em clouds privadas e outras em clouds públicas. O que roda em cloud pública, pode aproveitar o que existe de melhor dessas plataformas: PaaS, containeres, serviços gerenciados etc. Nesse cenário, não existem mudanças significativas nos legados, o ponto chave aqui é definir uma estratégia de integração entre as diversas redes. A maneira mais simples é usar serviços próprios dos provedores (exemplo: Google Cloud Interconnect) que permitem criar extensões de sua rede na nuvem pública deles. Outra possibilidade que pode ser adicionada à solução de rede é investir em APIs. Expor serviços dos seus legados como APIs utilizando gateways é a minha abordagem favorita para integrações internas e/ou externas (terceiros, open innovation). Existem muitos produtos que fazem isso, como o Sensedia API Manager (solução nacional que gosto muito).

Benefícios: conseguir utilizar todo o potencial das novas arquiteturas de nuvem para coisas novas preservando o investimento que foi feito em legados. Criar uma arquitetura de integração que pode beneficiar tanto a utilização da nuvem mas também as aplicações atuais e produtos de terceiros.

Preocupações: gerenciar vários ambientes. A arquitetura projetada, tanto de rede quanto de software, precisa ser cuidadosamente projetada para não gerar excessivos pontos de falha e aumentar a complexidade da área de operações de modo significativo.

3. Utilização de Serviços Gerenciados

Que tal simplesmente adicionar “capacidades” às aplicações atuais que vocês já possui?  Essas capacidades (do inglês, “capabilities“) podem ser funcionalidades de real-time para aplicações web ou móveis, analytics / big data, machine learning etc. Ou seja, você vai manter a sua aplicação exatamente como ela é hoje mas adicionar componentes que podem mudar dramaticamente a experiência do usuário ou o seu entendimento com relação ao negócio. E o melhor disso, é que isso pode ser feito sem necessidade de hardware ou software e, via de regra, de modo extremamente simples. Produtos como Firebase para funcionalidades de realtime, Big Query para Big Data, Translate API para tradução e detecção de linguagens, Vision API ou Prediction API para machine learning etc estão aí para serem utilizados.

Benefícios: rejuvenesça, transforme a experiência de produtos atuais adicionando componentes em nuvem que podem mudar dramaticamente a experiência atual do usuário através de serviços gerenciados prontos para uso. Podem ser usados sem grandes investimentos iniciais, possuem impacto pequeno na arquitetura atual e são um excelente passo para usar incrementalmente cloud computing.

Preocupações: semelhante ao ponto anterior, é necessário ter cuidado com o projeto da arquitetura e como fica o gerenciamento da solução final. Mas a preocupação aqui é menor visto que são, via de regra, capacidades extras que estão sendo incorporadas, movimentos menores e mais cadenciados.

4. “Containerizar” suas Aplicações

A utilização de containers (Docker, Kubernetes etc) aponta como uma das grandes tendências da área de software há algum tempo. A capacidade de colocar sua aplicação numa “caixa” que pode rodar em qualquer ambiente (local ou de nuvem), super leve pois carrega apenas o que é específico da sua aplicação (não carrega um SO, não é uma VM), performático pois possui menos camadas de virtualização e ainda com a possibilidade de ser implantado em ambientes gerenciados como o Google Container Engine ou num cluster Kubernetes em qualquer lugar, abriu os olhos de muita gente para possibilidades interessantes nas áreas de TI. Colocar suas aplicações atuais em containers e criar as novas já usando essa abordagem pode trazer benefícios importantes para sua empresa: melhoria no processo de DevOps, mais entradas em produção com menor risco, independência de datacenter (pode rodar local, em cloud privada ou qualquer provedor de nuvem pública), potencializar uma arquitetura de micro-serviços na sua empresa etc. E a adoção da nuvem ficará bem suave, seja em máquinas ou ambientes gerenciados oferecidos pelos principais players hoje. Ao contrário do lift-and-shift que você tem apenas “mais do mesmo”, aqui você promove uma melhoria mais profunda nos seus processos de software com benefícios claros para o negócio, como maior disponibilidade e escalabilidade (ao usar Kubernetes, por exemplo), mais rapidez para colocar features novas em produção etc.

Benefícios: containeres ficam no meio do caminho entre infraestrutura e plataforma como serviço. Ao ter suas aplicações em containers, você poderá ter uma série de benefícios da plataforma como serviço (auto-scaling e balanceamento transparentes), com a flexibilidade da infraestrutura como serviço (qualquer linguagem, qualquer middleware), melhorar seus processo de DevOps (diminuir riscos de deployment, melhorar a integração contínua) e ainda não ter “lock-in” com nenhum provedor de nuvem ou datacenter específico.

Preocupações: o processo de mover aplicações atuais para containers pode não ser tão simples e direto, vai depender da arquitetura e dependências das suas aplicações atuais. Uma maneira mais simples de “testar a água” aqui é começar com as novas aplicações, mesmo que para implantação on-premises.

Estes são alguns exemplo de movimentos que podem ser feitos para adotar de forma incremental serviços em nuvem, com risco controlado e com benefícios mais rápidos. Em todos eles, o mais importante é ter um bom projeto, clareza dos benefícios que querem ser alcançados e um bom plano de implantação. A boa notícia é que certamente vai ser bem mais simples do que implantar os complexos produtos de caixinha que, infelizmente, tivemos que enfrentar durante tanto tempo.

Feliz 2016!

Abraços!

 

Por que utilizar uma plataforma na nuvem?

Olá!

Tenho feito algumas visitas e participado de alguns eventos de startups e de grandes empresas juntamente com a Google e percebo que ainda existe uma dúvida: por que eu deveria considerar plataformas de desenvolvimento na nuvem? Quais os benefícios que eu posso ter? No fundo, eu sinto que todos perceberam que o caminho de cloud computing é inevitável, mas ainda falta algo concreto para de verdade “pular na piscina”. Bom, vou tentar sumarizar aqui as principais razões pelas quais as pessoas deveriam considerar uma plataforma em nuvem nas suas novas iniciativas.

[1] Entregar valor MUITO mais rápido

Trabalhando para a CI&T no projeto da campanha de marketing da Copa do Mundo 2014 para a Coca-cola, em 3 meses saímos da assinatura do contrato para a entrega da primeira versão do sistema que capturava, moderava e armazenava, com consentimento do usuário (feito de forma automática), imagens de redes sociais (Facebook, Twitter e Instagram) para bater o recorde do maior mosaico de fotos do mundo. Essa campanha global capturou milhões de imagens por todo o mundo. Usamos o Google App Engine nesse projeto. Já prestei serviço para empresas que demorava mais tempo do que isso apenas para ter um servidor disponível. Ao usar uma arquitetura padrão, uma plataforma que já lida com escalabilidade, alta disponibilidade, replicação de dados etc de maneira nativa, a conversa é “o que vamos construir?” desde o primeiro dia de projeto.

[2] Inovar com novas capacidades para suas aplicações

Antes você não podia armazenar todos os cliques do usuário para entender melhor a usabilidade do seu sistema e a jornada do seu consumidor? Não conseguia juntar o máximo de informações possível e processá-las em tempo real para extrair insights? Era muito complicado ter sistemas com atualizações de UI em tempo real para gerar experiências incríveis como os grandes produtos digitais como Uber e What’s App entregam hoje em dia? Hoje é possível utilizar produtos como Firebase e plataformas de Big Data como a da Google para adicionar essas capacidades às suas aplicações e se destacar no meio da multidão. O que antes era muito caro do ponto de vista de infraestrutura ou de pessoas, agora está a um clique de distância da sua empresa.

[3] Ser mais leve

Os americanos gostam de usar a expressão “travel light”, ou seja, viajar com poucas malas, carregar menos fardo. Como você vai conseguir inovar e usar tecnologia para diferenciar o negócio da sua empresa se ainda precisa tomar conta de servidores, middleware, services packs, infraestrutura etc? Não é aí que está o diferencial do seu negócio correto? Fique mais “leve”, deixe que empresas como a Google cuidem dessa parte para você. Você provavelmente vai estar mais seguro (em melhores mãos nesses quesitos) e certamente com a cabeça, energia e foco em fazer o melhor uso possível disso para ganhar mercado.

[4] Reduzir custos

Deixei como o último item de propósito, pois ainda vejo que mentalmente é o primeiro item na cabeça de muitos. É verdade, você pode sim diminuir custos. Vai depender de investimentos já feitos, contratos com datacenters atuais, tipo de sistemas que você quer manter na nuvem, se vai haver alguma redundância em algum momento etc, mas provavelmente haverá redução de custos. Para startups, é uma decisão óbvia a nuvem por esse motivo aqui, para grandes empresas nem tanto, pois a economia de infraestrutura pode não ser suficiente para romper a inércia de paradigmas atuais. Nesse caso, sugiro uma reflexão sobre os outros temas. Aqui a discussão é de “onde” rodar o meu sistema: local, nuvem privada ou uma IaaS em nuvem pública, tudo commodity ao meu ver. Lembre-se que as plataformas de nuvem oferecem muito mais do que isso com seus serviços gerenciados.

No próximo post vou falar do “como” ir para a nuvem, principalmente carregando um legado nas costas, situação certamente comum em 100% das empresas médias e grandes. Até lá!

Abraços!

Firebase e Google Cloud Platform: Apresentação e Demo

Acabo de apresentar no Google Developer Summit 2015 uma live demo envolvendo Firebase e Google Cloud Platform. Para quem está aqui, espero que tenha gostado! Para os que não puderam estar aqui, segue abaixo o link a apresentação e os links do GitHub para o código da demo. Se tiverem qualquer dúvida de como fazer para rodar, não deixem de entrar em contato comigo!

Cenário: ler tweets do Twitter utilizando um container Docker, implantado numa máquina no GCE (Google Compute Engine) ou num cluster de containers no GKE (Google Container Engine) e ter atualizações em real-time numa aplicação web feita com Polymer e numa aplicação Android.

Apresentação: https://goo.gl/u17GEG
Código no github: https://github.com/dviveiros/firebase-gcp e https://github.com/dviveiros/firebase-android-demo

Abraços!

Kubernetes v1 is here!

Hoje a Google anunciou em seu blog o lançamento oficial da versão v1 do Kubernetes, projeto open-source para clusterização e orquestração de containers. Tive a oportunidade de conversar com alguns Googlers a respeito da expectativa em relação ao tema e posso garantir que é bastante grande! Muito tem se falado a respeito de containers, dockers etc. Grande parte no contexto de DevOps e parte no sentido de portabilidade entre nuvens, APIs etc. Eu, particularmente, tenho um particular interesse no assunto: arquiteturas mais escaláveis e modulares com microserviços na nuvem. Acho que a maturidade do Kubernetes (e sua versão gerenciável: GKE – Google Container Engine) é um passo importante para termos uma base mais sólida na implementação dessas arquiteturas.

Vida longa ao Kubernetes e que venha o GA (general availability) do GKE logo!! 🙂

Windows Server em GA na GCP

Depois de um período em alpha e beta, os servidores Windows estão finalmente em GA (General Availability, disponível de modo definitivo, com SLA, suporte etc) na Google Cloud Platform (GCP). Apesar de eu nunca ter sido fã de Windows, nem no desktop nem muito menos para servidores, acho que é um passo de vital importância para consolidar a oferta de IaaS da Google.

Há um tempo eu comentei que IaaS é commodity, e reforço minha posição aqui. O anúncio das máquinas Windows na nuvem da Google fecha talvez o único gap realmente relevante que faltava na oferta da empresa. Fico ansioso de ver as novidades onde eu acredito que esses fornecedores vão poder se destacar: serviços gerenciados. Espero em breve escrever sobre novidades no App Engine por aqui 😉

Veja mais em: http://googlecloudplatform.blogspot.com.br/

Abraços!