Prós e Contras de ter um ou vários Clusters de Kubernetes

Montei uma lista de prós e contras que podem ajudar você e a sua empresa a decidir, sobre a necessidade de ter apenas um ou vários clusters de Kubernetes.

Razões para ter um único cluster:

  1. Reduzir a sobrecarga de configuração, manutenção e administração
  2. Melhor utilização de recursos
  3. Reduzir a latência entre aplicativos em vários clusters
  4. Redução de custos

Neste caso você utiliza Namespaces para poder separar os ambientes, como por exemplo Desenvolvimento, Homologação e Produção.

Razões para ter vários clusters:

  1. Limites de escalabilidade, por exemplo, um cluster Kubernetes tem um limite de nodes, pods, services.
  2. Separação de Desenvolvimento, Homologação e Produção.
  3. Separação para testar uma nova versão do Kubernetes.
  4. Segurança e Conformidade: de acordo com alguns regulamentos, alguns aplicativos devem ser executados em clusters/VPNs separados e diferentes políticas de segurança.
  5. Multi-fornecedor: para se proteger de práticas de Lock-in. Usando de clusters de vários fornecedores.
  6. Nuvem Pública/On Premise: para dividir a carga e o custo.
  7. Regionalidade para latência: executar clusters em diferentes regiões geográficas para reduzir a latência nessas regiões.
  8. Regionalidade para disponibilidade: executar em clusters em diferentes regiões/zonas de disponibilidade para reduzir os danos de um datacenter/região com falha.
  9. Facilitar a cobrança: Isolamento de cluster para facilitar a cobrança.

Leia também:

Novo local para o IBM Collaboration Solutions Catalog

O catálogo de produtos da IBM Collaboration Solutions que antes ficava no Greenhouse, migrou para uma nova url –> https://xspy.mybluemix.net/

Nele estão disponíveis:

  • IBM Connections Desktop Plug-ins for Microsoft Windows
  • IBM Connections Plug-ins for IBM Notes
  • Web Application Integrator for IBM WebSphere Portal
  • ….

Leia também:

Projetos em Node.js com boas práticas

Como o Node.js é uma plataforma e não um framework, as boas práticas ficam dependentes do projeto e dos desenvolvedores envolvidos.

Os padrões de design e as melhores práticas existem para evitar armadilhas comuns e construir aplicativos mais estáveis, mas esses princípios orientadores na maioria das vezes não são bem documentados.

Mas existem bons guias e filosofias disponíveis, recomendo visitar o The Node Way. Lá descrevem práticas recomendadas e princípios orientadores para a escrita de módulos de manutenção, aplicações escaláveis e códigos que são realmente agradáveis de ler.

 

Uma sugestão que ajuda bastante é utilizar um linter desde o início.

In computer programming, lint is a Unix utility that flags some suspicious and non-portable constructs in C language source code. Wikipedia

No caso de Javascript, o mais bem availado é o ESLint, veja a comparação com outros neste link.

Como dica de uma boa leitura utilize JavaScript Standard Style, que exemplifica e evita de você criar as suas próprias regras.

Leia também:

Minha Jornada em ser proficiente em JavaScript e Python.

Sempre trabalhei mais com produtos de mercado do que com desenvolvimento, mas sempre procurei conhecer as linguagens utilizadas neste produtos, com o objetivo de solucionar problemas, melhorar integrações e automatizar tarefas.

A algum tempo, tenho investido bastante do meu tempo em JavaScript e Python. Alguns  motivos para isso são:

  • Os principais fornecedores de Cloud (Amazon AWS, Microsoft Azzure, Google Cloud, IBM Bluemix, …) tem serviços baseados nestas linguagens;
  • Produtos como IBM Connections, estão deixando a plataforma Java/IHS/WAS/DB2 e migrando para Javascript/Nginx/Node.JS/MongoDB.
  • Soluções em Analytics e Big Data de mãos dadas com Python.
Três Homens em Conflito ou O Bom, O Mau e o Feio!!!
O Bom O Mau O Feio
JavaScript
  • JavaScript me faz lembrar da aulas de Programação Funcional!!! Idêntico as recursões da linguagem Scheme.
  • JavaScript é uma escolha natural para quem usa APIs baseadas em Json.
  • JavaScript/Node.JS/MongoDB é uma combinação muito poderosa, onde tratamos objetos de apenas uma maneira, isto é, no formato Json.
  • Assincrônia. Saiba o que são funções “blockantes”, para evitar sustos nos resultados do seu código.
  • Fuja dos Callbacks Hells!
Python
  • Python me faz lembrar das aulas de Pascal da faculdade! Uma linguagem simples e sem burocracia. Programar procedural ou orientado à objeto, fica a escolha do programador.
  • Python é um “trator” no que se fala em tratamento de dados.
  • Python 2.7 e Python 3.x gera confusão de qual devo usar.
  • Uso de Json através de bibliotecas.
  • Alguns artigos que li sobre o Python 3, questionam sobre os problemas de performance devido ao novo I/O stack e o suporte a Unicode.

