Kaffeine – Como manter seu app sempre online no Heroku?

Logo do Kaffeine

E aí pessoas! Tudo numa boa?

Se você chegou até aqui, provavelmente você já conhece o Heroku e se essa for sua realidade, pode pular esse trecho 🙂

O que é o Heroku?

O Heroku é um serviço de hospedagem de conteúdo, seja um simples site estático ou até mesmo uma aplicação mais complexa, como uma API com acesso a banco de dados e outros recursos por exemplo.

O Heroku é conhecido por ter uma curva de aprendizagem extremamente curta, tornando o deploy da sua aplicação bem simples. Além disso conta com a possibilidade de um plano gratuito (apesar de você ter que deixar o seu cartão de crédito configurado por lá) e também de “incluir” addons para estender os recursos.

Alternativas ao Heroku

Outros players de mercado que concorrem com o Heroku são Amazon AWS, Microsoft Azure, Google Gloud Plataform, Digital Ocean… obviamente cada um tem o seu público-alvo e objetivos diferentes, mas dentre eles, o Heroku parece ser o mais “fácil” de fazer o trabalho com qualidade semelhante.

O problema

Mas, como nem tudo são flores a versão gratuita do Heroku “baixa” a aplicação quando ela não recebe uma requisição por um período de 30 minutos. Em outras palavras, se sua aplicação fica sem nenhum acesso por 30 minutos, ele desliga ela até que alguém a acesse novamente. Quando alguém acessar novamente, ele vai iniciar aplicação toda do zero novamente e o clico se repete. Essa inicialização normalmente é bem domorada e pode causar a percepção de que a sua aplicação é muito lenta aos usuários, quando na verdade é uma característica da sua hospedagem.

Ele faz isso por diversos motivos que a gente não tem certeza, mas talvez a principal delas seja de economizar recursos dos servidores 🙂

Como o Kaffeine resolve esse problema?

O Kaffeine e uma solução gratuita que resolve esse problema. Você simplesmente coloca o endereço da sua aplicação Heroku no site e recebe doses de Kaffeine a cada 30 minutos. Brincadeiras à parte, quando você coloca o endereço da sua aplicação nele, ele passa a fazer requisições a cada 30 minutos à sua aplicação, deixando ele no ar por uma maior parte de tempo.

Mas, como nem tudo são flores (de novo) outra característica da versão gratuita do Heroku é de que esses containers devem parar de funcionar por no mínimo 6 horas por dia e no Kaffeine, você consegue especifica o horário que isso vai acontecer, dessa forma podendo configurar o horário que a sua aplicação receberia menos requisições. Em uma aplicação corporativa por exemplo, provavelmente não haverá acesso fora do horário de expediente ou de madrugada, então você configura o Kaffeine para parar o container nesse período e o impacto nos usuários é menor.

Espero ter ajudado, grande abraço!

Como hospedar seu app sem servidor?

Serverless

Como assim sem servidor? No seu dia-a-dia você vai ver que é isso mesmo, mas na real, nada mudou 🙂

Você já ouviu falar sobre serverless ou FaaS? Então é sobre isso que temos que conversar.

Serverless em tradução livre do inglês seria como “sem servidor”, de fato, o conceito é esse mas também não é bem assim. Na verdade a utilização de uma “arquitetura” serveless apenas “abstrai” a camada de infraestrutura de forma que você não precise se preocupar com isso.

Isso significa que podemos desenvolver um código na nossa máquina e simplesmente dar um deploy para algum player do mercado sem sequer configurar um docker, roteamento, alta disponibilidade, camadas de segurança, etc. Apenas desenvolva seu código e digite no terminal “plataforma_que_eu_escolhi deploy” e pronto! Olha que maravilha!

Tá mas e o FaaS? Essa é a sigla que utilizamos para definir Function As A Service, que pode ser considerado sinônimo de serverless. Os puristas por favor não me xinguem.

