Professores:
Jefferson Stachelski
Laureano Gilioli
Thiago Barradas
Link para Download do Artigo:
Capitulo 1 - Conceitos de Integração de Sistemas e Mensageria
**Aprenda o que é, e como funciona Arquitetura em Mensageria (Objetivos da Aula)**
- O que é arquitetura em mensageria
- Comunicação assíncrona entre serviços
- Gerenciamento de erros
**Requisitos Básicos**
- Entendimento sobre RestAPI
- Conhecimento básico sobre message brokers
**O que é arquitetura em mensageria?**
- **Pros** - Desacoplamento, Fácil plug & play, Comunicação assíncrona, Simples escalabilidade, Broadcasting, Permite Event Source
- **Contras** - Single point of failure, Difícil monitoramento
**Comunicação Assíncrona entre Serviços**
**Modelo 1**
- Passo 1 = WebApp → Proxy HTTP → Serviço1 → Message Broker
- Passo 2 = Message Broker → Serviço2 → Message Broker
- Passo 3 = Message Broker → Serviço3
**Modelo 2**
- Passo 1 = Serviço1
- Passo 2 = Serviço2 e Serviço3 → (Serviço1)
- Passo 3 = Serviço4 e Serviço5 → (Serviço2) / Serviço6 e Serviço7 → (Serviço3)
**Gerenciando Erros em uma Arquitetura Assíncrona (Objetivos da Aula)**
**Gerenciamento de erros**
- Dead letter queue (Filas de re-tentativas)
- Monitoramento entre serviços
- Rastreamento de fluxo
**Inconsistência de dados**
- Passo 1 = WebApp → Proxy HTTP (Adicionar cartão de crédito) → Serviço de Carteira → Message Broker
- Passo 2 = WebApp → Proxy HTTP (Adquirir plano) → Serviço de Planos → Message Broker
- Passo 3 = Message Broker (Aquisição de plano) → Serviço de Cobrança → Banco de Dados
- Passo 4 = Message Broker (Aquisição de plano) → Serviço de Cobrança (Dead letter queue / Aquisição de plano)→ Banco de Dados
**Rastreamento de fluxo**
**Passos**
WebApp → Proxy HTTP → Serviço1 (log, logs, logs) → Message Broker → Serviço2 (logs, logs, logs) → Serviço3 (logs, logs, logs)
Capitulo 2 - Arquitetura de Dados não Estruturados e Business Intelligence
**Business Intelligence em Modelos de Dados (Objetivos da Aula)**
- Business Intelligence em modelos de Dados
- Data Warehouse
- BigData - Dados Não Estruturados
- Data Lake
**Requisitos Básicos**
- Conhecimentos de Bancos de Dados
- Conhecimentos de Lógica
**Business Intelligence em Modelos e Dados**
O BI é composto basicamente por:
- Ferramentas, Infraestrutura, Profissionais (corpo técnico), Dados.
**BI - Data**
- Dados da operação, Pesquisa de campo, Dados gerenciais, Indicadores de mercado
**BI - Solution**
- Infraestrutura, Gerenciamento dos dados, Analises, Compartilhamento, Ferramentas gerais.
**BI - Ferramentas**
- QlikView, Domo, Spotfire, Oracle, MicroStrategy, SAP BusinessObjects, Qlik Sense, Tableau, PowerBI, IBM Cognos Analytics, Sas.
**Aprenda sobre os conceitos de Data Warehouse**
**OLTP x OLAP**
- OLTP = On-Line Transaction Processing
- OLAP = On-Line Analytical Processing
**O que é Big Data e dados não estruturados**
**BigData - Dados Não Estruturados**
BigData é um termo que descreve o grande volume de dados, tanto estruturados quanto não-estruturados.
**NoSQL Databases (Dados Semi-Estruturados)**
- Apache HBASE, Cassandra, Redis, Riak, CouchDB, mongoDB (etc...)
**Dados Não Estruturados (Ferramentas)**
- Hadoop, Ceph, Apache Spark, Apache Storm, DataTorrent, Google BigQuery, Presto
**Exemplo prático MongoDB**
- **Site Oficial:**
- **Download Versão Windows:**
- **Configuração Windows:**
**Passo 1:** Escolher opção: Run service as Network Service user
**Passo 2:** Meu Computador → Propriedades → Configurações Avançadas do Sistema → Avançado → Variáveis de Ambiente → Variáveis do Sistema → Path → Novo → (Colocar o direito .bin do Mongo).
**Comandos Usados no Terminal (MongoDB)**
- mongo → rodar o mongo
- show databases → mostrar os bancos de dados
- use + nome → criar banco de dados (use loja)
- inserir item → db.produtos.insert({ codigo: "01", descricao: "caneta" })
- selecionar item → db.produtos.find()
- inserir item → db.produtos.insert({ codigo: "02", descricao: "lapis", cor: "vermelha" })
- selecionar item → db.produtos.find()
- inserir item → db.produtos.insert({ codigo: "03", cor: "azul" })
- selecionar item → db.produtos.find()
- exit -> sair do banco de dados
Capitulo 3 - Fundamentos de Arquitetura de Aplicações em Nuvem
**Arquitetura em nuvem e sua evolução (Objetivos da Aula)**
- Cloud Computing
- Disponibilidade
- Serverless
**Requisitos Básicos**
- Entendimento básico sobre arquitetura de sistemas.
**Cloud Computing**
- Gerenciamento de hardware/software
- Provedores de servidor e armazenamento
- Pague o que consumir
- Iaas / Pass / Bass
**IaaS (Infrastructure as a Service)**
- Google Cloud, Amazon WebServices, Microsoft Azure
**PaaS (Plataform as a Service)**
- Google Cloud, Amazon WebServices, Microsoft Azure, Terraform, CloudFormation
**BaaS (Backend as a Service)**
- Mobile Backend as a Service (Firebase)
**Entenda sobre disponibilidade de aplicações**
**Disponibilidade**
- IaaS - Hardware e Internet
- PaaS - Auto Scale on the go
- BaaS - Não há Backend Service.
- Kubernets (K8S)
- Multiplos nodos
- Load Balancer
**Aprenda a executar serviços com Serverless**
**Serverless**
- Sem Servidor
- Sem serviço "rodando"
- Sem down time
(API Gateway, Amazon Kinesis, AWS Lambda, Amazon S3)
Capitulo 4 - Desenvolvimento e Operação de Software Integrado
**O que é DevOps? (Objetivos da Aula)**
- DevOps - Conceito e Práticas
- Continuous Integration
- Continuous Inspection
**Requisitos Básicos**
- Conhecimentos de infraestrutura
- Conhecimentos de testes
- Versionamento com Git
- Scripts (bash, power shell, etc)
**DevOps - Conceitos Básicos**
- Development, Quality Assurance (QA), IT Operations
- Integração das 3 áreas (DevOps)
"DevOps é um termo criado para definir o conjunto de práticas que integram e automatizam os processos entre as equipes de desenvolvimento, operações e de apoio (como QA) para a produção rápida e confiável de software".
"O conceito do DevOps baseia-se em criar uma cultura de colaboração entre as equipes que sempre trabalharam separadas. DevOps é uma mudança de mentalidade, uma cultura, um movimento, uma filosofia."
**Framework CALMS**
- Culture, Automation, Lean, Measurement, Sharing
**Culture**
- Todas ferramentas e automações são inúteis se não forem acompanhadas pela verdadeira disposição da área de desenvolvimento e operações em trabalhar juntos.
- Porque DevOps não resolve problemas de ferramentas. Resolve problemas humanos.
**Automation**
- Automação elimina o trabalho manual repetitivo, produz processos repetíveis e cria sistemas confiáveis. Automatizar gera velocidade na entrega e tornam os envolvidos mais produtivos.
- Normalmente, compilação, teste, implementação e provisionamento automatizados são o ponto de partida típico para equipes que ainda não têm isso implantado.
**Lean**
- Precisamos focar nas entregas de valor ao cliente. Precisamos ser objetivos e enxutos. Precisamos conhecer as nossas limitações e os gargalos do processo. Precisamos ser Lean.
- A mentalidade DevOps vê oportunidades de melhoria contínua em toda parte. identificando as limitações, podemos otimizar o fluxo, entregando mais velocidade e maior eficiência.
**Measurement**
- DevOps é cíclico e infinito. Mensurar e obter métricas é o ponto de partida para novas melhorias, seja para o processo de desenvolvimento, o software produzido ou as regras de negócio.
- Além de gerar conhecimento, métricas criam previsibilidade sobre possíveis incidentes que possam vir a surgir. Assim, temos insumos suficientes para analisar falhas e gerar melhorias constantemente.
**Sharing**
- O compartilhamento de informações, além de ser saudável, auxilia na descentralização de conhecimento em pessoas dos times, evitando que os processos se tornem dependentes.
- Compartilhar conhecimento ajuda na criação de times genéricos, com conhecimentos básicos em diversos assuntos do negócio e tecnologias. Assim, o time se torna autossustentável.
**Os Três Caminhos**
- Flow, FeedBack, Learning
**Flow**
- A otimização do fluxo visa eliminar desperdícios, gargalos no processo, transferência de responsabilidades e tempos de espera. Esse caminho é trilhado entre a demanda e a entrega em produção.
- A chave para este caminho é a aplicação de metodologias ágeis e a automatização dos processos do desenvolvimento à release, como a integração contínua e/ou entrega contínua.
**FeedBack**
- Ciclos rápidos de feedbacks visam resolver problemas o quanto antes, testando tudo, alertando em qualquer falha, considerando todas as métricas coletadas no ambiente produtivo sobre o valor entregado.
- O monitoramento é a chave, ajudando a gerar informações relevantes constantemente. Com feedbacks rápidos, o negócio consegue falhar rápido, e logo retomar o rumo, caso necessário.
**Learning**
- O aprendizado contínuo visa gerar conhecimento através da experimentação. Hipóteses são melhores do que uma certeza imediata. Este caminho é fruto do processo científico e produz segurança psicológica.
- A chave é o trabalho dinâmico, com times realizando experimentos em seu trabalho diário para gerar novas melhorias. Elimine a cultura da culpa e a aumente a colaboração e o compartilhamento de conhecimento.
**Entregando Software**
**Planejamento**
- Microsoft Teams, Draw.io, Balsamiq, Roadmunk, Confluence, Jira (etc...)
**Codificação**
- VisualStudio, GitHub, Sublime Text, Cmder, Git, VsCode, Notepad++ (etc...)
**Construção**
- ContainerD, Docker, NuGet, Npm, Cri-o, .Net Cli, MSBuild (etc...)
**Testes**
- Unit.net, Loader.io, JMeter, Selenium, Runscope, Postman, Sonarqube, Code Climate, Codacy (etc...)
**Release**
- Planejar, Codificar, Construir, Testar, Disponibilizar.
**Deploy**
- Azure Pipelines, CricleCi, AppVeyor, GitLab CI, Travis CI, Jenkins (etc...)
**Operação**
- Kubernetes, Rancher, Microsoft Azure, Puppet, Terraform, CHEF, OpenShift, AWS (etc...)
**Monitorar**
- Datadog, Prometheus, AppMetrics, Rollbar, Zabbix, New Relic, Pushover, Seq, Monitis (etc...)
**Continuous Integration**
**CI/CD (Continuous Integrarion e Continunous Deployment)**
**Principais Ferramentas**
- Circleci, Azure Pipelines, Travis CI, AppVeyor. GitLab CI, Jenkins
**Projeto de Exemplo**
- Continuous Integration
- CircleCI (.circleci/config.yml)
- Azure Pipelines (azure-pipelines.yml)
- AppVeyor (appveyor.yml)
**Link GitHub**
**Continuous Inspection**
**Code Quality Analysis Continuous Inspection**
**Principais Ferramentas**
- Sonarqube, Code Climate, Codacy
**Para que servem essas ferramentas?**
Servem para resolver os seguintes itens:
- Complexidade Ciclomática, Código Duplicado, Vulnerabilidades/Code Smell, padronização e Estilo, Débito Técnico, Cobertura de Testes, Métricas, Validando Pull-Requests
Anderson Froes
04/03/2021 13:14