Em ambos as linguagens, tenha noção de:

  • “Para prego use Martelo, para parafuso use Chave de Fenda”, saiba quando utilizar uma linguagem ou outra.
  • Escolha um bom editor, como sugestão Atom, Sublime e Visual Studio Code.
  • Bibliotecas são instaladas com facilidade usando npm/JavaScript ou pip/Python.
  • Aprenda a fazer chamadas via Rest para APIs estamos na era da Economia das APIs.
  • Você precisa utilizar dados JDBC, SAP, Aplicações Legadas, etc. Crie APIs em Java Servlets, e utilize dentro do Javascript e Python usando Rest/HTTP, com isso você reduz a necessidade de instalação de novas bibliotecas.

Nunca deixe de aprender coisas novas e pratique, pratique, pratique.

Leia também:

Um mundo cheio de Bots!

Hoje vou falar como os bots estão invadindo o nosso mundo.

Meu primeiro contato com bots foi em 2007, quando construí um bot  (veja aqui) para o IBM Sametime, que traduzia textos usando o Google Translator!!! Elas andaram meio sumidos, mas estão de volta com força total.

Mas o que são bots?

O termo bots vem de acrônimo para (ro)Bots, e de maneira simplificada são usuários digitais dentro de aplicações de chat como o Facebook Messenger, WhatsApp, Slack, … Estes “usuários” trazem notícias, produtos e/ou serviços dentro destas aplicações como se fossem uma conversa.

Como alguns exemplos de bots temos:

– Alexa: bot de voz da Amazon
– Amy: bot via email da x.ai
– Lyft: bot que informa o tempo de chegada estimado a algum lugar.
– Hipmunk: bot que faz reserva de viagens

Num mundo cheio de páginas Web e Mobile Apps, por que expor serviços via conversa?

1) Acessamos a Internet mais via celular do que via navegadores. O que fez com que o mercado ficasse saturado de aplicações móveis. Você, como usuário, não vai instalar todas as aplicações que encontra, correndo o risco de deixar o seu celular lento. E caso for utilizar um serviço, não vai instalar, usar uma vez e desinstalar.
Se você verificar teu celular, verá que terá pelo menos 3 aplicações de mensagens, no meu caso: SMS, email, Facebook Messenger, WhatsApp,…

2) Usuários passam a maior parte do tempo de uso de um celular, utilizando aplicações de chat.

3) Plataformas de chat já expõe esses serviços, Slack em 2015, Facebook, Apple e Skype em 2016.

4) As tecnologias de reconhecimento de linguagem natural expostos via APIs.

A adoção de Bots está apenas começando, e vale a pena acompanhar a sua
evolução.

Leia também:

Conhecendo o ELK stack

O ELK Stack consiste da união das ferramentas Elasticsearch, Logstash e Kibana.

Juntas, estas ferramentas tem capacidade para tratar grandes quantidades de dados em tempo real, organizar os dados e prover a visualização através de gráfico, tabelas, etc. É uma ótima opção para iniciar em Big Data. O ELK Stack é utilizado por empresas de renome como LinkedIn, GitHub e Twitter.

Componentes do ELK Stack:

  • Elasticsearch
    Ferramenta que faz a indexação dos dados e consulta a estes índices e dados, provendo real-time analytics. Possui outras características como Escalabilidade,
    Alta-disponibilidade, multi-tenant. Full text search.
  • Logstash
    É a ferramenta que faz captura das informações em arquivos (csv, logs, …), processa e gera o output para o Elasticsearch ou outro formato de dados.
  • Kibana
    É um dashboard Web para trabalhar os dados coletados. Suas principais características são pesquisa e visualização através gráfico de torta,
    gráfico de barras, trendlines, mapas, etc.

Estas ferramentas trabalham muito bem juntas, mas cada uma destas ferramentas tem o seu próprio projeto, e são desenvolvidas de forma independente.
As ferramentas tem o código fonte aberto (open-source), mas tem o suporte pago através da empresa Elastic.

Algumas empresas que estão utilizando o ELK:

Para conhecer um pouco do ELK, existe uma demo muito bem montada do dashboard Kibana, a qual
mostra vários aspectos da ferramenta e sua capacidade de utilização no Negócio ou na area de TI.
A demo está disponível no endereço http://demo.elastic.co .

Leia também:

Por que a Apple tornou a linguagem Swift Open Source?

Linguagem de programação Swift Apple é agora open source!!!

Swift mexeu com o mundo de desenvolvimento de software, porque é muito fácil de aprender, poderosa e que ajuda os programadores a escrever aplicativos para iOS, OSX e watchOS.

Mas até o momento ela estava atrelada ao desenvolvimento para dispositivos móveis. Ao se tornar Open Source, ela se torna mais atraente para os desenvolvedores corporativos, porque agora podem usá-lo para escrever o código para aplicativos corporativos, podendo ser executado no servidor ou na nuvem.

Este movimento faz a Apple para se aprofundar no mercado corporativo. Onde as atenções se dividem principalmente entre Microsoft (C++ ou .net) ou pela Oracle (Java e suas muitas ramificações).

Leia também: