O documento apresenta os princípios dos 12 Fatores para o desenvolvimento de aplicações na nuvem. Descreve a evolução dos sistemas, da arquitetura monolítica para microserviços, e introduz os 12 fatores como uma metodologia para construir aplicações SAAS de forma portátil e resiliente.
“Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver multiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.” Martin Fowler
O documento discute o modelo de Software como Serviço (SaaS), definindo-o como software distribuído via web e acessado via internet. Apresenta os benefícios do SaaS para empresas, como redução de custos e flexibilidade, e exemplos de aplicações SaaS como armazenamento em nuvem e assinatura digital. Por fim, discute a interoperabilidade entre sistemas SaaS e a importância da integração para fornecedores e clientes.
As três frases resumem os principais tipos de serviços de computação em nuvem: SaaS fornece software como serviço, PaaS fornece plataformas como serviço, e IaaS fornece infraestrutura como serviço.
O processo de entrega de software envolve várias etapas e a participação de todas as áreas de uma empresa: do comercial ao desenvolvimento. Com o amadurecimento da entrega contínua de software, surgiu o termo DevOps que destina-se a descrever uma nova cultura para colaboração de todas as equipes na entrega do software. Essa palestra destina-se a abordar os princípios da entrega contínua e as práticas utilizadas em DevOps.
O documento discute o uso de JavaServer Pages (JSP) para incorporar código Java em páginas web dinâmicas. JSP permite que desenvolvedores incorporem scriptlets Java, expressões e declarações em páginas HTML para gerar conteúdo dinâmico. Quando uma página JSP é solicitada, o servidor processa o código Java e gera uma página HTML estática de resposta.
Maven é uma ferramenta de automação de projetos usada principalmente para projetos Java. Ela gerencia dependências, controla versões, gera relatórios e garante a qualidade do código através de testes. Maven usa um arquivo POM para configurar detalhes do projeto e dependências. Ele define ciclos de vida para compilação, teste e empacotamento.
O documento discute os principais conceitos da Web 2.0, incluindo sua evolução, tecnologias envolvidas e oportunidades de mercado. Aborda tópicos como a história da web, modelos de desenvolvimento, linguagens como HTML, CSS e JavaScript e padrões como W3C.
“Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho frequentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver multiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.” Martin Fowler
O documento discute o modelo de Software como Serviço (SaaS), definindo-o como software distribuído via web e acessado via internet. Apresenta os benefícios do SaaS para empresas, como redução de custos e flexibilidade, e exemplos de aplicações SaaS como armazenamento em nuvem e assinatura digital. Por fim, discute a interoperabilidade entre sistemas SaaS e a importância da integração para fornecedores e clientes.
As três frases resumem os principais tipos de serviços de computação em nuvem: SaaS fornece software como serviço, PaaS fornece plataformas como serviço, e IaaS fornece infraestrutura como serviço.
O processo de entrega de software envolve várias etapas e a participação de todas as áreas de uma empresa: do comercial ao desenvolvimento. Com o amadurecimento da entrega contínua de software, surgiu o termo DevOps que destina-se a descrever uma nova cultura para colaboração de todas as equipes na entrega do software. Essa palestra destina-se a abordar os princípios da entrega contínua e as práticas utilizadas em DevOps.
O documento discute o uso de JavaServer Pages (JSP) para incorporar código Java em páginas web dinâmicas. JSP permite que desenvolvedores incorporem scriptlets Java, expressões e declarações em páginas HTML para gerar conteúdo dinâmico. Quando uma página JSP é solicitada, o servidor processa o código Java e gera uma página HTML estática de resposta.
Maven é uma ferramenta de automação de projetos usada principalmente para projetos Java. Ela gerencia dependências, controla versões, gera relatórios e garante a qualidade do código através de testes. Maven usa um arquivo POM para configurar detalhes do projeto e dependências. Ele define ciclos de vida para compilação, teste e empacotamento.
O documento discute os principais conceitos da Web 2.0, incluindo sua evolução, tecnologias envolvidas e oportunidades de mercado. Aborda tópicos como a história da web, modelos de desenvolvimento, linguagens como HTML, CSS e JavaScript e padrões como W3C.
This is a brief description of feature flags (also know as feature toggles or feature switches) used in combination with version management and branching strategies to streamline and optimize CICD pipelines.
O documento discute os principais conceitos da Java Persistence API (JPA):
1) JPA permite mapear objetos Java como entidades e usar um Entity Manager para realizar operações de persistência;
2) Entidades são classes Java anotadas com @Entity e possuem identidade, estado e relacionamentos;
3) Relacionamentos como one-to-one, one-to-many e many-to-many podem ser mapeados usando anotações como @OneToOne, @OneToMany e @ManyToMany.
Revisão dos conceitos básicos de alguns diagramas UML:
* Diagrama de Caso de Uso
* Diagrama de Classes
* Diagrama de Sequência
* Diagrama de Atividades
* Diagrama de Estados
* Diagrama de Componentes
O documento apresenta uma introdução sobre JavaScript, descrevendo-o como uma linguagem de programação utilizada para criar pequenos programas que realizam ações em páginas web. Em seguida, explica conceitos básicos como estrutura de scripts, uso de funções como document.write(), caixas de diálogo e conversão de variáveis. Por fim, aborda brevemente objetos, eventos e funções.
O documento discute as etapas do desenvolvimento de software, incluindo: 1) Reunião com o cliente para entender os requisitos; 2) Especificação formal dos requisitos; 3) Desenvolvimento do código e teste. O processo é guiado por metodologias como Scrum e Kanban através de reuniões de planejamento.
O documento apresenta uma aula sobre arquitetura de software. Discutem-se conceitos como arquitetura, projeto de software e padrões de projeto. Apresenta-se também exemplos de arquitetura em camadas e estados de um contrato de software.
Apresentação sobre TDD - Test Driven Development no Campus Party 2013 em São Paulo no dia 2/2/2013 onde apresento o que é TDD com uma abordagem prática
O documento discute diagramas de estados em UML. Explica que eles ilustram os eventos e estados de um objeto e sua resposta a eventos. Também descreve que um diagrama de estado mostra o ciclo de vida de um objeto, incluindo eventos, transições e estados. Finalmente, ressalta que esses diagramas são úteis para assegurar que nada foi esquecido em casos de uso complexos.
Metodologia de Desenvolvimento de SoftwaresAragon Vieira
A metodologia de desenvolvimento de software descrita enfatiza o desenvolvimento iterativo e incremental com foco na entrega rápida de valor ao usuário final, utilizando princípios ágeis como envolvimento do usuário, entregas frequentes e feedback constante.
O documento descreve os diagramas de atividades no UML, incluindo suas principais características como ações, fluxos de controle, nós iniciais e finais, decisões, bifurcações e uniões. Também discute o uso de raias para organizar as atividades por responsabilidades.
O documento apresenta a metodologia ágil Desenvolvimento Adaptativo de Software (DAS), proposto por Jim Highsmith para desenvolvimento de sistemas complexos. O DAS utiliza ciclos curtos de desenvolvimento baseados em especulação, colaboração e aprendizagem para entregar resultados frequentes ao cliente e adaptar o projeto com base no feedback. O método enfatiza a adaptação contínua aos requisitos em mudança através de uma abordagem iterativa.
O documento descreve o que é Extreme Programming (XP), seus valores e práticas ágeis. O XP prioriza a comunicação direta, entregas constantes de software e feedback frequente do cliente. Seus papéis incluem desenvolvedores, testadores e um cliente no local para guiar o desenvolvimento.
Este documento fornece um resumo da história e características da linguagem JavaScript em 3 frases:
1) JavaScript foi criada originalmente em 1995 para ser usada no navegador Netscape Navigator e teve influências de linguagens como Java, Scheme, Self e Perl.
2) A linguagem é interpretada, possui tipagem dinâmica e fraca, orientação a objetos baseada em protótipos e funções de primeira classe.
3) JavaScript evoluiu muito desde então e atualmente está na versão ECMAScript 6, sendo uma das linguagens de programação
O documento discute a arquitetura de software como uma abstração que ajuda a gerenciar a complexidade de sistemas de software, representando sua estrutura modular através de componentes e relacionamentos entre eles. A arquitetura serve como uma ponte entre os requisitos do sistema e sua implementação.
O documento discute conceitos de projeto e arquitetura de software, incluindo padrões de arquitetura como camadas, MVC e cliente-servidor. Referências adicionais são fornecidas para aprofundar o conhecimento sobre o assunto.
O documento descreve a história e conceitos de padrões de projeto de software. Apresenta os 23 padrões de projeto documentados no livro "Design Patterns" de 1995, divididos nas categorias criacionais, comportamentais e estruturais. Explica brevemente alguns padrões como Singleton, Factory Method, Observer, Composite e MVC.
Slide do evento Amazon Event Tech - Tecnologia e Inovação na Amazônia que aconteceu dia 9 de junho de 2017, às 19:30.
Tema: Orquestração de containers com Rancher.io
Palestrantes: Alex Ishida e Jorge Luis
Este documento apresenta os conceitos e processos de teste de software, incluindo as fases de teste de componente, integração e sistema. O objetivo dos testes é verificar aspectos estruturais, lógicos e sistêmicos do software para descobrir defeitos de forma eficiente. O processo de teste deve ser realizado em fases por equipes de desenvolvedores e testadores para garantir a qualidade do software.
O documento discute o Domain Driven Design (DDD), uma abordagem de desenvolvimento de software focada no domínio do negócio. O DDD envolve uma colaboração próxima entre especialistas de negócio e desenvolvedores para construir um design rico que reflita o domínio sem complexidades técnicas desnecessárias. O documento também apresenta alguns conceitos-chave do DDD como objetos de valor, entidades, agregados e serviços.
This is a brief description of feature flags (also know as feature toggles or feature switches) used in combination with version management and branching strategies to streamline and optimize CICD pipelines.
O documento discute os principais conceitos da Java Persistence API (JPA):
1) JPA permite mapear objetos Java como entidades e usar um Entity Manager para realizar operações de persistência;
2) Entidades são classes Java anotadas com @Entity e possuem identidade, estado e relacionamentos;
3) Relacionamentos como one-to-one, one-to-many e many-to-many podem ser mapeados usando anotações como @OneToOne, @OneToMany e @ManyToMany.
Revisão dos conceitos básicos de alguns diagramas UML:
* Diagrama de Caso de Uso
* Diagrama de Classes
* Diagrama de Sequência
* Diagrama de Atividades
* Diagrama de Estados
* Diagrama de Componentes
O documento apresenta uma introdução sobre JavaScript, descrevendo-o como uma linguagem de programação utilizada para criar pequenos programas que realizam ações em páginas web. Em seguida, explica conceitos básicos como estrutura de scripts, uso de funções como document.write(), caixas de diálogo e conversão de variáveis. Por fim, aborda brevemente objetos, eventos e funções.
O documento discute as etapas do desenvolvimento de software, incluindo: 1) Reunião com o cliente para entender os requisitos; 2) Especificação formal dos requisitos; 3) Desenvolvimento do código e teste. O processo é guiado por metodologias como Scrum e Kanban através de reuniões de planejamento.
O documento apresenta uma aula sobre arquitetura de software. Discutem-se conceitos como arquitetura, projeto de software e padrões de projeto. Apresenta-se também exemplos de arquitetura em camadas e estados de um contrato de software.
Apresentação sobre TDD - Test Driven Development no Campus Party 2013 em São Paulo no dia 2/2/2013 onde apresento o que é TDD com uma abordagem prática
O documento discute diagramas de estados em UML. Explica que eles ilustram os eventos e estados de um objeto e sua resposta a eventos. Também descreve que um diagrama de estado mostra o ciclo de vida de um objeto, incluindo eventos, transições e estados. Finalmente, ressalta que esses diagramas são úteis para assegurar que nada foi esquecido em casos de uso complexos.
Metodologia de Desenvolvimento de SoftwaresAragon Vieira
A metodologia de desenvolvimento de software descrita enfatiza o desenvolvimento iterativo e incremental com foco na entrega rápida de valor ao usuário final, utilizando princípios ágeis como envolvimento do usuário, entregas frequentes e feedback constante.
O documento descreve os diagramas de atividades no UML, incluindo suas principais características como ações, fluxos de controle, nós iniciais e finais, decisões, bifurcações e uniões. Também discute o uso de raias para organizar as atividades por responsabilidades.
O documento apresenta a metodologia ágil Desenvolvimento Adaptativo de Software (DAS), proposto por Jim Highsmith para desenvolvimento de sistemas complexos. O DAS utiliza ciclos curtos de desenvolvimento baseados em especulação, colaboração e aprendizagem para entregar resultados frequentes ao cliente e adaptar o projeto com base no feedback. O método enfatiza a adaptação contínua aos requisitos em mudança através de uma abordagem iterativa.
O documento descreve o que é Extreme Programming (XP), seus valores e práticas ágeis. O XP prioriza a comunicação direta, entregas constantes de software e feedback frequente do cliente. Seus papéis incluem desenvolvedores, testadores e um cliente no local para guiar o desenvolvimento.
Este documento fornece um resumo da história e características da linguagem JavaScript em 3 frases:
1) JavaScript foi criada originalmente em 1995 para ser usada no navegador Netscape Navigator e teve influências de linguagens como Java, Scheme, Self e Perl.
2) A linguagem é interpretada, possui tipagem dinâmica e fraca, orientação a objetos baseada em protótipos e funções de primeira classe.
3) JavaScript evoluiu muito desde então e atualmente está na versão ECMAScript 6, sendo uma das linguagens de programação
O documento discute a arquitetura de software como uma abstração que ajuda a gerenciar a complexidade de sistemas de software, representando sua estrutura modular através de componentes e relacionamentos entre eles. A arquitetura serve como uma ponte entre os requisitos do sistema e sua implementação.
O documento discute conceitos de projeto e arquitetura de software, incluindo padrões de arquitetura como camadas, MVC e cliente-servidor. Referências adicionais são fornecidas para aprofundar o conhecimento sobre o assunto.
O documento descreve a história e conceitos de padrões de projeto de software. Apresenta os 23 padrões de projeto documentados no livro "Design Patterns" de 1995, divididos nas categorias criacionais, comportamentais e estruturais. Explica brevemente alguns padrões como Singleton, Factory Method, Observer, Composite e MVC.
Slide do evento Amazon Event Tech - Tecnologia e Inovação na Amazônia que aconteceu dia 9 de junho de 2017, às 19:30.
Tema: Orquestração de containers com Rancher.io
Palestrantes: Alex Ishida e Jorge Luis
Este documento apresenta os conceitos e processos de teste de software, incluindo as fases de teste de componente, integração e sistema. O objetivo dos testes é verificar aspectos estruturais, lógicos e sistêmicos do software para descobrir defeitos de forma eficiente. O processo de teste deve ser realizado em fases por equipes de desenvolvedores e testadores para garantir a qualidade do software.
O documento discute o Domain Driven Design (DDD), uma abordagem de desenvolvimento de software focada no domínio do negócio. O DDD envolve uma colaboração próxima entre especialistas de negócio e desenvolvedores para construir um design rico que reflita o domínio sem complexidades técnicas desnecessárias. O documento também apresenta alguns conceitos-chave do DDD como objetos de valor, entidades, agregados e serviços.
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...tdc-globalcode
1. O documento discute os princípios e fatores dos 12 Fatores Apps, uma metodologia para construção de serviços prontos para produção.
2. Os fatores são agrupados em três categorias: fatores de design, fatores de build e release, e fatores de gerenciamento.
3. A metodologia promove a portabilidade, escalabilidade e paridade entre desenvolvimento e produção para aplicações modernas.
1. O documento discute boas práticas para construção de serviços de acordo com a metodologia 12 Factor Apps.
2. Os 12 Fatores são agrupados em fatores de design, build & release e gerenciamento, cobrindo princípios como port binding, processos sem estado, configurações externas e parity entre desenvolvimento e produção.
3. A palestrante irá demonstrar uma aplicação .NET que segue os 12 Fatores e discutirá possíveis fatores adicionais para a metodologia.
1. O documento discute os 12 e 15 Fatores que definem aplicações prontas para a nuvem. Estes fatores incluem estadoless, portabilidade, descartabilidade e outros princípios para construir software escalável.
2. O documento fornece uma breve história dos 12 Fatores, originalmente criados por Adam Wiggins para Heroku.
3. Os principais fatores discutidos incluem configurações como variáveis de ambiente, logs efêmeros, serviços de apoio declarativos e ambientes de desenvolvimento e produção similares.
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.
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de MicroservicesDeep Tech Brasil
Thiago Lima é um empreendedor e especialista em tecnologia com mais de 30 anos de experiência desenvolvendo e liderando equipes de tecnologia. Ele falará sobre microsserviços, desde a decomposição de sistemas até práticas de monitoramento e resiliência.
O documento discute o desenvolvimento de aplicações móveis para negócios usando Rich Internet Applications (RIAs). Apresenta a Magic Software e sua plataforma uniPaaS, que permite desenvolver aplicações de ponta a ponta de forma simplificada em comparação a outras tecnologias como Adobe Flex. Demonstra como o uniPaaS reduz consideravelmente a complexidade de código necessária para desenvolver mesmo aplicações complexas de negócios.
Teoria de Sistemas de Informação - Atividade: Tecnologia e SIAlessandro Almeida
O documento discute a virtualização, definindo-a como a criação de um ambiente virtual que simula um ambiente real. Explica que a virtualização permite que múltiplas máquinas virtuais funcionem em um mesmo hardware físico de forma isolada. Também descreve os principais conceitos como hypervisor, máquinas virtuais e os tipos de virtualização I e II.
O documento discute práticas de DevOps adotadas por empresas como Amazon, Google e Netflix que levam a deployments frequentes, menor tempo de implantação e maior estabilidade. Ele também apresenta métricas para medir o desempenho de TI e práticas correlacionadas como controle de versão e entrega contínua. Finalmente, discute práticas técnicas e organizacionais como equipes multidisciplinares e cultura organizacional para permitir a colaboração entre Dev e Ops.
Web service permite a integração de sistemas e comunicação entre aplicações através de formato XML, permitindo que novas aplicações interajam com as existentes e sistemas de plataformas diferentes sejam compatíveis. MS SQL Server é um sistema gerenciador de banco de dados relacional desenvolvido pela Microsoft para armazenar e recuperar dados solicitados por outras aplicações. Hibernate é um framework Java que realiza mapeamento objeto-relacional para diminuir a complexidade de trabalhar com bancos de dados relacionais.
O documento discute as origens do movimento DevOps e as tensões entre as equipes de desenvolvimento (Devel) e infraestrutura (Infra). Originalmente, Devel e Infra trabalhavam de forma descoordenada e conflituosa, com Infra se recusando a atender às demandas de Devel. Isso gerava atrasos e incidentes frequentes. DevOps surgiu para promover a colaboração entre as equipes e permitir que ambas trabalhem de forma automatizada e contínua.
O documento discute os desafios e soluções de integração de software, mencionando a necessidade de integrar sistemas desenvolvidos por diferentes fabricantes ou com tecnologias diferentes. Apresenta alguns dos principais desafios da integração como a limitada capacidade de controle sobre as aplicações e a fragmentação causada por novas tecnologias. Discute também diferentes estilos de integração como serviços web, replicação de dados e arquitetura orientada a serviços.
O documento discute os desafios e soluções de integração de software, mencionando a necessidade de integrar sistemas desenvolvidos por diferentes fabricantes ou com tecnologias diferentes. Apresenta alguns dos principais desafios da integração como a limitada capacidade de controle sobre as aplicações e a fragmentação dos padrões. Discutem-se também diferentes estilos de integração como serviços orientados a arquitetura, processos distribuídos de negócios e integração B2B.
O GitLab é um gerenciador de repositórios baseado em Git. Suas ferramentas incluem um wiki, um gerenciador de tarefas e um pipeline de CI/CD, etc. O GitLab é similar ao GitHub, porém, por ser open source, pode ser armazenado em infraestrutura própria, além da versão em nuvem do mesmo, podendo ter repositórios públicos e privados.
GitLab Runner, o GitLab permite que você use o Runner, que é um projeto open source que é usado para executar os jobs e enviar os resultados de volta para o GitLab. Ou seja, ele nos permite buildar sem a necessidade de nenhuma instalação externa.
Veremos uma introdução de como tudo isso funciona.
TechNet - e-Book- Artigos sobre Test ManagerAlan Carlos
O documento discute abordagens de testes de software, incluindo testes analíticos, convencionais e baseados em qualidade. Testes analíticos são rigorosos e baseados em matemática, enquanto testes convencionais medem o progresso do desenvolvimento e testes de qualidade focam no processo de desenvolvimento. Várias técnicas de teste são discutidas para cada abordagem.
O documento descreve quatro passos para obter desempenho de rede WAN e internet: 1) analisar a rede atual, 2) avaliar o uso e desempenho da rede, 3) formatar a rede com políticas para priorizar aplicativos essenciais e controlar tráfego não essencial, e 4) relatar o retorno sobre o investimento e oportunidades para melhorias adicionais.
O documento descreve a plataforma Salesforce1 e como ela permite construir aplicações rapidamente. A plataforma oferece desenvolvimento visual e programático, integração com dispositivos móveis e capacidades para conectar sistemas, colaboradores e clientes. Estudos mostram que a plataforma permite desenvolver aplicações em até 70% menos tempo.
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
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.
2. Douglas
Alonso
12 Fatores (Twelve-Factor App)
Arquiteto de Soluções – Itaú Unibanco
Especializado em Engenharia de Software PUC-SP
Graduado em Tecnologia e Desenvolvimento de Sistemas – IBTA SP
Consultor de TI atuando a mais de 20 anos no mercado nacional participando
de grandes projetos para grandes empresas.
Douglas Alonso Cruz
4. Douglas
Alonso
12 Fatores (Twelve-Factor App)
Evolução das Arquiteturas
Sistema Monolítico Sistema Micro Serviços
Interface do
Usuário
Regras de
Negócio
Acesso a Dados
Base de
Dados
Interface do
Usuário
Microserviço
Clientes
Microserviço
Fornecedores
Microserviço
Estoque
Microserviço
Tabelas
Microserviço
Produtos
Base de
Dados
Base de
Dados
Base de
Dados
Base de
Dados
Imaginando um
Sistema de vendas
5. Douglas
Alonso
12 Fatores (Twelve-Factor App)
O que mudou?
Vimos na imagem anterior que a complexidade aumentou, agora em vez de olhar para um
sistema, passamos a ter que olhar para vários micro sistemas, com isso manter configurações,
logs, métricas, código, testes ficou realmente mais trabalhoso e complicado.
6. Douglas
Alonso
12 Fatores (Twelve-Factor App)
Vamos falar do que interessa
Twelve-Factor App é uma metodologia, é um guia usado para a construção de aplicações SAAS. A metodologia
tem como base 12 fatores, ou melhor 12 práticas para permitir que aplicações sejam construídas tendo como
objetivo portabilidade, resiliência, segurança, robustez entre outras características.
E o que isso tem a ver com o cenário dos micro serviços?
Todos os 12 fatores podem e devem ser usados no desenvolvimento dos micro serviços e na infra que serão
executados.
A quem se destina: Desenvolvedores que criam software como serviço,
engenheiros de operações, arquitetos, afinal a todos que criam ou
pretendem criar software de qualidade.
7. Douglas
Alonso
12 Fatores (Twelve-Factor App)
A metodologia Twelve-Factor foi criado na Heroku, empresa pioneira em hospedagem no mundo cloud. É independente
de linguagem de programação e serve como um guia para desenvolvimento de aplicações com qualidade.
Foi criada em 2011
8. Douglas
Alonso
12 Fatores (Twelve-Factor App)
I Code Base (Base de código)
Utilizar uma base de código para rastreamento e controle de revisão da aplicação. Ter apenas uma base de código por
aplicação, sempre tem que haver essa relação de 1 pra 1, uma base de código para uma aplicação.
Se existirem várias bases de código isso não é uma aplicação e sim um sistema distribuído, já o inverso onde múltiplas
aplicações compartilham uma base de código também fere a metodologia e não deve ser usado.
9. Douglas
Alonso
12 Fatores (Twelve-Factor App)
II Dependencies (Dependências)
Bibliotecas
A sua aplicação deve ser autocontida ou seja dentro do seu container ou pacote ela precisa ter todas
as bibliotecas ou pacotes necessários para o seu funcionamento. Ferramentas como (Npm, yarn,
maven, nuget, grade) ajudam neste gerenciamento.
Porém também existem outros tipos de dependências como conexões com banco de dados, serviços, que
podem nos causar problemas, neste caso ferramentas como Chef, Puppet, Docker e Kubernetes.
Tendo as dependências declaradas facilitará também no sentido de integração de novas pessoas na equipe,
rodando apenas um comando no terminal, teremos a aplicação rodando e o ambiente configurado.
10. Douglas
Alonso
12 Fatores (Twelve-Factor App)
III Config (Configurações)
A 1ª recomendação é que as configurações e o codigo fonte e sejam totalmente separados um do outro. As
configurações podem ser armazenadas em variáveis de ambiente, variáveis de ambiente são pertinentes ao host
onde a aplicação está hospedada, deste modo não corre o risco de alguém sobrepor um arquivo com caminho
errado etc.
As configurações jamais devem ser mantidas em repositório pois contém dados sensíveis e podem impactar na
segurança da empresa. Armazenar configurações em código como constantes também fere a metodologia e não deve
ser usado.
Uma maneira muito simples de verificar se seu aplicativo segue este
princípio de configuração ou não é: Perguntando-se se você pode
tornar seu aplicativo de código aberto agora, sem fazer nenhuma
alteração e sem comprometer nenhuma de suas credenciais.
Set Env APPLICATION_ENV
“development”
11. Douglas
Alonso
12 Fatores (Twelve-Factor App)
IV Backing services (Serviços de
apoio)
Trate serviços de apoio como recursos anexados
Um serviço de apoio é qualquer serviço que o app consuma via rede como parte de sua operação normal.
Exemplos incluem armazenamentos de dados (como MySQL ou MongoDB), sistemas de mensagens/filas (tais
como RabbitMQ), serviços SMTP para e-mails externos (tais como Sendgrid), e sistemas de cache (tais como
Redis).
O código para um app doze-fatores não faz
distinção entre serviços locais e de terceiros. Para
o app, ambos são recursos anexados, acessíveis via
uma URL ou outro localizador/credenciais na config.
Um deploy do app doze-fatores deve ser capaz de
trocar um banco de dados MySQL por um gerenciado
por terceiros (tais como Amazon RDS) sem realizar
quaisquer mudanças no código do app. Em ambos os
casos, apenas o identificador de recurso precisa
mudar.
12. Douglas
Alonso
12 Fatores (Twelve-Factor App)
V Build, Release, Run (Construa, libere, execute)
Uma base de código é transformada em um deploy geralmente por três estágios:
Build consiste em pegar uma versão especifica do repositório com suas dependências e transforma-la em
uma versão executável, funcional, seja por compilação ou empacotamento;
Release consiste no envio de um build para um servidor e a execução de todas as configurações
necessárias para que ele entre no terceiro estágio
Run é a inicialização de todos os processos necessários para que ele esteja disponível para os
usuários acessarem.
JENKINS
13. Douglas
Alonso
12 Fatores (Twelve-Factor App)
VI Process (Processos)
Execute o aplicativo como um ou mais processos sem estado. Um aplicativo segue este princípio se
suas instâncias podem ser criadas e destruídas a qualquer momento sem afetar a funcionalidade geral
de nosso aplicativo.
Interface do
Usuário
Microserviço
Clientes
Microserviço
Vendas
Microserviço
Estoque
Microserviço
Tabelas
Microserviço
Produtos
Base de
Dados
Base de
Dados
Base de
Dados
Base de
Dados
Interface do
Usuário
Microserviço
Clientes
Microserviço
Vendas
Microserviço
Estoque
Microserviço
Tabelas
Microserviço
Produtos
Base de
Dados
Base de
Dados
Base de
Dados
Base de
Dados
Microserviço
Vendas
Microserviço
Vendas
Microserviço
Vendas
14. Douglas
Alonso
12 Fatores (Twelve-Factor App)
VII Port Binding (Atribuição a portas)
A ideia é que o projeto não dependa de um servidor externo como o Apache ou IIS por exemplo para ser
executado, mas que possa ser auto-contido e executar em uma porta específica que seria acessado por outras
partes do projeto ou mesmo pelos usuários.
http://localhost:7195
15. Douglas
Alonso
12 Fatores (Twelve-Factor App)
VIII Concurrency (Concorrência)
Tente pensar em seu projeto na forma de processos, como citado anteriormente, que podem ser executados em
paralelo.
Chamadas http não demoradas podem ser resolvidas pelo servidor web de forma rápida e devolvida para o
cliente, porém tarefas mais demoradas podem ser enviadas para mecanismos de filas que executarão o
processamento em background sem travar sua aplicação e retornarão a informação assim que o processamento
for concluído.
Este segundo modo permite que processamento sejam executados em paralelo.
16. Douglas
Alonso
12 Fatores (Twelve-Factor App)
IX Disposability (Descartabilidade)
Os processos de um app doze-fatores são descartáveis, significando que podem ser iniciados ou parados a
qualquer momento. Isso facilita o escalonamento elástico, rápido deploy de código ou mudanças de configuração,
e robustez de deploys de produção.
Lembra da imagem dos nossos micro serviços
Em dado momento preciso executar um processo
grande e demorado para calcular meu estoque no
final do mês, neste caso subiria mais instâncias do
micro serviço de vendas e estoque. Terminado o
calculo poderia simplesmente derrubar essas
instancias.
Outro exemplo, um micro serviço travou. O
sistema deve derrubar matar esse processo e
subir um novo.
17. Douglas
Alonso
12 Fatores (Twelve-Factor App)
X Dev / Prod parity (Igualdade de ambiente)
Os ambientes de produção, homologação e desenvolvimento devem ser o mais similares possíveis.
Facilitando assim os processos de Deploy Continuo.
18. Douglas
Alonso
12 Fatores (Twelve-Factor App)
XI Logs
Os logs são uma importante ferramenta para entender o comportamento de um projeto, identificando erros
e pontos de melhoria. O fluxo de evento para um app pode ser direcionado para um arquivo, ou visto em
tempo real via tail num terminal. Mais significativamente, o fluxo pode ser enviado para um sistema
indexador e analisador tal como Splunk,
19. Douglas
Alonso
12 Fatores (Twelve-Factor App)
XII Admin Process – Processos Administrativos
Tarefas administrativas devem ser tratadas de forma automatizada. Como agora nosso projeto pode rodar
em diversos servidores, com diversos processos, coisas como limpar caches, carregar dados, atualizar
bases de dados, etc, também devem ser facilitadas.
As linguagens modernas geralmente tem um CLI (Command Line Interfaces) e através de comandos
podemos executar e automatizar muitas coisas, se juntarmos isso a ferramenta de pipeline como Jenkins,
O AWS Pipeline, o Azure Pipelines o cenário fica melhor ainda.
O fluxo de evento para um app pode ser direcionado para um arquivo, ou visto em tempo real via tail num terminal. Mais significativamente, o fluxo pode ser enviado para um sistem
O fluxo de evento para um app pode ser direcionado para um arquivo, ou visto em tempo real via tail num terminal. Mais significativamente, o fluxo pode ser enviado para um sist
20. Douglas
Alonso
12 Fatores (Twelve-Factor App)
https://12factor.net/pt_br/
Documentação Oficial 12 Fatores
As informações contidos aqui no 12 fatores é o básico do que temos que pensar para ter um produto
/ sistema de qualidade, existem muitas outras preocupações a serem tomadas, mas fica para uma
próxima conversa.
Se quiserem conhecer um pouco mais procurem pelo termo Engenharia da Confiabilidade ou SRE
https://srebrasil.com/
21. Douglas
Alonso
12 Fatores (Twelve-Factor App)
Obrigado
Douglas Alonso Cruz
douglasalonso@gmail.com
https://www.linkedin.com/in/douglasalonso/
Raphael Freitas
raphael.f.santos@outlook.com
https://www.linkedin.com/in/raphael-Freitas-santos
Notas do Editor
Exemplo anterior comentar que se um processo cair e o processamento da fila não tiver sido concluído este voltara para fila e será processado assim que voltar
Exemplo anterior comentar que se um processo cair e o processamento da fila não tiver sido concluído este voltara para fila e será processado assim que voltar