Dicas práticas de abordagem adotada em case de migração de legado e como melhorar aplicações legadas deixando sistemas mais estáveis para suportar o tempo de desenvolvimento de novas aplicações
Kleber Silva - kleber@pise4.com.br
Nessa apresentação iremos atualizar uma palestra realizada no CMG em 2014 e analisar a evolução do Backup para a Nuvem, avaliando as diferenças e pré-requisitos das arquiteturas disponíveis, para definir melhores práticas de desempenho e capacidade para a implementação de uma solução para empresas. Adicionalmente iremos explorar as alternativas de Backup de dados na Nuvem, quando a aplicação já está sendo executada remotamente.
Este documento discute os benefícios de usar bancos de dados NoSQL e apresenta vários estudos de caso de empresas que migraram com sucesso para sistemas NoSQL como MongoDB e Redis. Ele também aborda desafios comuns como importação e exportação de dados, recuperação em caso de falha e questões de escalabilidade.
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
Esta apresentação foi feita para um minicurso na Escola Politécnica da USP administrado pela Infosimples. Foram discutidos temas de Infraestrutura com foco em escalabilidade e redundância. Também foram apresentadas as opções comerciais de contratação de infraestrutura. Por fim, uma atividade prática de publicação (deployment) de uma aplicação web foi realizada.
https://infosimples.com/artigos/como-publicar-uma-aplicacao-web-usando-aws
O documento apresenta uma palestra sobre computação em nuvem, definindo-a como recursos de TI fornecidos como serviço via internet. Explica os tipos de nuvem pública, privada e híbrida e os pilares da flexibilidade, escalabilidade e confiabilidade. Também discute as vantagens como acesso remoto e controle de gastos versus as desvantagens como dependência da internet.
1) O documento discute containers, microserviços e orquestração, comparando aplicações monolíticas com aplicações distribuídas em containers.
2) Kubernetes é introduzido como uma plataforma para orquestrar containers em nuvem, fornecendo recursos como balanceamento de carga, escalabilidade e disponibilidade.
3) Os princípios da aplicação de 12 fatores são apresentados e como eles se aplicam ao desenvolvimento de aplicações nativas da nuvem usando containers e Kubernetes.
O documento discute o desenvolvimento em nuvem, definindo-o como computação remota acessada pela internet. Apresenta os principais modelos de serviço (SaaS, PaaS e IaaS), tecnologias como MapReduce, Amazon EC2, Eucalyptus e plataformas como Google App Engine e Microsoft Azure. Por fim, discute aplicações, desafios e referências sobre computação em nuvem.
PRODUTIVIDADE E BAIXO CONSUMO DE RECURSOS COMPUTACIONAIS UTILIZANDO O MICRON...Rafael Holanda
O documento discute como o framework Micronaut pode ser usado para criar microserviços com baixo consumo de recursos computacionais. O Micronaut compila o código Java antecipadamente para melhorar o tempo de inicialização e reduzir o uso de memória. Ele também suporta características nativas da nuvem como descoberta de serviço e escalabilidade elástica.
A apresentação discute conceitos básicos de computação em nuvem, incluindo sua definição como o uso compartilhado de recursos computacionais via internet, exemplos de principais empresas como Amazon e Microsoft, e os modelos de implantação como nuvem pública e privada.
Kleber Silva - kleber@pise4.com.br
Nessa apresentação iremos atualizar uma palestra realizada no CMG em 2014 e analisar a evolução do Backup para a Nuvem, avaliando as diferenças e pré-requisitos das arquiteturas disponíveis, para definir melhores práticas de desempenho e capacidade para a implementação de uma solução para empresas. Adicionalmente iremos explorar as alternativas de Backup de dados na Nuvem, quando a aplicação já está sendo executada remotamente.
Este documento discute os benefícios de usar bancos de dados NoSQL e apresenta vários estudos de caso de empresas que migraram com sucesso para sistemas NoSQL como MongoDB e Redis. Ele também aborda desafios comuns como importação e exportação de dados, recuperação em caso de falha e questões de escalabilidade.
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
Esta apresentação foi feita para um minicurso na Escola Politécnica da USP administrado pela Infosimples. Foram discutidos temas de Infraestrutura com foco em escalabilidade e redundância. Também foram apresentadas as opções comerciais de contratação de infraestrutura. Por fim, uma atividade prática de publicação (deployment) de uma aplicação web foi realizada.
https://infosimples.com/artigos/como-publicar-uma-aplicacao-web-usando-aws
O documento apresenta uma palestra sobre computação em nuvem, definindo-a como recursos de TI fornecidos como serviço via internet. Explica os tipos de nuvem pública, privada e híbrida e os pilares da flexibilidade, escalabilidade e confiabilidade. Também discute as vantagens como acesso remoto e controle de gastos versus as desvantagens como dependência da internet.
1) O documento discute containers, microserviços e orquestração, comparando aplicações monolíticas com aplicações distribuídas em containers.
2) Kubernetes é introduzido como uma plataforma para orquestrar containers em nuvem, fornecendo recursos como balanceamento de carga, escalabilidade e disponibilidade.
3) Os princípios da aplicação de 12 fatores são apresentados e como eles se aplicam ao desenvolvimento de aplicações nativas da nuvem usando containers e Kubernetes.
O documento discute o desenvolvimento em nuvem, definindo-o como computação remota acessada pela internet. Apresenta os principais modelos de serviço (SaaS, PaaS e IaaS), tecnologias como MapReduce, Amazon EC2, Eucalyptus e plataformas como Google App Engine e Microsoft Azure. Por fim, discute aplicações, desafios e referências sobre computação em nuvem.
PRODUTIVIDADE E BAIXO CONSUMO DE RECURSOS COMPUTACIONAIS UTILIZANDO O MICRON...Rafael Holanda
O documento discute como o framework Micronaut pode ser usado para criar microserviços com baixo consumo de recursos computacionais. O Micronaut compila o código Java antecipadamente para melhorar o tempo de inicialização e reduzir o uso de memória. Ele também suporta características nativas da nuvem como descoberta de serviço e escalabilidade elástica.
A apresentação discute conceitos básicos de computação em nuvem, incluindo sua definição como o uso compartilhado de recursos computacionais via internet, exemplos de principais empresas como Amazon e Microsoft, e os modelos de implantação como nuvem pública e privada.
Microserviços - Universidade Metodista - EETI 2016Renato Groff
Tópicos abordados nesta apresentação realizada durante o a semana EETI 2016 da Universidade Metodista - São Paulo (02/05/2016):
- Aplicações Monolíticas
- Serviços: uma visão geral
- Arquitetura de Microserviços
Este documento apresenta conceitos de arquitetura de software para aplicações Node.js, incluindo padrões como camadas de domínio, repositório e controlador separados, testes automatizados e implantações seguras. O objetivo é construir aplicações escaláveis e de fácil manutenção aplicando boas práticas de engenharia de software.
O documento discute programação reativa e serverless no Azure. Na primeira parte, fornece contexto histórico sobre a evolução dos sistemas e mudanças nos paradigmas de programação. A segunda parte explica conceitos de programação reativa e como ela se relaciona com programação funcional. A terceira parte introduz o tópico de serverless e discute seu espectro de uso na nuvem.
Vantagens e desvantagens de uma arquitetura microservicesFábio Rosato
Este documento discute as vantagens e desvantagens de uma arquitetura de microserviços. As principais vantagens incluem a capacidade de implantar serviços independentemente, permitindo entregas contínuas mais rápidas. As principais desvantagens incluem a complexidade operacional adicional e a consistência eventual de dados entre serviços. O documento fornece dicas para lidar com desafios como integração, diversidade tecnológica e segurança.
Introdução a arquitetura de sistemas com .NETMário Meyrelles
Esta apresentação é a parte teórica do meu curso de introdução ao desenvolvimento de sistemas com a plataforma .NET. Esta parte do curso busca explicar como são feitos sistemas antigos e como se deve pensar em sistemas novos usando as tecnologias atuais.
[1] O documento discute um projeto de gerenciamento de serviços e controle de falhas em redes de telecomunicações. [2] O projeto visa integrar sistemas e direcionar esforços para que a empresa possa acompanhar o mercado e manter a qualidade dos serviços durante o crescimento. [3] O projeto sugere técnicas para que a infraestrutura possa crescer ou diminuir mantendo a qualidade dos serviços.
O projeto visa preparar um modelo de fluxo de serviço que atua desde detecção de um evento seja manual ou sistemica até o encerramento e registro do evento, gestão de mudanças e atualização automática do ecosistema de TI.
O documento analisa criticamente o NoSQL, questionando se ele é realmente novo e se é tão fácil e rápido quanto afirma. Também levanta dúvidas sobre se o NoSQL é a melhor opção para armazenamento de big data a longo prazo e se é sempre mais barato que bancos de dados tradicionais.
O documento apresenta uma palestra sobre arquitetura de software no evento .NET Architects Days 2013. A palestra aborda tópicos como machine learning, arquitetura RESTful, desempenho de APIs, testes, acessibilidade, programação concorrente e funcional.
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
O objetivo desta palestra é mostrar como é possível evoluir e reescrever partes de uma aplicação legada com mais 5 anos em produção utilizando técnicas de uma parte Domain Driven Design conhecida como Strategic Design. É uma aplicação web escrita em Python e Django que suporta a operação de um grupo focado em medicina do trabalho, com clínicas espalhadas pelo país.
Nesta palestra vamos mostrar uma abordagem que pode ajudar times que precisam lidar com aplicações legadas grandes e complexas no caminho da modernização.
Este documento discute como o Oracle Database 11g Release 2 fornece alta disponibilidade através de proteção contra tempo de inatividade não planejado e planejado, incluindo proteção contra falhas no servidor e nos dados, reconfiguração on-line e upgrades. Ele destaca as vantagens da abordagem integrada da Oracle para alta disponibilidade em comparação com soluções pontuais de diferentes fornecedores.
A TECLA surgiu em 2008 como provedora de hospedagem de sites e email marketing. Ela possui 2 datacenters ativos e um em construção, além de 900 servidores cloud. Seu objetivo é ser líder em cloud computing no Brasil, oferecendo alta qualidade e suporte técnico. A TECLA fornece serviços como cloud computing, email marketing e hospedagem de sites.
O documento descreve os princípios da Clean Architecture, uma estratégia arquitetural que promove o desacoplamento entre as regras de negócio de uma aplicação e recursos externos. A Clean Architecture define camadas lógicas com entidades, casos de uso e adaptadores de interface que isolam as regras de negócio de tecnologias como bancos de dados e frameworks. Isso permite mudanças nesses recursos sem afetar o código de domínio e aumenta a testabilidade.
Este documento apresenta um workshop sobre arquitetura de software orientada a serviços (SOA), microsserviços e DevOps. O workshop discute conceitos como contratos de serviço, versionamento, governança em SOA, microsserviços, isolamento, log centralizado e padrões de arquitetura como REST. O documento também apresenta casos reais e ferramentas open source para desenvolvimento, integração contínua e monitoramento.
1) O documento discute como os appliances de banco de dados podem ajudar os departamentos de TI a atender às necessidades empresariais de forma mais simples, otimizada e a um preço acessível.
2) Os appliances de banco de dados simplificam a implementação, reduzindo o tempo de colocar um banco de dados em produção de dias para 90 minutos.
3) Esses appliances também otimizam o desempenho consolidando hardware, software, rede e armazenamento em uma única caixa pré-configurada.
Este documento fornece um resumo de três frases ou menos de cada um dos seguintes tópicos cobertos:
1) Novas tecnologias, atualizações e lançamentos de produtos para bancos de dados;
2) Conceitos e diretrizes para aumentar o desempenho de comandos SQL;
3) Definição, implementação e utilização de modelos UML.
O documento resume conceitos sobre Software como Serviço (SaaS), incluindo suas vantagens para fornecedores e clientes, modelos de negócios e desafios. É apresentado um estudo de caso sobre a implantação de um sistema integrado baseado em SaaS em uma pequena empresa de engenharia, destacando os benefícios obtidos, como redução de custos e flexibilidade. Finalmente, exemplos práticos de uso do SaaS são mostrados.
O documento discute o uso de Test Driven Development (TDD) e Integração Contínua no desenvolvimento de software. Ele apresenta os benefícios dessas técnicas, como aumento de produtividade e qualidade do software. O documento também descreve o processo de configurar um servidor de integração contínua para automatizar builds e testes durante o desenvolvimento.
1) A palestra apresentará o uso de Docker no desenvolvimento .NET, incluindo como criar imagens e contêineres para aplicações .NET e como orquestrá-los com Docker Compose.
2) O palestrante Marcio Nizzola explicará o que é Docker e como funciona a virtualização de contêineres, em seguida demonstrará a criação de uma aplicação .NET usando Docker.
3) A aplicação .NET demonstrará o uso de contêineres Docker para hospedar bancos de dados, filas de mensagens e a própria aplicação .
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...Dextra Sistemas / Etec Itu
O documento apresenta como construir uma API profissional em .NET 7 usando Minimal APIs. Ele discute 8 melhorias para a API: 1) organização dos endpoints em classes separadas; 2) uso de Route Groups; 3) configurações personalizadas; 4) injeção de dependência; 5) implementação de logs; 6) health checks; 7) cache de saída; e 8) limitação de taxa de requisição. O documento fornece exemplos de código para cada melhoria e conclui com referências para aprender mais.
Mais conteúdo relacionado
Semelhante a Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Microserviços - Universidade Metodista - EETI 2016Renato Groff
Tópicos abordados nesta apresentação realizada durante o a semana EETI 2016 da Universidade Metodista - São Paulo (02/05/2016):
- Aplicações Monolíticas
- Serviços: uma visão geral
- Arquitetura de Microserviços
Este documento apresenta conceitos de arquitetura de software para aplicações Node.js, incluindo padrões como camadas de domínio, repositório e controlador separados, testes automatizados e implantações seguras. O objetivo é construir aplicações escaláveis e de fácil manutenção aplicando boas práticas de engenharia de software.
O documento discute programação reativa e serverless no Azure. Na primeira parte, fornece contexto histórico sobre a evolução dos sistemas e mudanças nos paradigmas de programação. A segunda parte explica conceitos de programação reativa e como ela se relaciona com programação funcional. A terceira parte introduz o tópico de serverless e discute seu espectro de uso na nuvem.
Vantagens e desvantagens de uma arquitetura microservicesFábio Rosato
Este documento discute as vantagens e desvantagens de uma arquitetura de microserviços. As principais vantagens incluem a capacidade de implantar serviços independentemente, permitindo entregas contínuas mais rápidas. As principais desvantagens incluem a complexidade operacional adicional e a consistência eventual de dados entre serviços. O documento fornece dicas para lidar com desafios como integração, diversidade tecnológica e segurança.
Introdução a arquitetura de sistemas com .NETMário Meyrelles
Esta apresentação é a parte teórica do meu curso de introdução ao desenvolvimento de sistemas com a plataforma .NET. Esta parte do curso busca explicar como são feitos sistemas antigos e como se deve pensar em sistemas novos usando as tecnologias atuais.
[1] O documento discute um projeto de gerenciamento de serviços e controle de falhas em redes de telecomunicações. [2] O projeto visa integrar sistemas e direcionar esforços para que a empresa possa acompanhar o mercado e manter a qualidade dos serviços durante o crescimento. [3] O projeto sugere técnicas para que a infraestrutura possa crescer ou diminuir mantendo a qualidade dos serviços.
O projeto visa preparar um modelo de fluxo de serviço que atua desde detecção de um evento seja manual ou sistemica até o encerramento e registro do evento, gestão de mudanças e atualização automática do ecosistema de TI.
O documento analisa criticamente o NoSQL, questionando se ele é realmente novo e se é tão fácil e rápido quanto afirma. Também levanta dúvidas sobre se o NoSQL é a melhor opção para armazenamento de big data a longo prazo e se é sempre mais barato que bancos de dados tradicionais.
O documento apresenta uma palestra sobre arquitetura de software no evento .NET Architects Days 2013. A palestra aborda tópicos como machine learning, arquitetura RESTful, desempenho de APIs, testes, acessibilidade, programação concorrente e funcional.
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
O objetivo desta palestra é mostrar como é possível evoluir e reescrever partes de uma aplicação legada com mais 5 anos em produção utilizando técnicas de uma parte Domain Driven Design conhecida como Strategic Design. É uma aplicação web escrita em Python e Django que suporta a operação de um grupo focado em medicina do trabalho, com clínicas espalhadas pelo país.
Nesta palestra vamos mostrar uma abordagem que pode ajudar times que precisam lidar com aplicações legadas grandes e complexas no caminho da modernização.
Este documento discute como o Oracle Database 11g Release 2 fornece alta disponibilidade através de proteção contra tempo de inatividade não planejado e planejado, incluindo proteção contra falhas no servidor e nos dados, reconfiguração on-line e upgrades. Ele destaca as vantagens da abordagem integrada da Oracle para alta disponibilidade em comparação com soluções pontuais de diferentes fornecedores.
A TECLA surgiu em 2008 como provedora de hospedagem de sites e email marketing. Ela possui 2 datacenters ativos e um em construção, além de 900 servidores cloud. Seu objetivo é ser líder em cloud computing no Brasil, oferecendo alta qualidade e suporte técnico. A TECLA fornece serviços como cloud computing, email marketing e hospedagem de sites.
O documento descreve os princípios da Clean Architecture, uma estratégia arquitetural que promove o desacoplamento entre as regras de negócio de uma aplicação e recursos externos. A Clean Architecture define camadas lógicas com entidades, casos de uso e adaptadores de interface que isolam as regras de negócio de tecnologias como bancos de dados e frameworks. Isso permite mudanças nesses recursos sem afetar o código de domínio e aumenta a testabilidade.
Este documento apresenta um workshop sobre arquitetura de software orientada a serviços (SOA), microsserviços e DevOps. O workshop discute conceitos como contratos de serviço, versionamento, governança em SOA, microsserviços, isolamento, log centralizado e padrões de arquitetura como REST. O documento também apresenta casos reais e ferramentas open source para desenvolvimento, integração contínua e monitoramento.
1) O documento discute como os appliances de banco de dados podem ajudar os departamentos de TI a atender às necessidades empresariais de forma mais simples, otimizada e a um preço acessível.
2) Os appliances de banco de dados simplificam a implementação, reduzindo o tempo de colocar um banco de dados em produção de dias para 90 minutos.
3) Esses appliances também otimizam o desempenho consolidando hardware, software, rede e armazenamento em uma única caixa pré-configurada.
Este documento fornece um resumo de três frases ou menos de cada um dos seguintes tópicos cobertos:
1) Novas tecnologias, atualizações e lançamentos de produtos para bancos de dados;
2) Conceitos e diretrizes para aumentar o desempenho de comandos SQL;
3) Definição, implementação e utilização de modelos UML.
O documento resume conceitos sobre Software como Serviço (SaaS), incluindo suas vantagens para fornecedores e clientes, modelos de negócios e desafios. É apresentado um estudo de caso sobre a implantação de um sistema integrado baseado em SaaS em uma pequena empresa de engenharia, destacando os benefícios obtidos, como redução de custos e flexibilidade. Finalmente, exemplos práticos de uso do SaaS são mostrados.
O documento discute o uso de Test Driven Development (TDD) e Integração Contínua no desenvolvimento de software. Ele apresenta os benefícios dessas técnicas, como aumento de produtividade e qualidade do software. O documento também descreve o processo de configurar um servidor de integração contínua para automatizar builds e testes durante o desenvolvimento.
Semelhante a Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola (20)
1) A palestra apresentará o uso de Docker no desenvolvimento .NET, incluindo como criar imagens e contêineres para aplicações .NET e como orquestrá-los com Docker Compose.
2) O palestrante Marcio Nizzola explicará o que é Docker e como funciona a virtualização de contêineres, em seguida demonstrará a criação de uma aplicação .NET usando Docker.
3) A aplicação .NET demonstrará o uso de contêineres Docker para hospedar bancos de dados, filas de mensagens e a própria aplicação .
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...Dextra Sistemas / Etec Itu
O documento apresenta como construir uma API profissional em .NET 7 usando Minimal APIs. Ele discute 8 melhorias para a API: 1) organização dos endpoints em classes separadas; 2) uso de Route Groups; 3) configurações personalizadas; 4) injeção de dependência; 5) implementação de logs; 6) health checks; 7) cache de saída; e 8) limitação de taxa de requisição. O documento fornece exemplos de código para cada melhoria e conclui com referências para aprender mais.
O documento resume uma palestra sobre o uso de containers Docker no desenvolvimento .NET. A palestra inclui uma introdução ao Docker e como ele é usado, uma demonstração de uma aplicação .NET rodando em containers Docker e questões frequentes sobre Docker.
O documento descreve como criar uma API de geolocalização minimal usando SQL e C# para armazenar e consultar dados geoespaciais. A API usa os tipos de dados geography e geometry do SQL para armazenar pontos e polígonos e métodos como STIntersects para consultas espaciais. A API é implementada usando a abordagem de API minimal do .NET sem controllers, com endpoints no Program.cs e acesso aos dados via Dapper.
Mvp conf 2021 - Criando uma Minimal API para serviços de Geolocalização com S...Dextra Sistemas / Etec Itu
Este documento descreve como criar uma API minimal para serviços de geolocalização utilizando SQL e C#. Resume-se em 3 frases:
1) Apresenta como armazenar dados geográficos como pontos e polígonos no banco de dados SQL Server utilizando os tipos de dados geometry e geography.
2) Detalha como construir uma API minimal em .NET para realizar consultas espaciais utilizando métodos como STIntersects para buscar pontos dentro de polígonos.
3) Fornece exemplos de consultas SQL para localizar lugares dentro
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
2. Márcio R. Nizzola
Tech Lead na CI&T, com foco em .NET.
Formado em Análise de Sistemas e MBA em Gestão de
Projetos.
Professor na Etec de Itu desde 2008, atuando nos
cursos técnicos da área de tecnologia, ministrando
disciplinas de programação, bancos de dados e
projetos de TCC.
Desenvolvendo software desde 1992.
Membro fundador da comunidade Itu Developers.
3. Esta palestra é um compilado de
casos comuns, boas práticas e
qualquer semelhança com o
ambiente, pessoas ou casos é mera
coincidência!
Nizzola
4. Todo software assim que é colocado em produção torna-se um
legado!
Ele traz consigo a herança arquitetural de sua época e equipe que o
desenvolveu.
Mudar qualquer coisa é difícil e impacta muitas vezes em limitações
técnicas.
O custo destas manutenções são sempre
Impactados pelas características
arquiteturais e técnicas da aplicação.
O QUE É UM LEGADO ?
6. Segurança
Sistemas antigos são mais
vulneráveis
Problemas comuns
em Legados
Performance
Limitações técnicas do
legado impedem o uso de
cloud e escalabilidade
Custos
A estrutura legada na
maioria das vezes tem
custo maior.
Pessoas
Manutenção do time e
novas contratações mais
difíceis.
Motivação
Manter a equipe motivada
diante das limitações é
sempre um desafio.
Evolução
Nem tudo que se quer
desenvolver é suportado
7. Espera-se que o mercado global de
serviços de modernização de
aplicativos cresça de US $ 11,4 bilhões
em 2020 para US $ 24,8 bilhões em
2025 a uma taxa composta de
crescimento anual (CAGR) de 16,8%
durante o período de previsão.
"Application Modernization Services Market", MarketsandMarkets, julho de 2020
8. COMO SE FAZIA SOFTWARE NO PASSADO ?
POR QUE DEVEMOS MUDAR !
4
Falta de monitoramento
A falta de monitoramento das aplicações
impede a ação rápida das equipes de
suporte, problemas somente são detectados
quando alguém reclama.
2
Bancos de Dados pesados
Era muito comum ter apenas conceito de
bancos de dados SQL based, obrigando a ter
altos custos de licenciamento e suporte à
bancos gigantescos.
6
Sem suporte Mobile
Aplicações desenvolvidas há mais de 10 anos
sequer pensavam na concentração maior de
utilização de aplicações mobile.
3
Ausência de testes
Código com alto acoplamento, regras de
negócio não testáveis e possibilidade de
quebrar a aplicação toda a cada nova
implementação.
1
Aplicações Monolíticas
Tínhamos aplicações monolíticas, sem
separação entre front-end e back-end, com
regras espalhadas no código.
5
Infra-estrutura local
A maioria dos legados foram feitos baseados
na idéia de ter um servidor local onde nele
era implantada a solução, dificultando a
escalabilidade e redundância.
9. Impactos
● Redução de cobranças
na resolução de bugs.
● Percepção dos usuários
em melhorias de
performance,
principalmente com
aumento da demanda
● Diminuição de abertura
de chamados para
deixar equipe livre para
criar novas aplicações
Pontos negativos para
criar tudo novo
● Alto custo
● Tempo de
desenvolvimento
● Complexidade da
tarefa
● Foco do time irá
atrapalhar resolução
de problemas
urgentes
Alternativa
● Resolver problemas
perceptíveis na
aplicação atual,
dando uma
sobrevida ao legado
● Pagar as maiores
dívidas técnicas e
assim facilitar a
correção de bugs
DIFÍCIL DECISÃO:
CRIAR NOVAS APLICAÇÕES OU MELHORÁ-LAS?
10. Não tem como melhorar o que já
temos para suportar o tempo de
desenvolvimento de novas
versões das aplicações?
Evitando perder tempo com
bugs?
Perguntas comuns feitas pela gerência de TI
11. Quais são os maiores problemas
da aplicação atual que
causarão stress enquanto se faz
as novas ?
Pergunta feita pela equipe de desenvolvimento
12. Por que demora tanto para
resolver um bug na versão atual?
Perguntas comuns feitas pela gerência de TI
13. ● Pagar as dívidas que tem o maior custo (juros
mais altos). Exemplo, aquelas que para
desenvolver novas features, obrigam a ter novos
contornos, consumindo sempre mais tempo de
desenvolvimento e aumentando a dívida
● Corrigir aquelas em que por meio de métricas
são as causadoras da maioria dos problemas
reportados
● Aquelas que impedem a evolução técnica de
alguma forma (conteinerização, escalabilidade,
uso de bancos não relacionais, obrigatoriedade
de uso de bibliotecas obsoletas)
DÍVIDAS TÉCNICAS X
14. POR QUE É TÃO DIFICIL RESOLVER DÍVIDAS TÉCNICAS ?
Elas não são visíveis pelos usuários.
Suas correções na maioria das vezes não impactam em mudanças
perceptíveis.
Quem paga a conta não vê valor nisso (apesar de estar gastando bem mais
em cada intervenção no código).
Sempre há outra prioridade.
Como convencer a priorizar ?
● métricas de chamados abertos.
● métricas de entregas de features.
● métricas de qualidade do código.
X
15. Para cada bug corrigido, dois
novos problemas são
introduzidos.
Frases comuns de dev´s : Impacto da falta de testes em legados
X
18. SABEMOS ONDE
QUEREMOS CHEGAR
Quebra de monolito em pequenos serviços
Reescrita de código em pequenos serviços e aos poucos ir segregando as
aplicações em pequenos serviços. (Strangle Pattern)
Divisão da aplicação em domínios distintos
A equipe de desenvolvimento pode focar em cada domínio do sistema
separadamente e assim entregar as melhorias em partes, sem precisar ter
conhecimento do todo..
Evolução tecnológica
Utilizar novos conceitos como conteinerização, bancos não relacionais,
serverless, frameworks atualizados, padrões de projeto e TDD.
19. Ok agora que já sabem como
fazer, quando tudo isso fica
pronto ? Já posso mandar o
marketing divulgar que em
janeiro teremos um site novo ?
(frase normalmente dita em
outubro)
Perguntas comuns feitas pela gerência de TI
21. Que tal melhorar a aplicação
atual para suportar o tempo de
desenvolvimento da nova e
assim trabalharmos
tranquilamente ?
Proposta da equipe de desenvolvimento.
22. Monitorar
aplicações
Com a
introdução do
monitoramento
passamos a
saber na hora
quando falhas
graves ocorrem
ou perdas de
performance.
Implantar CI
Poder realizar
deploys com
segurança e
rapidez também
dá maior
confiança na
liberação de
features e
hotfixes.
Gerenciar Jobs
Controlar de
forma
centralizada jobs
em execução e
monitorar as
suas falhas.
Podendo ativar e
desativá-los
quando
necessário.
Plano de SCM
Uma política
clara e
estabelecida
com o time
garante que não
haja perdas
inconsistências
no código.
AÇÕES INICIAIS:
INFRAESTRUTURA
META: GARANTIR A ESTABILIDADE DA APLICAÇÃO
23. Com estas mudanças
pudemos conferir maior
confiabilidade à manutenção
do legado e termos métricas
para orientar pontos de
melhoria.
24. Case 1 - Performance em auto complete
Solução: implementação de cache
Situação problema: Usuários reclamando da lentidão
no autocomplete da solução.
Diagnóstico: para formação do conteúdo, há acesso à
um banco de dados SQL com centenas de milhares de
localidades, onde consultas podem levar de 3 a 8
segundos dependendo da combinação textual.
25. Case 1 - Performance em auto complete
Solução: implementação de cache
Métricas: A mesma consulta é disparada
inúmeras vezes no dia com as mesmas
palavras chave.
Proposta de melhoria: Através do uso de
cache, salvar resultados obtidos para as
próximas consultas, deixando a lentidão
apenas para o primeiro usuário a solicitar
a mesma palavra chave.
Resultados: percepção imediata dos usuários
Tempo utilizado na solução: 1 dia
26. Case 2 - Consultas SQL com Serialização XML
Solução: Reescrita das consultas
Situação problema: Lentidão nas consultas ao banco de dados.
Diagnóstico: Identificamos a transformação dos resultados em XML
dentro das consultas e a sua deserialização dentro da aplicação,
causando:
● Maior lentidão na execução das consultas no banco de dados.
● Maior consumo de banda na transferência de dados entre
servidor de banco e a aplicação.
● Consumo de memória e processamento na aplicação ao
alocar espaço para os dados em XML e depois na criação de
coleções de objetos com os dados deserializados.
● Procedures mal escritas, com múltiplos JOINS, algumas com
3000 linhas convertidas para apenas 700 linhas.
27. Case 2 - Consultas SQL com Serialização XML
Solução: Reescrita de consultas SQL com
implementação do Dapper no C#.
Resultados:
● Percepção de melhora
no desempenho
imediata.
● Redução do uso de infra
estrutura de banco de
dados (menos custos).
● Redução no consumo
de memória da
aplicação.
● Redução de consumo
de banda na
comunicação entre
servidor e banco de
dados.
28. Case 3 - Lentidão nas consultas
Solução: expurgo de dados antigos
Situação problema: Lentidão nas consultas ao
banco de dados.
Diagnóstico: Identificamos dados legados, com
informações de mais de 10 anos, armazenadas
sem a menor necessidade.
Solução: Arquivamento de informações legadas.
Resultados: Além do aumento da performance, o
consumo de memória do servidor de banco que
antes era um servidor de 256 Gb, hoje opera com
apenas 32 Gb.
29. Case 4 - Lentidão em horários pré-definidos
Solução: ajuste de jobs e aplicações
Situação problema: Existência de inúmeros jobs (Windows Service e Console
Application) espalhados pelos servidores. Suspeita de lentidão em
determinados horários ser causada por eles.
Diagnóstico: Havia jobs em execução como Windows Services, e uma outra
parte sendo orquestrada e executada via Jenkins.
Solução: Conversão de todos os Jobs para Console Application e inserção
na orquestração do Jenkins para melhor gerenciamento.
Resultados: Controle sobre horários de execução dos jobs e
centralização de administração em interface amigável e controlada.
Melhoria nos momentos em que o site tornava-se indisponível devido à
concorrência no acesso à dados.
30. Case 5 - Quebras em aplicações
Situação problema: Em algumas situações o sistema exibia no
front-end mensagem de falhas na aplicação.
Observação: O uso da ferramenta de monitoramento foi essencial
nessa descoberta, dado que os logs não eram 100% funcionais.
31. Case 5 - Quebras em aplicações
Solução 1: remoção de compactação entre APIS
Diagnóstico: Foi necessário revisar todo o fluxo da operação em que
ocorria o problema para identificar o ponto de quebra.
Em dadas circunstâncias, a quantidade de informações trocada entre
API´S era tão grande, que a descompactação dos pacotes trocados
ocasionava quebra da aplicação por excessivo consumo de memória.
Solução parte 1: remover a compactação, dado que as aplicações
estavam no mesmo datacenter e o tempo de transferência não
tinha grande impacto.
32. Case 5 - Quebras em aplicações
Solução 2: quebra em menores chamadas
Diagnóstico: Ainda assim, alguns casos continuaram a acontecer
quando eram acionadas consultas de hotéis em cidades maiores.
O tamanho do objeto Json que continha múltiplos hotéis chegava em
alguns casos à 2 milhões de caracteres, estourando a capacidade de
deserialização da biblioteca utilizada.
Solução: quebrar a chamada limitando o número de hotéis e assim
receber objetos menores e evitar o limite de tamanho.
Impacto negativo: a aplicação funciona mas o desempenho é péssimo.
Impacto positivo: a aplicação não travou mais.
Mas ficou lenta!
33. Case 6 - Lentidão em respostas
Solução: revisão de consultas à parceiros
Diagnóstico: Esperar as chamadas serem concluídas em
pequenos blocos sequenciais (case anterior) fez com que o tempo
de execução fosse multiplicado pela quantidade de chamadas.
A premissa básica do cliente é a precisão no retorno, não
permitindo o uso de informações de cache, obrigando a realizar
consultas em tempo real!
Situação problema: Agora que todas as buscas funcionavam,
algumas eram realizadas com tempo de resposta em torno de 1
minuto e 40 segundos, o que é muito tempo de espera do usuário.
34. Case 06 - Lentidão em respostas
Solução: revisão de consultas à parceiros
Solução: alteração da API com a implementação de chamadas
assíncronas paralelas
Resultados: redução do tempo de execução !
Chamadas de 1:40 min reduzidas para 30 a 40
segundos.
Ponto negativo: alto consumo de processamento.
Ponto positivo: resolveu o problema de lentidão
dentro das possibilidades (no-cache).
35. Case 7 - Lentidão no carregamento Web
Solução: eliminação de tratamentos com javascript
Problema: Após o backend retornar dados para a montagem da tela, o
navegador ainda ficava realizando processamentos de scripts em
background, não liberando o usuário para interagir com o site até a
finalização.
Diagnóstico: Foram encontrados scripts rodando após o postback para
modificar elementos do site, alterando valores, aplicando regras de
negócio sobre alguns elementos, e até fazendo ofuscação de objetos
para que não fosse utilizado recurso de copiar-colar.
Solução: Remoção de regras de negócio presentes em código
javascript, e introdução do tratamento destas regras no backend,
fazendo com que os dados já sejam introduzidos no retorno tratados.
Resultado: dependendo da tela 10 a 20 segundos de redução.
36. Case 8 - Escalabilidade
Solução: preparar a aplicação
Situação problema: Aplicações legadas possuem vários
empecilhos para que se haja mais de um servidor atendendo as
requisições.
Diagnóstico: Encontramos os seguintes itens impeditivos:
- Sessões em memória na aplicação.
- Cache presente na aplicação.
- Arquivos de imagens dentro do próprio server ( images
content )
37. Case 9 - Escalabilidade
Solução: preparar a aplicação
Solução: Criar meios para que as aplicações possam ter um ponto
único para manter estas informações possibilitando então a
colocação de um load balancer.
- Implementando sessões em um Cache Redis
- Utilizando um storage com mapeamento dentro de cada
server para que as pastas images e content referenciem
sempre os mesmos locais.
- Remoção de cache da aplicação de dados mutáveis para um
cache único no Redis.
Resultados: Garantir a execução em mais de um servidor até que
se possa implementar serviços escaláveis e resilientes em clusters
kubernetes.
38. Problema: Alterações no código quebrando regras de negócio
Diagnóstico: O código utilizado para regras de negócio não era testável,
portanto sempre que manutenções eram dadas não havia como garantir
que não iriam quebrar.
Solução: 1) Criar testes antes para validação da regra existente
2) Desenvolver as features necessárias e rodar os testes
3) Sempre que possível refatorar o código usando boas
práticas
como “Clean Code” e regra do escoteiro “Deixar o lugar
sempre
melhor do que foi encontrado”
Resultado: Maior confiança da equipe em alterar o código após
implementação dos testes.
Case 9 - Regras de negócio complexas
Problema: falta de testes de unidade.