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!! 🙂

IaaS é commodity. Qual o real benefício da nuvem?

No dia 16/06 aconteceu o Google Next – evento sobre Google Cloud Platform (GCP) – em várias cidades como Nova Iorque, Tokyo e São Francisco com live stream para o mundo inteiro. O keynote foi bem interessante e me fez refletir sobre o ponto que estamos no assunto cloud computing e o que esperar do futuro próximo. Compartilho abaixo algumas das  minhas reflexões:

1. Acabou o medo de se adotar infraestruturas e plataformas em nuvem

Pelo menos para cenários como hospedagem de aplicações não-críticas, campanhas de marketing, big data ou aplicações digital / mobile. Há mais de 5 anos trabalhando quase que exclusivamente com o assunto, é nítida para mim a diferença de comportamento e aceitação de empresas de todos os tamanhos com o assunto. Hoje eu vejo empresas de todos os tamanhos e nacionalidades tratando o assunto com total naturalidade. A exceção acontece em alguns poucos segmentos mais conservadores ou fortemente regulados, mas mesmo assim movimentos significativos já acontecem em setores financeiros e farmacêuticos, por exemplo.

2. IaaS está se tornando commodity

Principalmente se considerarmos os principais provedores mundiais de nuvem. E commodity no sentido mais puro da palavra: pouca diferenciação por valor agregado e maior diferenciação por preço. Apesar do entusiasmo das empresas ao moverem os seus primeiros sistemas para um servidor rodando na nuvem, elas estão apenas no primeiro passo da jornada. Cada dia mais, a decisão de adotar GCP, AWS ou Azure – para IaaS – se parece com a decisão de ter um chip Vivo, Claro ou TIM. Algumas diferenças aqui e ali em termos de funcionalidades, mas condições comerciais e preços acabam sendo os principais fatores de decisão.

3. A diferenciação em potência de 10 acontece com serviços gerenciados

O salto de 10x de agilidade e agressividade de posicionamento digital vai acontecer para os que souberem fazer o melhor uso dos serviços gerenciados em nuvem. São eles que vão permitir criar coisas incríveis como aplicações com escalabilidade infinita em semanas, analisar e gerar insights a partir de volumes estrondosos de dados, manter sincronização real-time entre dispositivos etc, tudo isso com foco apenas em desenvolvimento. Isso significa colocar o foco e energia da sua empresa no local correto: gerar valor. E não em complexas arquiteturas lógicas e de infraestrutura. E aqui teremos um dilema que as empresas vão precisar lidar: vendor lock-in. Serão 3 opções:

IaaS para ter total controle com menor produtividade de desenvolvimento e maior custo de gerenciamento e operações;
PaaS e Serviços Gerenciados para ter maior produtividade e agilidade, muitas vezes sem necessidade de investimento em operações, utilizando soluções e arquiteturas definidas pelo provedor (vendor lock-in);
CaaS (Containers-as-a-Service) para ficar no meio termo, conciliando controle e abstração de ambiente de execução e escalabilidade. Por enquanto, tecnologia ainda amadurecendo;

Meu palpite é que grandes empresas vão considerar as três opções e decidir a melhor sob demanda.

E a Google Cloud Platform nesse cenário?

Vejo com bastante entusiasmo a posição atual da GCP nesse cenário desenhado. O evento “NEXT” mostrou como empresas como JDA e PwC estão adotando a plataforma no mundo corporativo com sucesso. Depoimentos de executivos dessas empresas deixaram clara a consistência de performance, escalabilidade e segurança da plataforma. E o mais interessante é que a GCP possui ofertas para todos os cenários que mencionei:

IaaS com Google Compute Engine: para hosting de aplicações legadas ou novos desenvolvimentos que demandem maior controle de código e infra;
PaaS com Google App Engine: para sistemas com alta-disponibilidade e escalabilidade e foco em produtividade e desenvolvimento;
Containers com Google Container Engine e Kubernetes: para criação e gerenciamento de cluster de conteineres;
Big Data com Big Query, Cloud Storage, Dataflow, Pub-sub etc: serviços gerenciados para processar, armazenar e analisar altos volumes de dados em tempo real;
Firebase e Cloud endpoints: para criar aplicações móveis utilizando serviços em nuvem e com sincronização em tempo real de todos os dispositivos conectados;

O distanciamento com relação a concorrentes vai acontecer para quem conseguir explorar ao máximo o que as plataformas de nuvem têm a oferecer. E principalmente para quem explorar os serviços gerenciados oferecidos por estas plataformas. Como disse o executivo da PwC no evento: “_Google is the original cloud company_”. Eu concordo. Na minha visão, a Google lidera indiscutivelmente em visão e execução de entrega destes serviços.

Google IO Extended São Paulo 2014 – Palestra

Olá!

Eu fui convidado para apresentar uma palestra no Google IO Extended 2014 São Paulo, evento simultâneo com o Google IO de São Francisco, onde a Google anuncia suas novidades para a comunidade de desenvolvedores mundial. Na minha palestra, falei sobre “Processamento de Dados em Alta Escala com Google Compute Engine“, onde falo sobre Hadoop/MapReduce e como usar melhor essa abordagem dentro da plataforma de nuvem da Google.

