Postagens

Mostrando postagens de 2021

Design Patterns

Imagem
     Padrões de projeto (Design Patterns) são soluções típicas para problemas comuns em projeto de software. Eles são como plantas de obra pré fabricadas que você pode customizar para resolver um problema de projeto recorrente em seu código. Criational Patterns      Padrões de criação, fornecem mecanismos de criação de objetos que aumentam a flexibilidade e a reutilização de código. A forma básica de criação de objeto pode resultar em problemas de design ou em complexidade adicional. Esse grupo sustenta o principal princípio de orientação a objetos: "Programar em função de interfaces e não em função de implementações". Factory Method     Fornece uma interface para criar objetos em uma superclasse, mas permite que as subclasses alterem o tipo de objetos que serão criados. Quando usar: Use o Factory Method quando não souber de antemão os tipos e dependências exatas dos objetos com os quais seu código deve funcionar. Use o Factory Method quando desej...

Configurando Visual code

Imagem
  Configurações ZSH VS Code Settings Principais extensões

Simple Clean Architecture

Imagem
Como podemos descomplicar ? Com uma visão de arquitetura mais simplista, seguindo todos os bons conceitos, principalmente a de manter o isolamento total do core, mas com uma única camada externa para a aplicação, simulando uma divisão modular fisicamente por packages com config, entrypoint e dataprovider. Para exemplificar um pouco mais o modelo baseado na Clean Architecture e Ports and Adapters, segue uma ilustração para visualização das dependências de cada camada e as ligações com seus componentes, deixando bem claro suas responsabilidades. Nota: Observa-se que no diagrama de classe mostrado foi inserido nas classes que implementam as interfaces a notação @javax.inject.Named, essa notação para quem não a conhece, ou utiliza outra linguagem, é uma notação da especificação de injeção de dependência do Java ( JSR-330 ). Ela é utilizada como dependência no core para que o mesmo não possua nenhuma dependência direta de Framework, assim contendo apenas o trivial, como especificações. Em a...

StreamSets Data Collector

Imagem
  Definição O StreamSets Data Collector é uma infraestrutura de ingestão contínua de big data de nível empresarial, de código aberto. Ele possui uma interface de usuário avançada e fácil de usar que permite que cientistas de dados, desenvolvedores e equipes de infraestrutura de dados criem facilmente pipelines de dados em uma pequena fração do tempo. Pronto para usar, o StreamSets Data Collector lê e grava em um grande número de terminais, incluindo S3, JDBC, Hadoop, Kafka, Cassandra e muitos outros. Você pode usar Python, Javascript e Java Expression Language, além de um grande número de estágios pré-construídos para transformar e processar os dados em tempo real. Para tolerância a falhas e escalabilidade horizontal, você pode configurar pipelines de dados no modo cluster e executar monitoramento de baixa granularidade em cada estágio do pipeline. Prova de conceito O objetivo deste tutorial é reunir arquivos de log do Apache e enviá-los ao Elasticsearch. Ao longo do caminho, vamos...

Principais Ferramentas DevOps

Imagem
  Jenkins Trata-se de um servidor de automação gratuito e de código aberto. Ele ajuda a automatizar as partes do desenvolvimento de software relacionadas à construção, teste e implantação, facilitando a integração e entrega contínuas. É um sistema baseado em servidor que é executado em contêineres de servlet como o Apache Tomcat. Permite que você configure e personalize o pipeline de CD conforme as necessidades individuais. É executado no Windows, Linux e macOS X, o que facilita a introdução. Vantagens: Automatiza implantações e atualizações de aplicações; Oferece velocidade para escalar aplicativos em contêineres; Consegue operar contêineres em múltiplos hosts; Permite o uso do hardware de forma otimizada, o que ajuda a economizar recursos. Não limita o tipo de aplicativos suportados. Kubernetes oferece suporte a uma carga diversificada de aplicações; Fluxos de trabalho de integração e entrega são determinados pela cultura de preferência da organização; Não dita as soluções...

Sistema de mensageria Apache Kafka

Imagem
Apache Kafka O Apache Kafka foi desenvolvido para processar fluxos de dados provenientes de diversas fontes, bem como para entregá-los a vários clientes. Em resumo, essa plataforma movimenta volumes imensos de dados não apenas do ponto A ao ponto B, mas também de A a Z e para qualquer outro local que você precisar simultaneamente. O Apache Kafka é uma alternativa aos sistemas de mensageria corporativos tradicionais. Inicialmente, ele era um sistema interno desenvolvido pela LinkedIn para processar 1,4 trilhão de mensagens por dia. Mas agora é uma solução de transmissão de dados open source aplicável a variadas necessidades corporativas. Integração assíncrona com o Apache Kafka Os microsserviços mudaram o panorama do desenvolvimento. Eles tornaram os desenvolvedores mais ágeis ao reduzir as dependências, como as camadas de banco de dados compartilhado. No entanto, as aplicações distribuídas que estão sendo criadas pelos desenvolvedores ainda precisam de algum tipo de integração para com...

Introdução à Programação Reativa com Spring WebFlux

Imagem
  O que é programação reativa? O conceito de reatividade é algo antigo, porém pouco aplicado na prática e com o tempo foi se mostrando útil e trazendo vantagens, ao ponto que sua utilização está cada vez maior. Um exemplo do que é reatividade é quando utilizamos uma célula do excel para fazer a soma dos valores de outras duas células, por exemplo =A1+B1 , quando alteramos o valor da célula A1, o resultado do cálculo dessa soma é automaticamente alterado, reagindo a alteração feita, isso pode ser considerado reatividade pura. A programação reativa é uma grande abstração em cima do design pattern Observable , que traz o conceito dentro da programação de reagir a alterações. Programar de forma reativa é trabalhar orientado a fluxos de dados e como esses dados são alterados com o tempo, e pra trabalhar esses dados são utilizados streams de dados assíncronos. A motivação para a programação reativa Um aplicativo da web típico é composto por várias partes complex...