Beleza, então meu código tá viajando por aí e eu nem sei onde está? Mais ou menos.

Na verdade, o seu código está em um – ou mais – servidor(es) sim! A jogada aqui é que você não precisa se preocupar com isso, essa é a expertise do player que te fornece o serviço, você não precisa mais ficar dimensionando máquina virtual e configurando o ambiente.

Mas então é uma maravilha só! Vou usar para tudo. Calma! Não é bem assim. Veja abaixo as vantagens, desvantagens e quando usar.

Vantagens

  • Deploy muito prático
  • Setup muito rápido (muito mesmo)
  • Economia de tempo e dor de cabeça com infraestrutura
  • Não importa a quantidade de requisições, o seu serviço não vai “estrangular”

Desvantagens

  • O report de consumo geralmente não é muito claro (normalmente o serviço é cobrado por consumo)
  • Se você não tiver um “stop”, você pode gastar muito dinheiro, inclusive com um bug no código por exemplo
  • É bom que o seu código esteja bem otimizado
  • Não é legal usar para toda e qualquer coisa

Quando usar?

Já tentei usar essa solução de várias formas, certas e erradas (mais erradas do que certas hehe) até encontrar o caminho correto. Não tente subir uma API completa no Firebase Functions por exemplo, não é uma boa solução, não é bom para a sua aplicação e menos ainda para o seu bolso.

As functions são ótimos recursos para hospedar códigos que precisam ser chamados sob demanda para resolver um domínio da aplicação, algo que precise ser chamado, faça o que tenha que fazer e depois termine.

Um exemplo bacana seria: ao fazer o upload de um arquivo de imagem, o usuário envia uma imagem gigantesca para a aplicação, então você chama a sua função hospedada em uma arquitetura serverless e executa toda a otimização dessa imagem para depois armazena-la no bucket e com isso economiza, espaço em disco e grana no bolso, além de garantir o seu padrão da imagem, dimensões, tipo de arquivo, filtro, etc.

Outra aplicação legal é com a utilização de microserviços ao invés de um monolito. Mas isso é um papo para outra jarra de café.

Principais players

E aí, já se animou para testar essa infra? Praticamente todos os players que eu citei te fornecem uma conta gratuita onde você pode se divertir e testar suas aplicações. A experiência é maravilhosa, vai lá!

Em breve eu solto outro post pra te ajudar a fazer isso 😉

Clique em Serverless – Subindo meu código sem servidor (se o título ao lado não estiver com um link, significa que eu ainda não escrevi o post 🙂 )

Obrigado por ter me aturado até aqui e um grande abraço à todos!

Não esqueçam: vamos fazer coisas incríveis!

5 fatos que provam que serverless não é tão caro assim

Gráfico que exibe as vantagens de utilizado serverless em relação ao método tradicional

Se o título atraiu você provavelmente você está familiarizado com o termo serverless, mas para introduzir a galera que caiu de paraquedas por aqui, serverless é uma arquitetura na qual nós “não precisamos” de servidores para hospedar nossos códigos. Nós simplesmente escrevemos os nossos códigos, escolhemos um player do mercado e colocamos o código lá. Depois é só chama-lo e tá feito! Você pode entender melhor sobre serverless nesse artigo que eu escrevi aqui no blog: Como hospedar seu app sem servidor?

Feita a introdução, vamos ao objetivo!

Calcular a execução de uma função na arquitetura serverless pode ser uma tarefa extremamente difícil, isso porque os principais players do mercado estruturaram seu modelo de negócios baseado em tempo de execução dessa função, o que é extremamente justo, mas o valor “pode” ser salgado dependendo de várias variantes.

1 – Tempo de execução

Partindo dessa premissa, você como programador, precisa garantir que o código vai perder menos tempo possível, afinal de contas, mais do que nunca o termo “time is money” se aplica nesse caso.

Muitas tecnologias podem ser adotadas por aqui, algumas bem simples como a utilização de um try/catch na chamada de suas funções ou simplesmente usando uma linguagem de programação compilada como o Go, que faria seu código rodar mais rápido, consumir menos recursos e consequentemente gastar menos dinheiro.

Além das técnicas já citadas não podemos esquecer da utilização do paradigma de desenvolvimento funcional para as linguagens que suportam esse tipo de desenvolvimento com certeza é um ponto para observarmos. Em Javascript por exemplo existe um ganho considerável apenas utilizando as abstrações existentes como map, filter e reduce. Além disso, são essas técnicas que propiciam que softwares de análise de big data como o Apache Hadoop funcionem.

2. Infraestrutra

Não só de máquinas e cabos são feitas as estruturas de uma organização, seja essa estrutura on promisses (instalada localmente na sua empresa) ou na nuvem (cloud computing) precisa de um time para orquestrar todos aqueles servidores que você suou para pagar ou para convencer sua diretoria a pagar.

Por mais que ainda vejamos muitos casos em que empresas ainda utilizem infraestrutura de datacenter local, seja por regras governamentais, seja por necessidade de disponibilidade imediata (altíssima latência), softwares não projetados para escalar em nuvem, ou qualquer outro motivo (eu poderia passar horas por aqui hehe), já sabemos que essa prática é tem um peso muito grande a ser carregado. Máquinas depreciam, tem um custo elevado e normalmente tem capacidade ociosa.

Em se tratando de máquinas, imagine que você tem um software hospedado em nuvem pública em uma máquina virtual. Você tem todos as buzz words de tecnologias configuradas no melhor player do mercado com alta performance e redundância configurados num nível nunca visto antes. Você se sente super feliz com isso! Eu também me sentiria. Entretanto, mesmo que podendo adicionar memória, processamento e disco quando lhe der vontade ou quando a máquina precisar, você não pode adicionar apenas hipotéticos 123 Mhz de processamento, você tem uma quantidade pré-definida pelo seu serviço de hospedagem na qual é possível adicionar, sem contar os reboots que seriam necessários, você certamente está perdendo dinheiro com capacidade ociosa, mesmo que pouca, você está perdendo dinheiro.

Com a utilização de serverless, a sua função é chamada, ele faz o que tem que fazer em um tempo X e te devolve o resultado. Pronto! Usou? Pagou pelo que usou.

Tenho uma longa carreira na área de infraestrutura e sempre foi um desafio propor para a direção o aumento da capacidade computacional do datacenter, isso porque normalmente era visto exatamente dessa forma que eu estou colocando aqui: desperdício de recursos financeiros (apesar de ser cobrado quando a coisa parava heheh) e como exemplo posso citar também a capacidade ociosa que existe, principalmente em estruturas on promisses com máquinas físicas, onde você tem uma máquina que suporta 100 usuários, sua empresa cresce e você tem 110 usuário, você não consegue comprar uma máquina que suporte 10 usuários (e também não faria sentido não ter margens de crescimento nesse paradigma), talvez, você precisará comprar outra(s) máquina(s) que suportem 100 usuários e pagar esse spread ocioso de recursos.

3. Pessoas, mais especificamente: DEVOPs

Não é uma caça as bruxas, nem a extinção desse profissional, muito pelo contrário. Esses caras sempre foram extremamente importantes e são ainda mais hoje em dia.

A questão aqui é que mesmo utilizando tudo em nuvem, se você não tem conhecimento suficiente para orquestrar o ambiente onde roda a sua aplicação, você vai ter que contratar alguém para fazer isso por você, justo! Mas porque ter esse custo e ainda ter todos os custos de ociosidade que eu comentei ali em cima se eu posso não ter?

Cabe ressaltar que dependendo do nível e do tamanho da aplicação é extremamente importante que você estruture e a mantenha com um DEVOP, mesmo utilizando serverless.

4. Performance

Imagine você que em um dia extremamente atípico o seu e-commerce, principal canal de vendas do seu negócio, teve, ao invés dos 5 mil acessos diários, 1 milhão de acessos que repercutiu em vendas e visibilidade para o seu negócio. A sua infraestrutura sem serverless, on promisses ou na nuvem, suportaria essa demanda sem quebrar? Sem ficar lenta ou indisponível? Ora, responde eu mesmo: provavelmente não!

Com o serverless, você com certeza vai pagar por essa demanda (e bastante), mas o seu usuário não será impactado por qualquer um desses fatores, já que estamos falando de players como Amazon Lambda, Microsoft Azure Functions e Google Cloud Functions por exemplo. Acho que temos bastante capacidade computacional com esses caras, certo?

5. Planos gratuitos

Pensando como uma startup todo o centavo é muito importante e se conseguimos economizá-los, isso se reverte em café em cima da mesa, café se transforma e código-fonte e por aí vai…

Brincadeiras à parte, a maioria dos players, grandes ou não, oferecem planos gratuitos, claro que com suas limitações, mas certamente atende as suas demandas de teste, MVP e lançamento do seu produto.

Conclusão

Serverless ainda é caro, complexo de ser medido e provisionado (valores monetários), mas assim como vários outros aspectos da sua startup, precisa ser analisado com atenção, principalmente aos fatores indiretos ligados a sua implementação. Também é necessário ficar atento à operação continuada e entender o momento certo de migração, caso necessário. Isso pode ser um fator muito importante dentro da sua organização.

Eu uso serverless como premissa da minha estrutura e você?

Gostou do artigo? Consegui agregar valor para você? Se sim, indique para um amigo para que ele também fique esperto no assunto.

Obrigado por vir até aqui.

Vamos fazer coisas incríveis hoje?

A migração de plataformas de softwares “Suites de Escritórios”

O primeiro a levar os aplicativos para a web foi o Google com o Google Docs, depois vimos a Microsoft com o Office Web Apps, agora aguardamos ansiosamente a promessa da Document Foundation de levar o LibreOffice para a nuvem.

Para quem não conhece, o LibreOffice é a versão opensource (código aberto) dos aplicativos de escritório, são os famosos “.odt”. O LibreOffice já teve o nome (muito conhecido) de BrOffice e é desenvolvido sobre o código do OpenOffice.

Após a compra da Sun Microsystems pela Oracle os desenvolvedores do OpenOffice ficaram incomodados, esperando que o projeto passasse a ser pago e criaram a The Document Foudation.

Mas voltando ao assunto “CLOUD”, esse movimento das Empresas e Fundações desenvolvedoras de suítes de aplicativos de escritório, ao meu ver, é só o começo, muito precipitado, com relação as expectativas que alguns amigos e eu, inclusive os que não compartilham da mesma opinião sobre cloud computing, tínhamos.

No começo desse mês, consegui convencer um amigo desenvolvedor PL/SQL a estudar Java, já foi um começo, agora é esperar ele se apaixonar pela coisa e procurar por novos horizontes…

O que eu quero dizer com tudo isso é que cada vez mais os aplicativos estão sendo “convertidos” para a plataforma web e além de servidores e datacenters, tem muito desenvolvimento à ser feito. É fato que muitas Empresas estão de olho nesse nicho de mercado há muito tempo, mas em contra-partida, a mesma parcela não! Principalmente aqueles aplicativos específicos, desenvolvidos por softwares houses.

É nossa missão informar nossos clientes que isso precisa ser mudado em tempo hábil, senão a bagunça estará formada.

O mercado está aí, ninguém vai se escapar de rodar seus aplicativos na web, o Google, a Microsoft e o LibreOffice já estão se “convertendo” e você, vai esperar seus clientes lhe chamar para essa demanda?

[Overview] Microsoft BPOS – Parte 6

Microsoft Business Productivity Online

Office Communications Online

De todo o conjunto de software esse eu acredito que seja o menos impressionante, mas não menos importante.

Hoje com o bloqueio do famigerado MSN na maior parte das organizações, muitas vezes partimos para o uso de soluções opensource ou até mesmo de determinados softwares que limitam o próprio MSN para atuar restritamente a determinados contatos e fazer logs.

A vantagem do Office Communications é a integração (essa presente em todos os produtos da linha) com os demais produtos, principalmente com o Microsoft Outook presente em todas as versões do Microsoft Office. Exemplos são a presença que pode ser setada em qualquer aplicativo e o histórico que é armazenado em uma pasta no Microsoft Outlook.

[Overview] Microsoft BPOS – Parte 5

 

Microsoft Business Productivity Online

Live Meeting

Esse serviço é simplesmente fantástico! Com ele você encurta a distância entre seus sites remotos.

Você conversa (pelo microfone mesmo) e compartilha documentos com muita facilidade e ao terminar a sua reunião –  que diga-se de passagem não consumiu tanto tempo e nem poluiu o meio ambiente, já que seus participantes não precisaram se deslocar – a sua ata está prontinha esperando para ser baixada.

[Overview] Microsoft BPOS – Parte 4

Microsoft Business Productivity Online

Sharepoint Online

Sharepoint é um produto da Microsoft que á muito foi lançado com o objetivo de colaboração dentro da sua Organização.

Nada mais é do que um serviço de intranet, com diversos tipos de ações e intuitos.

Hoje existem diversas webpart’s gratuitas ou não, que são uma espécie de plugins nos quais nós podemos instalar e configurar no nosso portal colaborativo, o que acaba tornando quase que desnecessário a necessidade de você criar a sua.

Com o BPOS, você pode criar diversas “Instâncias” do Sharepoint a limitação é dada pelo espaço em disco.

Sei que o backup ainda não é grande coisa, até porque tudo é armazenado em banco de dados (MsSQL), mas que eu realmente acredito que um dia o sharepoint ou algum serviço semelhante pode vir a substituir o nosso querido FS (File System – Sistema de Arquivos), quem sabe?

[Overview] Microsoft BPOS – Parte 3

BPOS – Microsoft Business Productivity Online

Administração de emails.

Nessa seção não falo nenhuma novidade para quem já utiliza um Microsoft Exchange, exceto os benefícios que essa solução pode trazer.

Toda a administração é feita remotamente, isto é, não é preciso instalar absolutamente nada na sua máquina, nem servidores nem consoles de administração.

Mas o que significa exatamente isso? Significa mais dinheiro no caixa da sua organização.

Imagine você que para se ter um Microsoft Exchange rodando redondinho na sua Empresa, você precisará no mínimo de: um servidor, ar condicionado, energia 24 horas, link garantido como IP fixo, licenças de Exchange e no mínimo uma licença de Windows e meu amigo, ainda assim você corre riscos…

Agora calcule comigo o espaço em disco… multiplique o número de usuários que você tem por 25 GB (que é o que o BPOS disponibiliza), cote um storage com toda a segurança que o serviço merece e divida o valor do storage pelo número de usuários novamente. Ahhh! Coloque na conta também os investimentos que eu coloquei lá em cima, mais um pouquinho para backup (com as devidas licenças) e ainda reserve uma graninha para aquele suporte que você talvez possa precisar…

Se esse cálculo der menos de US$ 10. Vá em frente, caso contrário, assine com a Microsoft.

SaaS – Mercado de software como serviço pode dobrar em 5 anos

Lí no Imasters, no qual é a fonte para esse pequeno artigo, que segundo o Gartner, o mercado para SaaS (software como serviço, em inglês) pode dobrar em cinco anos e possibilitará a movimentação de aproximadamente US$ 21,3 Bilhões em 2015, contra apenas US$ 10 Bilhões em todo mundo no ano passado.

Segundo Tom Eid, vice-presidente do Gartner, essa movimentação está ocorrendo por conta dos orçamentos reduzidos para investimentos com T.I. nas organizações, no qual vem exigindo cada vez mais o uso de tecnologias voltadas à Cloud Computing (Computação em nuvens).

Segundo o Gartner, 75% dos contratos hoje são fechados com desenvolvimento em SaaS e a esperança é de que seja atingido o índice de 90% em 2015 e o carro chefe são softwares de CRM.

Isso só faz com que a minha teoria (que não é nada inovadora) se concretize ainda mais. A Cloud Computing pode estar fechando algumas portas para os adminsitradores de rede e outros cargos, mas com muita certeza está abrindo para os desenvolvedores web…

Essa notícia faz com que pensemos: sua organização tem um software instalado nas máquinas hoje? Então você precisará de um desenvolvedor web para, no mínimo, convertê-los em aproximadamente 5 anos.

Fonte: Imasters – Notícia

[Overview] Microsoft BPOS – Parte 1 e 2

BPO – Business Productivity Online

Quando fui apresentado à essa ferramenta, por um grande fornecedor aqui de Porto Alegre, no qual não vou citar, pois, não pedi as devidas permissões [ainda], realmente fiquei maravilhado. Apesar do fascínio por OpenSource da pessoa que vos escreve, realmente fiquei empolgado com o funcionamento da nova nuvem tão investida sonhada pela Microsoft. Ok, ao meu entender ainda estamos longe da situação ótima para a nuvem, pois cá para nós, os links disponibilizados hoje em nosso país, principalmente quando roetamos para fora, não são lá uma Ferrari, correto?! E.. vejam só, sem link bom -> sem nuvem boa!

Com essa ferramenta, levamos todas as nossa contas de e-mail para a nuvem da microsoft, tudo administrado pelo seu navegador. Na versão completa ainda temos mais três softwares (ou serviços, como preferir), são eles: Microsoft Sharepoint Online, Microsoft Office Live Meeting e Microsoft Office Communications, além do Microsoft Exchange Online.

É a Microsoft mostrando

O que ganhamos e quem ganha com isso?
A equipe de T.I.C. ganha em produtividade/agilidade e segurança, já que para se ter um parque com SLA de 99,99%, ou seja, 5 minutos de parada por ano, significa investir muito, mas muito mesmo. Como em muitas Empresas o serviço de e-mail, pelo menos, é um serviço de alta prioridade, remetemos a responsabilidade de manter o ambiente em funcionamento e o investimento para a Microsoft e tudo isso por um valor irrisório, apesar de só ser vendido em Dólar, por enquanto (o que pode trazer um pouco de receio de Empresas desconfiadas… eu vivo do Dólar e no cenário atual, acho difícil uma alta significativa, mas…). Além disso, o TCO e o ROI do serviço é muito interessante, tendo emm vista que hoje em dia, quando uma nova versão do Exchange é lançada, por exemplo, o que devemos fazer? A resposta é simples: estourar o orçamento ou ficar com o software antigo… Usando o BPOS, acredito que o máximo que possa acontecer é um pequeno aumento nas mensalidades. Quanto ao ROI, se explica facilmente ao criar um projeto, lógico que depende do tamanho do seu ambiente, mas basicamente em uma empresa de médio porte, você somaria o total de licenças necessárias ara a aplicação do Exchange (calls de acesso do próprio Exchange, calls de acesso do Windows Server, anti-vírus, anti-span, etc), multiplicaria pelo número de usuários e dividira pelo tempo de vida estimado do software, não esquecendo que você ainda tem os custos com horas técnicas e hardware.

Eu sei, é um cálculo muito superficial, mas já torna o BPOS uma realidade na sua Empresa.

Nota: No vídeo eu falo que a PARTE 1  seria escrita, mas mudei de idéia, preferi escrever algumas coisinhas no post de cada uma das partes. Confesso! Indexação é tudo! hehehe