Este documento fornece uma introdução sobre os palestrantes e os tópicos que serão abordados no workshop "Do Zero à Produção". Resume os seguintes pontos essenciais:
1) Apresenta os palestrantes Camila Souza, Danilo Pinotti e Fernanda Larocca e suas experiências;
2) Lista os principais tópicos que serão discutidos, incluindo planejamento, desenvolvimento e deploy;
3) Explica brevemente que as melhores práticas de Scrum serão adotadas, como sprints,
Teoria sobre Analise e Projeto de Informação, Tipos de Usuários, Atribuições do Analista. Revisão do conteúdo e reeditoração dos slids do Prof Edinelson.
Teoria sobre Analise e Projeto de Informação, Tipos de Usuários, Atribuições do Analista. Revisão do conteúdo e reeditoração dos slids do Prof Edinelson.
Palestra que ministrei na Anhanguera SBC sobre Gestão de Projetos.
Sobre Projetos de Software e Metodologias Ágeis, vide este artigo do meu blog:
"Metodologias Ágeis no Desenvolvimento de Projetos de Software" - http://bit.ly/iGr1HU
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
Material para palestra sobre a Metodologia de desenvolvimento Extreme Programming, ministrada no 1º ENDESDISMO - Encontro de Desenvolvimento de Software p/ Dispositivos Móveis - UNOPAR CCET LONDRINA/PR
Scrum uma metodologia ágil paragestão e planejamento de projetos de softwareThiago Reis da Silva
Todos sabem que, a maioria dos projetos de software pode ser frustrante. Prazos de
entrega são raramente cumpridos, a qualidade do software nem sempre é ideal. Scrum
é uma metodologia de desenvolvimento ágil, focada no trabalho em equipe, com equipes auto-gerenciadas e participação ativa do cliente. Outra figura importante é o scrum master, que tem a função de eliminar obstáculos e proporcionar os elementos necessários
para que a equipe tenha o melhor desempenho possível. A rotina de Scrum começa com
o product backlog, lista dos requisitos do projeto, ordenados por prioridade. A partir
desta lista é formado o sprint backlog – requisitos que serão implementados no próximo
sprint (iteração); cada sprint dura cerca de 30 dias e, após seu final, as funcionalida-
des desenvolvidas são validadas pelo product owner (cliente, normalmente) e liberadas,
iniciando-se um novo ciclo.
Design Pattern: Pending Objects com exemplosDanilo Pinotti
Apresentação sobre o padrão de projeto Pending Objects, com exemplos práticos e discussão sobre suas aplicações.
Aprenda mais sobre um dos padrões utilizados no core do Laravel
Palestra que ministrei na Anhanguera SBC sobre Gestão de Projetos.
Sobre Projetos de Software e Metodologias Ágeis, vide este artigo do meu blog:
"Metodologias Ágeis no Desenvolvimento de Projetos de Software" - http://bit.ly/iGr1HU
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
Material para palestra sobre a Metodologia de desenvolvimento Extreme Programming, ministrada no 1º ENDESDISMO - Encontro de Desenvolvimento de Software p/ Dispositivos Móveis - UNOPAR CCET LONDRINA/PR
Scrum uma metodologia ágil paragestão e planejamento de projetos de softwareThiago Reis da Silva
Todos sabem que, a maioria dos projetos de software pode ser frustrante. Prazos de
entrega são raramente cumpridos, a qualidade do software nem sempre é ideal. Scrum
é uma metodologia de desenvolvimento ágil, focada no trabalho em equipe, com equipes auto-gerenciadas e participação ativa do cliente. Outra figura importante é o scrum master, que tem a função de eliminar obstáculos e proporcionar os elementos necessários
para que a equipe tenha o melhor desempenho possível. A rotina de Scrum começa com
o product backlog, lista dos requisitos do projeto, ordenados por prioridade. A partir
desta lista é formado o sprint backlog – requisitos que serão implementados no próximo
sprint (iteração); cada sprint dura cerca de 30 dias e, após seu final, as funcionalida-
des desenvolvidas são validadas pelo product owner (cliente, normalmente) e liberadas,
iniciando-se um novo ciclo.
Design Pattern: Pending Objects com exemplosDanilo Pinotti
Apresentação sobre o padrão de projeto Pending Objects, com exemplos práticos e discussão sobre suas aplicações.
Aprenda mais sobre um dos padrões utilizados no core do Laravel
Apresentação falando sobre aplicações web estáticas junto com opções gratuitas para hospedagem.
Esta apresentação também aborda um pouco sobre deploy de aplicações.
Apresentação preparada para a primeira apresentação na Softweek 2.
Por Danilo Pinotti e Marcelo Vichar Jr.
Minicurso ministrado durante a semana acadêmica de TSI (UTFPR/Guarapuava) que introduz as pessoas ao mundo das Expressões Regulares (REGEX).
Este minicurso foi produzido e apresentado por mim juntamente com Matheus Mazepa.
Talk sobre testes automatizados. Parte 1/2Danilo Pinotti
Talk sobre testes automatizados com Laravel.
Esta apresentação introduz alguns conceitos de testes automatizados com Laravel e se desenvolve explicando testes unitários.
Link para o código de exemplo: https://github.com/danilopinotti/unit-test-examples
Nestes slides apresento algumas técnicas utilizadas para deixar aplicações Laravel mais rápidas. Muitas destas técnicas precisam ser utilizadas com cuidado.
Existem alguns trechos de código inspirados na palestra de cache do Zizaco
3. Danilo Pinotti
- danilopinotti.com.br
- github.com/danilopinotti
Arquiteto de Software (PUC MINAS, 2022)
Tecnólogo em Sistemas para Internet (UTFPR, 2017)
Desenvolvedor Sênior na empresa Let’s Sistemas
(Atualmente)
Co-fundador e Desenvolvedor Web/IoT na Trigy
(Atualmente)
6. Tópicos
Planejamento
- Primeiro contato com o Cliente
- Entrevista com o Cliente
- Planejamento
- Definição das tarefas e metodologia de trabalho
- Documentação e Diagramas
Desenvolvimento
- Configuração das ferramentas (IDE, DBeaver,
repositórios, JIRA, Git, Git Flow, etc)
- Definição das tecnologias e arquitetura do projeto
- Configuração do ambiente de desenvolvimento
(Docker, NPM, NGROK, etc)
- Modelagem dos dados/banco de dados
- Implementação do sistema junto com seus
respectivos testes
7. Tópicos
Deploy
- O que é?
- Definição dos ambientes
- Opções de CSP (cloud)
- Serviços e Ferramentas
- Processo de deploy
- Validação com o Cliente
- Entrega contínua
- Fluxo de entrega
8. Tópicos
- (D) Introdução
- (F) Primeiro contato com o Cliente
- (F) Entrevista com o Cliente
- (F) Planejamento
- (F) Definição das tarefas e metodologia de
trabalho (Scrum)
- (F) Documentação e Diagramas
- (C) Configuração das ferramentas (IDE, DBeaver,
repositórios, JIRA, Git, Git Flow, etc)
- (C) Definição das tecnologias e arquitetura do
projeto
- (C) Configuração do ambiente de
desenvolvimento (Docker, NPM, NGROK, etc)
- (C) Modelagem dos dados/banco
- (C) Implementação do sistema junto com seus
respectivos testes
- (D) Definição do ambiente de produção (AWS?
Digital Ocean?)
- (D) Configuração do ambiente de produção
- (D) Deploy
- (D) Validação com Cliente
- (D) Fluxo de entrega (repetição)
9. Primeiro contato
com o Cliente
Estabelecendo a Comunicação Inicial;
Compreendendo as Necessidades;
Construindo Relacionamento;
10. Estabelecendo a Comunicação Inicial
Inicialmente, entre em contato com o cliente de forma profissional e cordial.
Isso pode incluir enviar um e-mail introdutório, fazer uma ligação telefônica
para marcar uma reunião ou até mesmo visitar o cliente pessoalmente,
dependendo da natureza do projeto e da localização do cliente.
11. Construindo Relacionamento
Construir um relacionamento de confiança envolve ser profissional,
responder prontamente às comunicações do cliente e demonstrar empatia.
Mostre ao cliente que você está comprometido em entender e atender às
suas necessidades.
12. Compreendendo as Necessidades
Durante o primeiro contato, concentre-se em ouvir atentamente o cliente.
Faça perguntas abertas para entender o problema que o software deve
resolver, as metas do projeto e as expectativas.
Anote todas as informações relevantes.
14. Conduzindo Entrevistas Eficientes
Planeje a entrevista com antecedência.
Prepare uma lista de perguntas relevantes e mantenha a entrevista focada
nos objetivos do projeto.
Certifique-se de que todas as partes interessadas estejam presentes ou
sejam representadas.
15. Exploração de Requisitos
Durante a entrevista, aprofunde-se nos requisitos do projeto.
Pergunte sobre os recursos desejados, os problemas a serem resolvidos, as
restrições de tempo e orçamento, e quaisquer requisitos regulatórios ou de
segurança que possam ser aplicáveis.
Essa parte é de extrema importância porque, muitas vezes, nem mesmo o
cliente sabe exatamente o que ele deseja no projeto.
17. Estabelecendo Objetivos
Uma solução que tem tudo a ver com metas é a metodologia SMART,
publicada George Doran em seu artigo “Há uma Maneira Inteligente de
Escrever Metas e Objetivos da Administração”.
A proposta é fazer com que o usuário escolha metas específicas,
mensuráveis, atingíveis, realistas, e acima de tudo, realizáveis.
Para isso, ao escolher as atividades, deve-se levar em consideração o
tamanho de toda a demanda, o seu tempo de execução, seu grau de
importância e se ela é alcançável no tempo estabelecido.
18. Alocação de Recursos
Identifique as pessoas, equipamentos, ferramentas e recursos de
software necessários para o projeto.
Isso inclui definir a equipe, hardware, software e quaisquer outros
ativos necessários.
19. Cronograma de Sequência de Tarefas
Crie um cronograma que inclua todas as atividades do projeto, atribuindo
datas de início e término a cada tarefa.
Estabeleça marcos importantes e identifique quais tarefas precisam ser
concluídas antes de outras.
20. Definição das Tarefas e
Metodologia de Trabalho
Principais Metodologias de Trabalho;
Desmembramento de Tarefas;
Adoção do Scrum;
Ferramentas Scrum;
21. Principais Metodologias de Trabalho
Kanban: Ele usa quadros Kanban para visualizar o trabalho em progresso e
limitar o trabalho em andamento. O objetivo é maximizar a eficiência,
minimizar o desperdício e melhorar a capacidade de resposta às mudanças.
Extreme Programming (XP): É uma metodologia que enfatiza a qualidade do
software, a comunicação eficaz e a entrega rápida. Ele inclui práticas como
desenvolvimento orientado a testes (TDD), integração contínua, programação
em pares e design simples.
Scrum: Ele se baseia em ciclos de desenvolvimento chamados "sprints" e
enfatiza a colaboração, transparência e adaptação contínua.
22. Desmembramento de Tarefas
Divida o projeto em tarefas menores e mais gerenciáveis, chamadas de
"histórias de usuário" no Scrum.
Cada história de usuário deve ser independente e entregável.
23. Adoção do Scrum: O que é
O Scrum é uma metodologia de trabalho ágil que é amplamente usada no
desenvolvimento de software, mas também pode ser aplicada em muitos
outros contextos.
Ele se baseia em princípios de transparência, inspeção e adaptação para
gerenciar projetos complexos.
O Scrum é projetado para ser flexível e adaptável, permitindo que as equipes
respondam a mudanças rapidamente.
24. Adoção do Scrum: Principais Conceitos
Sprint: Uma Sprint é um período de tempo fixo (geralmente 2 a 4 semanas)
durante o qual a equipe trabalha para entregar um incremento potencialmente
entregável do produto.
Daily: Uma reunião diária curta, na qual a equipe se reúne para compartilhar o
progresso, discutir obstáculos e planejar as atividades para o dia. Deve durar
no máximo 15 minutos.
Product Owner: Ele é o líder ou gerente do projeto, ou seja, é o responsável
pelo objetivo final do produto.
25. Adoção do Scrum: Principais Conceitos
Scrum Master: A sua função é garantir que todas as práticas ágeis sejam
seguidas no decorrer do processo, seguindo as recomendações para uma
execução de qualidade.
História de Usuário: São uma maneira de capturar os requisitos do cliente ou
do usuário de forma simples e eficaz. Elas são geralmente escritas na
perspectiva do usuário e descrevem uma funcionalidade desejada.
Stakeholders: Stakeholders são indivíduos, grupos ou entidades que têm
interesse, influência ou afetação em um projeto, organização ou iniciativa.
26. Ferramentas Scrum - Jira
Desenvolvedor: Atlassian.
Diferenças: O Jira é altamente configurável e é
mais adequado para equipes de
desenvolvimento que desejam uma ferramenta
abrangente para gerenciar projetos complexos.
No entanto, sua interface e configuração podem
ser complexas para equipes menores ou
projetos simples.
28. Ferramentas Scrum - Youtrack
Desenvolvedor: JetBrains.
Diferenças: O YouTrack é altamente
configurável e flexível, sem ser tão complexo
quanto o Jira. É uma boa opção para equipes
que desejam um equilíbrio entre
funcionalidade avançada e usabilidade.
30. Ferramentas Scrum - Trello
Desenvolvedor: Atlassian.
Diferenças: O Trello é mais simples e não é
tão personalizável quanto o Jira e o
YouTrack. Ele é mais adequado para equipes
que não precisam de recursos avançados de
gerenciamento de projetos.
33. Documentação
Crie documentos que descrevam em detalhes todo o processo de
desenvolvimento do projeto.
Isso pode incluir descrições de funcionalidades, requisitos de desempenho,
requisitos de segurança e critérios de aceitação.
34. Diagramas UML
O que é UML?
Uma linguagem de modelagem gráfica amplamente utilizada na engenharia
de software para representar visualmente a estrutura de sistemas complexos.
Para que serve?
Facilitar a comunicação entre os membros da equipe de desenvolvimento,
documentar sistemas, analisar sistemas existentes e projetar novos
sistemas. Os diagramas UML fornecem uma representação visual das
diferentes partes de um sistema e como elas se relacionam.
35. Diagrama de Casos de Uso
O objetivo do diagrama de caso de
uso em UML é demonstrar as
diferentes maneiras que o usuário
pode interagir com um sistema.
36. Diagrama de Classes
Diagramas de classes estão entre os
tipos mais úteis de diagramas UML
pois mapeiam de forma clara a
estrutura de um determinado
sistema ao modelar suas classes,
seus atributos, operações e relações
entre objetos.
37. Diagrama de Sequência
Um diagrama de sequência é uma
espécie de diagrama de interação,
pois descreve como, e em qual
ordem, um grupo de objetos trabalha
em conjunto.
38. Ferramentas de Diagramas UML - Dia
O Dia é uma ferramenta open source
amplamente utilizada para criar diagramas
UML.
Sua facilidade de uso, suporte a uma
variedade de elementos UML e capacidade
de personalização o tornam uma escolha
popular para os profissionais da área.
39. Ferramentas de Diagramas UML - Draw.io
Sua acessibilidade, recursos de colaboração
e ampla gama de opções de exportação o
tornam uma escolha popular para
profissionais de diversas áreas que precisam
criar e compartilhar diagramas visualmente
atraentes.
Além disso, sua natureza de código aberto e
gratuita o torna uma opção acessível para
muitos usuários.
40. Ferramentas de Diagramas UML - Astah
O Astah é uma ferramenta robusta e
altamente versátil que é amplamente
utilizada em engenharia de software e
desenvolvimento de sistemas.
Ele oferece uma variedade de recursos para
modelagem, análise, documentação e
colaboração, tornando-se uma escolha
popular para equipes de desenvolvimento de
software.
41. Ferramentas de Diagramas UML - PlantUML
O PlantUML é uma escolha popular para
desenvolvedores que desejam criar
diagramas UML de maneira rápida e eficiente
usando uma sintaxe de texto simples.
Sua natureza de código aberto, suporte a
diversos tipos de diagramas e facilidade de
integração com editores de texto o tornam
uma ferramenta versátil e acessível para
modelagem UML.
42. Mantenha a Documentação Atualizada
Ao decorrer do projeto, é necessário tratar a documentação como um recurso
vivo, portanto, ela deve ser atualizada conforme as etapas do
desenvolvimento são cumpridas.
44. Configuração das ferramentas
O primeiro passo para seguir com a codificação e o sistema, é a configuração
das ferramentas.
Essa etapa engloba diferentes passos a passos, e é importante ser bem
definida para preparar um ambiente de programação eficaz.
45. IDE
(Ambiente de Desenvolvimento Integrado)
Tem um impacto sobre o desenvolvimento do código, cada IDE oferece
recursos diferentes que podem auxiliar para diferentes casos na
programação.
46. Banco de Dados
A escolha da ferramenta para a administração do banco de dados certa
vai facilitar para a modelagem, interação e consultas no banco.
47. Sistemas de Controle de Versão
Permite criação de várias instâncias do código, o que facilita ao se
trabalhar em equipe, ajudando para que cada pessoa trabalhe sua
parte de forma individual.
48. Git Flow
(Fluxo de desenvolvimento)
Ajuda a manter um ciclo de desenvolvimento estruturado, com
recursos como branches de feature, release e hotfix.
https://docs.cronapp.io/display/CRON2/Fluxo+de+trabalho+Git+flow
49. Repositórios e Gerenciamento de Código
Armazenamento do código-fonte. Ter o seu projeto em um repositório,
ajuda também para a colaboração do projeto e o controle de
versionamento dele.
50. Gerenciamento de Projetos
Crucial para que os objetivos do sistema sejam alcançados, como
também ajudam a manter o prazo e a qualidade de um sistema.
51. Definição das Tecnologias e Arquitetura do projeto
Etapa onde será definido o escopo inicial do sistema.
Nessa fase é importante ter paciência, analisar e validar os requisitos,
para que o seu sistema entregue o esperado.
52. Seleção de Tecnologias
Para o desenvolvimento do sistema, você precisa escolher com quais
tecnologias você irá trabalhar, e para cada problema ou projeto, pode ser
diferente, é crucial analisar e validar o uso.
- Linguagem de programação para web;
- Linguagem de programação para mobile;
- Influência na latência do sistema.
53. Arquitetura do Sistema
Como o sistema será estruturado, nessa etapa leva-se em conta os
requisito e uma análise cuidadosa.
- Estruturas monolíticas;
- Micro serviços;
- Arquitetura serverless.
54. Banco de Dados
Escolher o banco de dados correto com base nos requisitos é crucial
para o sucesso de um projeto.
Cada banco de dados tem suas próprias características, como
desempenho, escalabilidade, segurança e capacidade de
gerenciamento de dados.
55. Configuração do ambiente de desenvolvimento
A configuração do ambiente de desenvolvimento desempenha um papel
crítico na produtividade dos desenvolvedores e na consistência do processo
de desenvolvimento.
- Versionamentos das ferramentas;
- Utilização do docker.
56. Modelagem dos dados/banco de dados
A modelagem de dados e do banco de dados desempenha um papel
fundamental no desenvolvimento de um sistema, uma vez que define como
os dados são organizados, armazenados e acessados.
57. Modelagem dos dados/banco
Modelagem Conceitual
- Primeiro passo importante para entender e definir o escopo e a estrutura geral
de um banco de dados;
- Realizada por meio de diagramas de entidade-relacionamento (ER).
Modelagem Lógica
- Envolve a tradução dos conceitos e entidades da modelagem conceitual em
uma estrutura mais detalhada e precisa;
- Definição das tabelas, seus campos e as chaves primárias e estrangeiras.
Modelagem Física
- Etapa final no projeto de banco de dados;
- Implementação e escolha de tipos de dados, criação de índices, definição de
chaves estrangeiras, alocação de espaço no disco e otimização de consultas
59. Implementação do sistema junto com seus respectivos
testes
A implementação do sistema e seus testes desempenham um papel crítico
no processo de desenvolvimento, uma vez que transformam o design em
código funcional e garantem a qualidade e a confiabilidade do sistema.
60. Desenvolvimento de Código
Com base nos requisitos, definição do projeto e gerenciamento das
atividades, será feito o desenvolvimento do código, é nessa etapa, onde tudo
“ganha vida”.
- Definição de padrões de codificação;
61. Testes do Sistema
Os testes do sistema são fundamentais na garantia da qualidade e
confiabilidade do software.
- Identificação e correção de falhas;
- Economização de tempo;
62. Testes
https://allanacastenharo.medium.com/pir%C3%
A2mide-de-testes-3db39e4e8b42
Base - Testes de Unidade
- Teste de qualquer unidade individual
do do código.
Meio - Testes de Integração
- Têm como objetivo testar um conjunto
de unidades interagindo entre si.
Topo - Testes de Ponta a Ponta
- Têm como objetivo principal simular o
comportamento de um usuário final em
nossa aplicação.
64. No que diz respeito a software e desenvolvimento web significa enviar
mudanças ou atualizações de um ambiente de implantação para outro,
podendo ser o principal (produção) ou algum intermediário.
- Desenvolvimento -> Homologação;
- Homologação -> Produção;
- etc.
Estratégias
- Rolling
- Blue-Green
- Canary
Deploy ou Deployment: O que é?
65. Quais ambientes o sistema precisa?
Local e Desenvolvimento
- Ambiente que está sempre atualizado com o código de desenvolvimento.
Normalmente instável.
Deploy: Definição dos ambientes
66. Homologação / Testes / Staging
- Ambiente onde outros membros da equipe conseguem acesso para
poderem realizar testes e validações das funcionalidades desenvolvidas.
- Este ambiente também pode ser utilizado para homologação de alguma
integração, logo, ocasionalmente, terceiros também têm acesso.
- Busca estabilidade
Deploy: Definição dos ambientes
67. Produção
- Ambiente de produção, onde, de fato, o sistema será utilizado pelos
usuários reais.
- Estável
- Maior esforço na configuração da infra-estrutura
- Disponibilidade
- Escalabilidade Horizontal ou Vertical
- Consistência
- Segurança
- Backup
Deploy: Definição dos ambientes
69. Deploy: Estratégia Rolling
Características Principais:
- Mais simples de ser adotada
- Subir atualização serviço por serviço
- Versão antiga só é totalmente desligada
quando toda a migração foi concluída
Vantagens:
- Mais simples de ser feito
- Não há muito aumento no custo
operacional
Desvantagens:
- Mais suscetível à instabilidades
70. Deploy: Estratégia Blue-Green
Características Principais:
- Um ambiente inteiro novo é configurado e
testado.
- Ao final dos testes, o Load Balancer deixa de
apontar para o ambiente antigo (blue) e passa
a apontar para o ambiente novo (green).
Vantagens:
- Praticamente zero downtime
- Testes em ambiente de produção, antes de
efetivamente começar a ser utilizado pelos
usuários
Desvantagens:
- Custo
71. Deploy: Estratégia Canary
Características Principais:
- Mais complexa
- Testar versões ao poucos em produção
com os usuários reais
- Feature-flag
- Liberar funcionalidades para uma
porcentagem de usuários
- Ex: usuários com mais de 30 anos,
ou somente usuários com mais de
um ano de cadastro na plataforma
- Ao final, todos os usuários recebem a
atualização.
72. - Amazon Web Services(AWS)
- Google Cloud Platform (GCP)
- Microsoft Azure
- Oracle Cloud Infrastructure (OCI)
- Digital Ocean
- Heroku
- Linode
- etc
Deploy: Opções de Cloud (CSP)
73. - Execução dos testes automatizados, todos precisam passar;
- Definição da versão (Semantic Versioning);
- Criação da build localmente e/ou no repositório de código
- Upload para os servidores seguindo a estratégia adequada
- Validação interna e com o cliente
Deploy: Processo de deploy
75. O principal objetivo da validação é assegurar que o sistema em questão
atenda todas as características de sua especificação, identificando se estão
de acordo com as necessidades do cliente.
A validação é importante ao final de cada deploy, pois, quanto mais o
desenvolvimento se estende, mais caro será corrigir requisitos não
atendidos.
Deploy: Validação com o Cliente
76. Ferramentas
- Terraform: Provisionamento de infra-estrutura utilizando código (IaC)
- Terragrunt: Facilita gerenciamento de vários projetos utilizando Terraform
- Ansible: Automação de tarefas em TI
- Termius: Terminal com funcionalidades extras para facilitar gerenciamento de
servidores
Serviços
- Cloudflare: “Canivete suiço” de serviços voltados à ambientes cloud, como
Proxy, DNS, Roteamento, otimização, etc.
- Forge: Gerenciamento de servidores em nuvem
Deploy: Serviços e Ferramentas
77. Telemetria
- New Relic
- Open Telemetry
- Zabbix
- Prometheus + Grafana
Gerenciamento de Erros
- Sentry
- Bugsnag
- Etc
Extra: Monitoramento