Slides em: http://goo.gl/6PH8Vm

Abraços!

jImagee

PaaS ou IaaS: Prefira ambientes híbridos

Estou super empolgado. O Google acabou de anunciar, dia 25 de março, as “Managed VMs” (http://goo.gl/yv1w6F), confirmando o que eu acredito e já digo há algum tempo: a PaaS não morreu e deve ser uma peça importante da sua estratégia de arquitetura. A consideração crucial deve ser que a plataforma *não* vai atender a todas as suas necessidades, mas em vez de descartá-la por causa disso, você tem que planejar uma solução híbrida na nuvem, usando tanto PaaS quanto IaaS.

Veja bem: não há nada de errado com PaaS

As diretrizes gerais para essa abordagem são:

1) Use PaaS o máximo que puder. Idealmente, ela deve controlar todos os HTTP requests dos usuários finais, mantendo o uso do IaaS para tarefas de backend. Lembre-se: você definitivamente deve tirar vantagem da escalabilidade facilitada pela plataforma.

2) Se possível, tente criar um MVP (mínimo produto viável) que possa ser entregue usando apenas os recursos disponibilizados pela plataforma. Fazendo isso, você terá um melhor time-to-market, diminuindo os riscos e custos.

3) Tenha em mente que você precisará usar a flexibilidade da infraestrutura em algum momento. Tudo bem! Projete um mecanismo que permita com que todos os seus servidores se comuniquem com a plataforma. Recomendo o uso de filas para isso (exemplo: Task Queues). Falando nisso, obrigado, Google, por resolver este problema para nós!

4) Comunique-se de maneira assíncrona sempre que possível.

5) Só mais uma coisa: quando precisar de algo que a plataforma não oferece, antes de correr para IaaS para resolver o problema, certifique-se de que não há outras companhias oferecendo esse recurso como um serviço / APIs. Por exemplo: você não tem que desenvolver um recurso de decodificação de vídeo em cima da sua distribuição do Linux só porque a plataforma não fornece esse serviço. Há ótimos serviços de codificação de vídeo disponíveis para uso.

Estou ansioso para testar essas Managed VMs, bem empolgado. Vida longa aos ambientes PaaS, IaaS e ambientes híbridos!

Não há nada de errado com PaaS!

Acabo de ler o artigo da InfoQ “What is going on with PaaS?“. Em resumo, ele comenta que PaaS está sendo adotada em um ritmo bastante lento e disserta sobre as possíveis razões pelas quais esse tipo de serviço está falhando e perdendo espaço para IaaS. Segundo o autor, as razões principais são: mensagem de marketing confusa, falta de maturidade e limitações das plataformas. Embora eu entenda os pontos mencionados, eu enxergo de maneira diferente e discordo de alguns argumentos listados.

Vamos lá… deixa eu comentar o óbvio aqui: PaaS é uma plataforma. Juro que algum dia eu vou escrever um artigo denominado “O Dilema das Plataformas”. Toda vez que eu vejo um desenvolvedor e/ou gerente lidando com plataformas (e não falo apenas de plataformas cloud, mas plataformas de software de maneira geral), é sempre a mesma velha história: “é limitado”, “nós compramos essa plataforma para sermos mais produtivos, está acontecendo o contrário”, “não é flexível”, “nós não sabemos como trabalhar com essa plataforma”, “deveria estar me ajudando mas está me deixando louco!” etc. Isso acontece quando desenvolvedores .Net começam a trabalhar com Sharepoint, ou desenvolvedores PHP com Drupal… e logicamente quando engenheiros de computação mudam de abordagens tradicionais de servidores para plataformas como o Google App Engine ou Force.com.

A questão aqui é: adotar uma plataforma é sempre balancear prós e contras. Abre-se mão de flexibilidade para ter outros benefícios, na maioria das vezes produtividade, time-to-market ou menor custo. Não saber lidar com os contras da plataforma vai sempre levar para soluções mais caras, lentas e custosas. Pronto: temos o dilema montado! Desista de utilizar apenas PaaS em 100% das suas aplicações. Via de regra, vai ser necessário usar IaaS em algum ponto, criando uma arquitetura híbrida. Dito isso, em minha opinião, PaaS vai sempre ter limitações e IaaS vai – pelo menos nos próximos anos – crescer numa velocidade superior. E isso é completamente normal! Não significa que tem algo errado com PaaS. Existe algo errado com Sharepoint ou Drupal porque temos muito mais projetos usando .Net ou PHP do que as respectivas plataformas?

Sobre “mensagem de marketing confusa”, eu devo concordar com o autor, mas acrescento que a expressão “cloud computing” é vaporosa (desculpem o trocadilho) para dizer o mínimo. De novo, perfeitamente normal o mundo corporativo entender IaaS (“se funciona no seu servidor, vai funcionar na nuvem”) do que PaaS. E é menos arriscado adotar computação nas nuvens começando por aí, apenas movendo servidores físicos para arquiteturas equivalentes na AWS, por exemplo. Como eu disse antes, nada de errado com PaaS aqui, demora um tempo para termos uma mudança de paradigma e cultura incorporado pelas empresas, algo mais disruptivo.

Finalmente, como desenvolver e arquiteto de software, eu vejo apenas “componentes cloud” que podem e devem ser projetados da melhor maneira possível para criar coisas incríveis com tecnologia. Isso inclui ambientes de execução super escaláveis como PaaS, clusters Hadoop gerenciados, bancos de dados replicados (SQL ou No-SQL), streams para processamentos de eventos em realtime e por aí vai, tudo na nuvem. O menu está disponível e acredito que devemos utilizar o que há de melhor para construir a nossa aplicação, com foco em atender requisitos funcionais e não-funcionais. É IaaS? É PaaS? É blablabla-as-a-service? Não importa! Quer saber? Continuo achando que arquiteturas híbridas vão imperar no curto / médio prazo.

Building API ecosystems on top of a stable cloud environment

Lately I’ve been exploring the future of smart computing (social, mobile, and predictive models) and how they relate to enterprise cloud.  In one recent article, I describe why “It’s Time for Enterprise Cloud to Enable the Amazing.” For the enterprise world, cloud computing can create differentiation and promote innovation inside the company. In a second article, I offer “Guidance for Combining Cloud and Social to Enable the Amazing,” providing  insight into why the most important benefit of cloud technology is the ability to move your business to where it has never been before. In this article, I will focus on a final critical component for success: why enterprise businesses must consider building APIs on top of a stable cloud environment to enable these transformative new use cases.

After years of poor software reuse, complex system integration processes, lame and heavyweight protocols and bad service-oriented architecture “patterns,” I think we have finally found an effective way to overcome these problems: APIs. As defined by Kleber Bacili (Sensedia CEO), an API (Application Programming Interface) is “data or business services exposed in the web to other applications. It’s the most popular approach used to allow data exchange between connected devices.” That’s true. This approach completely reinvented Service Oriented Architecture (SOA – and actually, I don’t even like to use this acronym anymore) and is responsible for much of the success of companies like Google, Apple, Twitter and Facebook. Today, these companies handle billions of API requests every single month, and most of the apps we love exist only because of them.

That said, businesses looking to stay competitive in the rapidly changing digital age need to keep two things in mind:

[1] There is absolutely no way for enterprise business to enable these amazing new use cases combining all the critical components of smart computing that will transform their businesses without APIs.

[2] It’s pointless to have an API strategy without a reliable cloud infrastructure strategy supporting it.

Regarding the first statement, using APIs is the best, the easiest, and by far the most effective way to foster innovation. Actually, you can not only gain agility but also outsource innovation. Outsourcing innovation means that by exposing services as APIs, you allow other developers or companies to create innovative software that integrates with your platform. Consider, for example several products and apps that integrate with Facebook or Twitter today. They are only possible because both social networks have several APIs that allow developers to create this ecosystem. Creating a system or application is good, but creating an ecosystem that allows partners, channels, and the developer community to contribute and integrate with your business is amazing. Huge companies such as eBay, Amazon and all social networks have already realized that and they are doing prospering from the new ecosystem. Retail stores, insurance companies and even traditional businesses like banks are planning and executing their roadmap to take advantage of this connected world. By the way, have you ever heard about the “Internet of Things” and “Machine-to-Machine (M2M)?” Although they sound like buzzwords right now, they will undoubtedly play a significant role in our lives in the near future. And guess what: APIs are the foundation that are making these connections and communications happen.

So now, how does cloud computing fit into this scenario? Well, here is a list of benefits and tools that explain why it’s crucial to consider a cloud platform for your API strategy:

  • Scalability: if you are going to create an ecosystem or expose your APIs to the external world, you must be prepared to scale on-demand. The few requests you have right now may become thousands or millions in the next few days. I really like the idea of using Platform-as-a-Service (PaaS) to host the services because it’s more reliable, easier to maintain and less expensive than Infrastructure-as-a-Service (IaaS).

  • Globalization: make sure that you can handle API requests as close, geographically, to the client as possible to avoid latency issues. World-class cloud providers like Google can help address this challenge.

  • Accelerators: there are some really nice tools and libraries that help you to generate APIs and clients that can be used by many devices and programming languages. One of the most exciting and promising technologies in that sense is Google Cloud Endpoints, which simplifies backend services creation for web and mobile clients.

  • Services Composition:  cloud computing can help your API strategy not only in the sense of creating new services, but also by providing you with several different ones that you can use to enhance your application. That includes: geo-localization, language translation/detection, sentiment analysis, authentication, social listening and a variety of other APIs offered by the most popular cloud vendors that are available for your company to use.

For Enterprise businesses to survive the digital disruption, they need to be where their users are, they need to allow them to use the device they want to, and they need to profoundly understand their needs to provide them with the best service possible. In this journey to “enable the amazing” new use cases and services that can transform enterprise businesses, connecting the dots is key to reaching new levels of integration, automation and innovation. Readily available APIs built on top of a stable cloud computing environment are the most important components to make this happen. It has been said, there is no social or analytics without cloud, and there is no mobile without APIs. Well I say, most importantly, there is no transformation without both cloud and APIs.