O documento discute padrões e práticas para entrega contínua e implantações seguras, como pipeline de entrega, implantação azul-verde, implantação canário, feature toggles e dark launches. O objetivo é tornar o processo de deploy previsível através da automação e entrega incremental de melhorias em produção.
DevSecOps nada mais é a união dos benefícios da cultura DevOps com práticas e processos da segurança da informação, um dos grandes desafios desta nova onda é como de fato implementar e automatizar ferramentas de segurança dentro do ciclo de desenvolvimento de software até o momento do deploy. A palestra tem uma abordagem prática e teórica de soluções automatizadas com Docker e Jenkins para incrementar segurança desde a integração contínua (CI) até a entrega contínua (CD), soluções que também permitem o monitoramento automatizado de vulnerabilidades em redes e sites.
Para otimizar nosso tempo e diminuir incidentes causados por erro humano, adotamos o conceito de CI/CD no nosso dia a dia. Acontece que, muitas vezes, por limitações técnicas e dificuldade de integração entre plataformas, deixamos a automatização de deploy de lado e ficamos, no melhor das hipóteses, só com os testes automatizados.
Não seria ótimo se os desenvolvedores pudessem se preocupar só com o versionamento de código, e todo o resto acontecesse magicamente por debaixo dos panos?
Nessa talk aprenderemos como automatizar o seu deploy de maneira fácil com o ArgoCD, uma ferramenta de automatização de deploy para Kubernetes, e porque é importante separar o CI do CD.
O documento discute a integração de testes de invasão nos processos de desenvolvimento contínuo (CI/CD) através da abordagem SecDevOps. Ele apresenta ferramentas como ZAP, Arachni e ThreadFix que podem ser usadas para automatizar testes de segurança e consolidar resultados de múltiplas ferramentas. A integração dessas ferramentas com Jenkins é destacada como forma de realizar testes de segurança como parte dos builds noturnos.
Clean Architecture em NodeJS
[1] A apresentação discute os princípios da Clean Architecture e como aplicá-la em projetos NodeJS, incluindo a separação das camadas de domínio, casos de uso, interfaces e infraestrutura. [2] É explicado como mapear o contexto do domínio usando Context Mapping e como desenvolver uma linguagem ubíquita para melhor comunicação entre times. [3] Referências bibliográficas e artigos sobre arquitetura limpa, domain-driven design e padrões relacionados são fornecidos.
Este documento discute a ferramenta de integração contínua Jenkins. Ele descreve o que é Jenkins e como ele automatiza builds, testes e análise de código. Também lista alguns projetos e scripts já configurados no Jenkins da empresa e discute como ele e outras ferramentas como Sonar podem ser melhor utilizados e expandidos no futuro.
Nesta apresentação que fiz no TDC 2011 em São Paulo, e no evento É Dia de Java em São Carlos. Nesta apresentação, veremos do que se trata Continuous Delivery (Entregas Continuas), suas praticas e principais desafios implementar com sucesso este conceito, que visa preencher o gap existente entre times de desenvolvimento e infraestrutura. E tambem veremos do movimento DevOps, e seu papel para implementar de maneira efetiva Implantacao Continua.
O documento introduz os conceitos de DevSecOps, apresentando suas vantagens como integrar segurança ao longo do ciclo de vida de desenvolvimento para reduzir vulnerabilidades e melhorar a disponibilidade dos sistemas. Também discute os projetos e controles proativos da OWASP para garantir a segurança no desenvolvimento.
DevSecOps nada mais é a união dos benefícios da cultura DevOps com práticas e processos da segurança da informação, um dos grandes desafios desta nova onda é como de fato implementar e automatizar ferramentas de segurança dentro do ciclo de desenvolvimento de software até o momento do deploy. A palestra tem uma abordagem prática e teórica de soluções automatizadas com Docker e Jenkins para incrementar segurança desde a integração contínua (CI) até a entrega contínua (CD), soluções que também permitem o monitoramento automatizado de vulnerabilidades em redes e sites.
Para otimizar nosso tempo e diminuir incidentes causados por erro humano, adotamos o conceito de CI/CD no nosso dia a dia. Acontece que, muitas vezes, por limitações técnicas e dificuldade de integração entre plataformas, deixamos a automatização de deploy de lado e ficamos, no melhor das hipóteses, só com os testes automatizados.
Não seria ótimo se os desenvolvedores pudessem se preocupar só com o versionamento de código, e todo o resto acontecesse magicamente por debaixo dos panos?
Nessa talk aprenderemos como automatizar o seu deploy de maneira fácil com o ArgoCD, uma ferramenta de automatização de deploy para Kubernetes, e porque é importante separar o CI do CD.
O documento discute a integração de testes de invasão nos processos de desenvolvimento contínuo (CI/CD) através da abordagem SecDevOps. Ele apresenta ferramentas como ZAP, Arachni e ThreadFix que podem ser usadas para automatizar testes de segurança e consolidar resultados de múltiplas ferramentas. A integração dessas ferramentas com Jenkins é destacada como forma de realizar testes de segurança como parte dos builds noturnos.
Clean Architecture em NodeJS
[1] A apresentação discute os princípios da Clean Architecture e como aplicá-la em projetos NodeJS, incluindo a separação das camadas de domínio, casos de uso, interfaces e infraestrutura. [2] É explicado como mapear o contexto do domínio usando Context Mapping e como desenvolver uma linguagem ubíquita para melhor comunicação entre times. [3] Referências bibliográficas e artigos sobre arquitetura limpa, domain-driven design e padrões relacionados são fornecidos.
Este documento discute a ferramenta de integração contínua Jenkins. Ele descreve o que é Jenkins e como ele automatiza builds, testes e análise de código. Também lista alguns projetos e scripts já configurados no Jenkins da empresa e discute como ele e outras ferramentas como Sonar podem ser melhor utilizados e expandidos no futuro.
Nesta apresentação que fiz no TDC 2011 em São Paulo, e no evento É Dia de Java em São Carlos. Nesta apresentação, veremos do que se trata Continuous Delivery (Entregas Continuas), suas praticas e principais desafios implementar com sucesso este conceito, que visa preencher o gap existente entre times de desenvolvimento e infraestrutura. E tambem veremos do movimento DevOps, e seu papel para implementar de maneira efetiva Implantacao Continua.
O documento introduz os conceitos de DevSecOps, apresentando suas vantagens como integrar segurança ao longo do ciclo de vida de desenvolvimento para reduzir vulnerabilidades e melhorar a disponibilidade dos sistemas. Também discute os projetos e controles proativos da OWASP para garantir a segurança no desenvolvimento.
Xperience Superlógica 2018 - Infraestrutura ÁgilGabriela Dias
[1] O documento discute a importância da infraestrutura ágil e do DevOps para organizações; [2] A infraestrutura ágil envolve automatizar e versionar a infraestrutura da mesma forma que o desenvolvimento de software; [3] Isso traz benefícios como padronização, preservação do conhecimento, eficiência e controle de versões.
Introdução à Segurança de Containers e KubernetesTenchi Security
Apresentação de Alexandre Sieira na edição online do evento Mind The Sec Rio de Janeiro de 2020. Oferece uma introdução a conceitos básicos de segurança de containers e do orquestrador Kubernetes.
1. O documento discute o framework Java Quarkus para aplicações nativas no Kubernetes.
2. Quarkus permite que aplicações Java sejam facilmente implantadas no Kubernetes através de compilação nativa que melhora o desempenho e reduz o uso de recursos.
3. Uma demonstração mostra como Quarkus compila aplicações Java em executáveis nativos, melhorando o startup e tornando o framework competitivo em ambientes de containers e serverless.
O documento discute DevSecOps, abordando como a segurança deve ser uma prioridade desde o início do ciclo de desenvolvimento, não apenas após a implantação. Apresenta estatísticas mostrando que muitas empresas reduzem medidas de segurança para atender prazos, e que times de operações nem sempre seguem práticas seguras. Também lista algumas das principais ameaças de segurança e ferramentas que podem ser usadas para aplicar conceitos de DevSecOps, como análise de código e verificação de qualidade.
O documento discute arquitetura de microsserviços, com o palestrante apresentando seu background e discutindo tópicos como comunicação entre serviços, estratégias de teste e deploy.
A Tenchi Security tem o prazer de convidá-lo para um evento da série de Security and Cloud. O formato é uma sequência de webinars para profissionais de operações, desenvolvimento, tecnologia e segurança da informação, dependendo do tema do webinar.
Nesta 1ª edição temos apoio da Aqua Security e iremos tratar do tema segurança de DevOps em ambientes de nuvem. Serão discutidos o uso de alta freqüência de deployment, pipelines de CI/CD, e o uso de containers ou adoção de aplicações serverless no contexto corporativo. Em especial, quais os benefícios para o negócio, os riscos à segurança da informação e os controles que o mercado tem adotado para mitigá-los.
O evento terá duração de 1 hora, sendo:
* 25 min - Apresentação de Segurança de DevOps por Alexandre Sieira, Fundador da da Tenchi Security;
* 25 min - Apresentação de Soluções de Segurança de Aplicativos Cloud Native por Carolina Bozza, Regional Sales Director da Aqua Security; e
* 10 min – Dúvidas e respostas.
Gravação do webinar pode ser assistida em https://youtu.be/ac339gAqtj4
O documento discute como implementar pipelines de automação e infraestrutura como código (IaC) para aplicações em produção de forma transparente. Ele aborda conceitos como IaC, pipelines de entrega contínua, deploy sem indisponibilidade usando ambientes de homologação e ferramentas como Azure DevOps, Visual Studio e ARM Template. A apresentação inclui um caso real de implementação.
Teltools - Fábrica de Software - Resumida - V1slides_teltools
A apresentação descreve a Teltools Tecnologia, uma empresa de desenvolvimento de software que fornece soluções móveis e web. A apresentação detalha a metodologia ágil da empresa, seus processos, ambientes de desenvolvimento e produtos como MyWaiter para restaurantes.
O documento descreve os 12 princípios do "12 Factor App", um manifesto com boas práticas para construção de aplicações na nuvem de forma automatizada, portável e elástica, com código stateless e infraestrutura para suporte, empacotamento e disponibilização da aplicação com agilidade.
O documento discute como a plataforma Red Hat OpenShift permite a adoção de DevOps através do uso de containers. Ele descreve como OpenShift fornece uma solução completa para construir, implantar e operar aplicações usando containers, incluindo recursos como orquestração, automação do ciclo de vida e serviços. OpenShift é construído sobre Docker e Kubernetes e oferece uma experiência de desenvolvedor aprimorada para implantação ágil de aplicações.
Desafios e glórias na implementação de infra as codeEduardo Rozario
Este documento discute os desafios e conquistas na implementação de infraestrutura como código. Resume três pontos principais: 1) O uso do controle de versão para gerenciar a infraestrutura como código; 2) A importância de componentes reutilizáveis; 3) A necessidade de testes para garantir a confiabilidade da infraestrutura.
InterCon 2017 - Desenvolvimento de uma Infraestrutura Ágil com Práticas DevOp...iMasters
O documento apresenta os principais pontos sobre infraestrutura ágil com práticas DevOps. Apresenta Gabriela Dias, diretora de operações da 4Linux com mais de 15 anos de experiência em projetos FOSS. Discutem conceitos como infraestrutura como código, ferramentas DevOps e casos reais de adoção dessas práticas. Apresenta também uma demonstração de deploy contínuo em produção.
DevSecOps é sobre automatizar SAST e DAST dentro da pipeline de desenvolvimento para encontrar vulnerabilidades de segurança e erros de tempo de execução antes de implantar o código. O documento fornece links para ferramentas open source como Clair e GitLab para varredura de imagem do Docker e análise de código e também dá dicas sobre como melhorar a segurança, como testes, HTTPS, gerenciamento de dependências e chaves.
TDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net Coretdc-globalcode
O documento discute arquitetura multi-tenant no ASP.NET Core 2.0, onde uma única aplicação pode atender vários clientes de forma isolada. Apresenta vantagens do modelo SaaS multi-tenant como redução de custos, atualizações centralizadas e escalabilidade. Uma demonstração mostra implementação prática com pacote SaasKit.Multitenancy no .NET.
O documento apresenta uma introdução ao Docker Compose, explicando que ele permite a criação e execução de múltiplos containers através de um arquivo YAML. Ele também discute por que usar o Docker Compose, destacando que ele padroniza e replica ambientes de desenvolvimento, teste e produção. Finalmente, o documento descreve os 3 passos básicos para usar o Docker Compose: definir imagens, declarar serviços no arquivo YAML e executar o comando "dc up".
O documento discute como automatizar o processo de desenvolvimento de uma aplicação mesmo quando a empresa cliente não permite DevOps. Ele apresenta como a equipe automatizou o ambiente de desenvolvimento usando Docker para criar containers com o banco de dados e servidores de aplicação, e Jenkins para integração contínua. A automação reduziu problemas com VPNs e tempos de configuração, permitindo que outras aplicações do cliente também adotassem o Docker.
Entity Framework 7.0 a.k.a Entity Core 1.0Caliel Costa
O documento descreve o Entity Framework Core 1.0, incluindo suas principais funcionalidades como POCO, data annotation e relacionamentos. Ele também discute as mudanças radicais em relação às versões anteriores, como o foco apenas em code first e a disponibilização do código no GitHub. Por fim, apresenta os próximos passos de desenvolvimento e como entrar em contato com o autor.
O documento discute as mudanças no .NET, incluindo: 1) O .NET Core é multiplataforma, unificado, rápido e leve; 2) O .NET Core usa o .NET CLI para executar aplicativos em várias plataformas; 3) O .NET Standard permite a reutilização de código entre o .NET Framework e o .NET Core através de bibliotecas compartilhadas.
O documento discute os serviços de cloud computing para aplicações Java, comparando plataformas como serviço (PaaS) como Google App Engine, Amazon Beanstalk, OpenShift e CloudBees. Ele explica como essas plataformas fornecem recursos elásticos na nuvem e facilitam o deploy de aplicativos Java, e discute as características e perfis de aplicações adequadas para cada uma.
Padrões de deploy para devops e entrega contínua - DevDay 2014Danilo Sato
O documento discute padrões para deploy de DevOps e entrega contínua, incluindo pipeline de entrega, implantação azul-verde, implantação canário, feature toggles e dark launching. O objetivo é tornar o deploy um "não-evento" através da automação e entrega incremental de mudanças pequenas e de baixo risco.
Padrões de deploy para DevOps e Entrega ContínuaDanilo Sato
O documento apresenta padrões e princípios para deploy e entrega contínua de software, incluindo a utilização de pipelines de entrega, deploy incremental e mudança paralela para reduzir riscos, e técnicas como implantação azul-verde, canário e feature toggles.
Xperience Superlógica 2018 - Infraestrutura ÁgilGabriela Dias
[1] O documento discute a importância da infraestrutura ágil e do DevOps para organizações; [2] A infraestrutura ágil envolve automatizar e versionar a infraestrutura da mesma forma que o desenvolvimento de software; [3] Isso traz benefícios como padronização, preservação do conhecimento, eficiência e controle de versões.
Introdução à Segurança de Containers e KubernetesTenchi Security
Apresentação de Alexandre Sieira na edição online do evento Mind The Sec Rio de Janeiro de 2020. Oferece uma introdução a conceitos básicos de segurança de containers e do orquestrador Kubernetes.
1. O documento discute o framework Java Quarkus para aplicações nativas no Kubernetes.
2. Quarkus permite que aplicações Java sejam facilmente implantadas no Kubernetes através de compilação nativa que melhora o desempenho e reduz o uso de recursos.
3. Uma demonstração mostra como Quarkus compila aplicações Java em executáveis nativos, melhorando o startup e tornando o framework competitivo em ambientes de containers e serverless.
O documento discute DevSecOps, abordando como a segurança deve ser uma prioridade desde o início do ciclo de desenvolvimento, não apenas após a implantação. Apresenta estatísticas mostrando que muitas empresas reduzem medidas de segurança para atender prazos, e que times de operações nem sempre seguem práticas seguras. Também lista algumas das principais ameaças de segurança e ferramentas que podem ser usadas para aplicar conceitos de DevSecOps, como análise de código e verificação de qualidade.
O documento discute arquitetura de microsserviços, com o palestrante apresentando seu background e discutindo tópicos como comunicação entre serviços, estratégias de teste e deploy.
A Tenchi Security tem o prazer de convidá-lo para um evento da série de Security and Cloud. O formato é uma sequência de webinars para profissionais de operações, desenvolvimento, tecnologia e segurança da informação, dependendo do tema do webinar.
Nesta 1ª edição temos apoio da Aqua Security e iremos tratar do tema segurança de DevOps em ambientes de nuvem. Serão discutidos o uso de alta freqüência de deployment, pipelines de CI/CD, e o uso de containers ou adoção de aplicações serverless no contexto corporativo. Em especial, quais os benefícios para o negócio, os riscos à segurança da informação e os controles que o mercado tem adotado para mitigá-los.
O evento terá duração de 1 hora, sendo:
* 25 min - Apresentação de Segurança de DevOps por Alexandre Sieira, Fundador da da Tenchi Security;
* 25 min - Apresentação de Soluções de Segurança de Aplicativos Cloud Native por Carolina Bozza, Regional Sales Director da Aqua Security; e
* 10 min – Dúvidas e respostas.
Gravação do webinar pode ser assistida em https://youtu.be/ac339gAqtj4
O documento discute como implementar pipelines de automação e infraestrutura como código (IaC) para aplicações em produção de forma transparente. Ele aborda conceitos como IaC, pipelines de entrega contínua, deploy sem indisponibilidade usando ambientes de homologação e ferramentas como Azure DevOps, Visual Studio e ARM Template. A apresentação inclui um caso real de implementação.
Teltools - Fábrica de Software - Resumida - V1slides_teltools
A apresentação descreve a Teltools Tecnologia, uma empresa de desenvolvimento de software que fornece soluções móveis e web. A apresentação detalha a metodologia ágil da empresa, seus processos, ambientes de desenvolvimento e produtos como MyWaiter para restaurantes.
O documento descreve os 12 princípios do "12 Factor App", um manifesto com boas práticas para construção de aplicações na nuvem de forma automatizada, portável e elástica, com código stateless e infraestrutura para suporte, empacotamento e disponibilização da aplicação com agilidade.
O documento discute como a plataforma Red Hat OpenShift permite a adoção de DevOps através do uso de containers. Ele descreve como OpenShift fornece uma solução completa para construir, implantar e operar aplicações usando containers, incluindo recursos como orquestração, automação do ciclo de vida e serviços. OpenShift é construído sobre Docker e Kubernetes e oferece uma experiência de desenvolvedor aprimorada para implantação ágil de aplicações.
Desafios e glórias na implementação de infra as codeEduardo Rozario
Este documento discute os desafios e conquistas na implementação de infraestrutura como código. Resume três pontos principais: 1) O uso do controle de versão para gerenciar a infraestrutura como código; 2) A importância de componentes reutilizáveis; 3) A necessidade de testes para garantir a confiabilidade da infraestrutura.
InterCon 2017 - Desenvolvimento de uma Infraestrutura Ágil com Práticas DevOp...iMasters
O documento apresenta os principais pontos sobre infraestrutura ágil com práticas DevOps. Apresenta Gabriela Dias, diretora de operações da 4Linux com mais de 15 anos de experiência em projetos FOSS. Discutem conceitos como infraestrutura como código, ferramentas DevOps e casos reais de adoção dessas práticas. Apresenta também uma demonstração de deploy contínuo em produção.
DevSecOps é sobre automatizar SAST e DAST dentro da pipeline de desenvolvimento para encontrar vulnerabilidades de segurança e erros de tempo de execução antes de implantar o código. O documento fornece links para ferramentas open source como Clair e GitLab para varredura de imagem do Docker e análise de código e também dá dicas sobre como melhorar a segurança, como testes, HTTPS, gerenciamento de dependências e chaves.
TDC2018SP | Trilha Arq .Net - Aplicacoes Multi-Tenant no Asp.Net Coretdc-globalcode
O documento discute arquitetura multi-tenant no ASP.NET Core 2.0, onde uma única aplicação pode atender vários clientes de forma isolada. Apresenta vantagens do modelo SaaS multi-tenant como redução de custos, atualizações centralizadas e escalabilidade. Uma demonstração mostra implementação prática com pacote SaasKit.Multitenancy no .NET.
O documento apresenta uma introdução ao Docker Compose, explicando que ele permite a criação e execução de múltiplos containers através de um arquivo YAML. Ele também discute por que usar o Docker Compose, destacando que ele padroniza e replica ambientes de desenvolvimento, teste e produção. Finalmente, o documento descreve os 3 passos básicos para usar o Docker Compose: definir imagens, declarar serviços no arquivo YAML e executar o comando "dc up".
O documento discute como automatizar o processo de desenvolvimento de uma aplicação mesmo quando a empresa cliente não permite DevOps. Ele apresenta como a equipe automatizou o ambiente de desenvolvimento usando Docker para criar containers com o banco de dados e servidores de aplicação, e Jenkins para integração contínua. A automação reduziu problemas com VPNs e tempos de configuração, permitindo que outras aplicações do cliente também adotassem o Docker.
Entity Framework 7.0 a.k.a Entity Core 1.0Caliel Costa
O documento descreve o Entity Framework Core 1.0, incluindo suas principais funcionalidades como POCO, data annotation e relacionamentos. Ele também discute as mudanças radicais em relação às versões anteriores, como o foco apenas em code first e a disponibilização do código no GitHub. Por fim, apresenta os próximos passos de desenvolvimento e como entrar em contato com o autor.
O documento discute as mudanças no .NET, incluindo: 1) O .NET Core é multiplataforma, unificado, rápido e leve; 2) O .NET Core usa o .NET CLI para executar aplicativos em várias plataformas; 3) O .NET Standard permite a reutilização de código entre o .NET Framework e o .NET Core através de bibliotecas compartilhadas.
O documento discute os serviços de cloud computing para aplicações Java, comparando plataformas como serviço (PaaS) como Google App Engine, Amazon Beanstalk, OpenShift e CloudBees. Ele explica como essas plataformas fornecem recursos elásticos na nuvem e facilitam o deploy de aplicativos Java, e discute as características e perfis de aplicações adequadas para cada uma.
Padrões de deploy para devops e entrega contínua - DevDay 2014Danilo Sato
O documento discute padrões para deploy de DevOps e entrega contínua, incluindo pipeline de entrega, implantação azul-verde, implantação canário, feature toggles e dark launching. O objetivo é tornar o deploy um "não-evento" através da automação e entrega incremental de mudanças pequenas e de baixo risco.
Padrões de deploy para DevOps e Entrega ContínuaDanilo Sato
O documento apresenta padrões e princípios para deploy e entrega contínua de software, incluindo a utilização de pipelines de entrega, deploy incremental e mudança paralela para reduzir riscos, e técnicas como implantação azul-verde, canário e feature toggles.
O documento apresenta um resumo sobre padrões de projeto. Discute classificação de padrões, exemplos de Factory Method, Decorator, Observer e Strategy. Também aborda princípios SOLID e anti-padrões.
Um padrão de design é uma solução geral e reusável para um problema comum no software. Um padrão não é um design acabado que pode ser transformado diretamente em código. É uma descrição ou template para resolver um problema particular. Veja neste WebCast sobre os seguintes tópicos:
- Histórico dos Patterns;
- Patterns básicos do .NET
- Classificação dos Patterns
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
O documento lista 13 ferramentas/frameworks para desenvolvimento Android, descrevendo brevemente cada um. As ferramentas incluem bibliotecas para requisições HTTP assíncronas, cache e carregamento de imagens, comunicação com banco de dados SQLite, animações de progresso, atualização de interface com usuário e mais. Muitas são open source e facilitam tarefas comuns no desenvolvimento mobile.
O documento apresenta conceitos e diretrizes sobre testes automatizados para aplicativos Android, incluindo testes unitários, de API, funcionais e de interface do usuário. É discutido o framework de testes para Android e estratégias como TDD. Recomenda-se focar os testes nas unidades lógicas e isolar componentes Android quando possível.
A Microsoft Research é a divisão de pesquisa da Microsoft, fundada em 1991, com laboratórios em diversos países. Seus projetos incluem pesquisas em interatividade, games, computação em nuvem, saúde e outros campos, com o objetivo de integrar novas tecnologias aos produtos da empresa. A Microsoft investe bilhões em pesquisa a cada ano.
Arquitetura e Design QCon2010 - Paulo Silveira - CaelumCaelum
Palestra realizada no www.qconsp.com em 2010, mostrando diversas definições para arquitetura e design e depois dando exemplos reais de como o Design também é de extrema importância para poder flexibilizar suas decisões arquiteturais e respectivos tradeoffs.
O documento discute o sensor Kinect, inicialmente lançado para o Xbox mas que posteriormente teve seu hardware e software liberados para uso em outros sistemas através de frameworks como o OpenNI e NITE. Existem aplicações que permitem aos usuários interagir naturalmente através de gestos e voz com computadores e dispositivos móveis. O Kinect pode ser usado em diversos sistemas operacionais e permite a detecção de esqueletos e movimentos das mãos.
O documento apresenta uma introdução ao controle de versão com Git, discutindo sua necessidade, evolução, instalação e fluxo de trabalho básico, incluindo a hospedagem de repositórios remotos.
Este documento apresenta o framework Play! e discute seus principais conceitos e componentes. Em 3 frases:
O Play! é um framework web full-stack para Java e Scala que utiliza arquitetura MVC e convenção sobre configuração. Ele possui componentes como rotas, controladores, modelos e views para construir aplicações web. O documento demonstra como criar um projeto Play! simples para gerenciar tarefas utilizando esses componentes.
O documento fornece uma introdução sobre como iniciar o desenvolvimento de aplicativos Android usando a plataforma Android Studio. Ele explica como instalar as ferramentas de desenvolvimento Android, criar um primeiro projeto de aplicativo de calculadora simples e entender os principais componentes de uma aplicação Android como activities e ciclo de vida.
O documento discute a história e o poder do Android, incluindo o crescimento do mercado de smartphones, ferramentas de desenvolvimento e como criar aplicativos simples para a plataforma.
This document discusses experiences with Test Driven Development (TDD) in a corporate environment. It describes challenges with current development practices that lead to bugs and difficulties, benefits of TDD like secure development and reduced bugs, and a case study of successful TDD adoption on a large project. Common myths about TDD are also addressed.
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013Douglas Drumond
O documento apresenta as informações biográficas e profissionais de Douglas Drumond. Ele é bacharel em Ciência da Computação, trabalhou como analista de software no Instituto de Pesquisas Eldorado e é sócio da empresa de consultoria Y-MAX. Atualmente ele é organizador do grupo GDG Campinas.
TDC - Introdução ao Actor Model com Microsoft OrleansFabio Gouw
O documento apresenta o framework Microsoft Orleans e o modelo de programação Actor. O Orleans permite a criação de aplicações distribuídas e stateful baseadas no modelo de atores, com características de elastibilidade, resiliência e resposta. O documento descreve os conceitos do modelo de atores, a arquitetura do Orleans e apresenta um exemplo prático com código.
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresFernando Franquini
Este documento fornece um resumo de uma palestra sobre boas práticas de SQL em bancos de dados relacionais para desenvolvedores. A palestra inclui tópicos como projeção, chaves, junções, views, triggers, bind variables, padrões ANSI e um exemplo real utilizando JPA. O palestrante tem mais de 18 anos de experiência em TIC e atua como DBA há 10 anos principalmente em projetos Java.
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryRodrigo Russo
O documento discute princípios e práticas de Continuous Delivery, incluindo:
1) A importância de entregas frequentes de software para satisfazer o cliente;
2) A necessidade de automatizar processos como builds, testes e deployments para permitir entregas contínuas;
3) Diferentes níveis de testes que devem ser automatizados para garantir a qualidade a cada build.
Semelhante a Padrões de deploy para DevOps e Entrega Contínua, por Danilo Sato (20)
Design System as a Product - Maria Elena Duenias, Esther Butcher
Design systems are a great example where web development and design meet. You can find innumerable resources on the internet, books and conferences on how to build them, and how they are exactly what your organization needs. But, building one requires a lot more than following a recipe. In this talk we are going to discuss how to build a design system as an internal product, and how it evolves to become what the users need.
Designers, Developers and Dogs: Finding the magic balance between product and tech - Charlotte Vorbeck, ShareNow and Sahil Bajaj
How can an agile delivery team become a successful product team? When does collaboration between product and tech succeed and when not? Why do people in some teams inspire each other while others in the same environment don't speak the same language? In this talk we want to share our learnings and experiences from rebuilding an internal tool for customer support at ShareNow. What could have been just another boring rewrite surprisingly became one of our best experiences in collaboration. We will look at how a joint discovery phase helped us to come up with a shared vision, how a better team setup enabled us to do the necessary work, how focusing on the customer kept us aligned during our journey, and also how we built upon existing collaborative techniques to achieve this new level of cooperation and trust.
During this presentation, Ward Coessens, ThoughtWorks' Consultant will share best practice insights from the Daimler partnership, helping the automotive group on their cloud innovation journey.
How to create more business impact with flexible teams - Jan Hegewald, Zalando & Rebekka Beels, Zalando
Usually, Software Engineering teams are organized around a fixed set of components which they develop further and maintain. Such component teams gain a high level of expert knowledge about their services. However, with agile product development, it often is difficult to implement the most important initiatives with such teams. This leads to a situation where the teams do not work on the most relevant business topics but on those for the respective team. At Zalando, we introduced a new model where we shape teams flexibly around business goals to create the highest impact. How we organize these teams and which challenges especially for the software quality need to be addressed, will be explored in this talk.
Amazon’s Culture of Innovation & The Working Backwards session
Working Backwards; leading organisations achieve growth by marrying customer-obsession with a modern technology strategy. Where do you begin? By focusing on the customer.
During this webinar, Amazon will discuss key innovation principles which have been instrumental in their continued success and their Working Backwards approach.
Dual-Track Agile for Discovery & Development - Adriana Katrandzhieva
The talk will focus on one of the ways teams can ensure continuous delivery and design in their projects. The so-called ‘Dual-track’ model shows the parallel tracks of discovery and development throughout the product design and delivery process. These continually feedback into each other informing new hypothesis that can be tested in order to be proven/disproven. This model is not always easy to implement out of the box and so I will share my own experiences in applying it in practice - what worked, what didn't and how the model can be adjusted to fit different teams and organisational environments.
This document discusses developer experience (DX) and how to design for it. It begins with introductions of the presenters and defines DX as the experience developers have when using a product. It then discusses understanding developer pain points and personas, designing the developer journey, and using different interfaces like APIs, portals, and CLIs. The document outlines challenges in the design process like getting buy-in and measuring DX metrics. It argues that improving DX benefits business goals like enabling experiments, increasing flexibility, and attracting talent. It concludes that developers are also users and designers, and that DX is important to consider for business reasons.
When we design together - Sabrina Mach, Ammara Gafoor and James Emmott
From three distinct perspectives, this talk will contend that design is an activity undertaken by everyone in a software development team. It occurs throughout the process of delivery — not only at the beginning or the end — and it is a powerful instrument for learning about and adapting to the problems our work seeks to solve, which is a shared responsibility. Making the best use of our multidisciplinary expertise in the activity of design requires forms of collaboration that are too often disrupted by the role-based silos that keep us separated and weaken the valuable contribution our diverse approaches could make to our collective efforts. If you care about accelerating time to market, improving customer experience, or building happy and productive teams, you will want to know why and how it matters that we believe ‘design is in everything that we do’.
Hardware is hard(er): designing for distributed user experiences in IoT - Claire Rowland, www.clairerowland.com
Designing connected devices and hardware-enabled services is significantly more complex than pure software. There are more devices on which code can run, connectivity and data sharing patterns to consider, and often multiple and varied touchpoints for users to interact with. Pulling this all together into a coherent experience involves strong collaboration between design and engineering, and a systems thinking approach to UX. In this talk, we’ll introduce what designers need to know about the tech, what engineers need to know about UX for IoT, and how to facilitate the whole-collaboration needed to create great products.
www.clairerowland.com
Customer-centric innovation enabled by cloudThoughtworks
Working Backwards - Leading organisations achieve growth by marrying customer-obsession with a modern technology strategy. In this upcoming webinar, we’ve partnered with AWS to bring you exclusive insights from one of the world’s most innovative companies, Amazon.
The document discusses Amazon's culture of innovation. It emphasizes starting with the customer and working backwards to develop solutions. Amazon focuses on small, autonomous teams that are nimble and own their work. The company's leadership principles guide decision-making and encourage inventiveness, customer obsession, high standards, and long-term thinking to solve customer problems.
The document discusses techniques for establishing shorter feedback loops between developing features and measuring user behavior, including:
1) Shadow traffic which runs new and old features simultaneously to get early feedback without users noticing a difference.
2) Visual reports which assess the quality of a feature through a report (e.g. HTML page) of key metrics.
3) A/B testing which statistically compares user behavior between a control and test group after exposing each to a different variant of a feature. Sample size considerations and statistical significance are discussed.
As a tech leader at ThoughtWorks, a large part of my job involves recommending practices to our clients so they can build and deliver good quality software faster. In doing so repeatedly for many clients I have created a toolkit that contains practical advice from being on the ground. This is what we do, we know it works. When Julius Caesar entered Rome with his army by crossing the river Rubicon, he did something that couldn’t be undone ever again. In your journey as a leader, avoid mistakes that are difficult to correct later. Here are a set of practices that you want to adopt as soon as possible.
Handling error conditions is a core part of the software we write. However, we often treat it as a second class citizen, obscuring our intent through abuse of null values and exceptions that make our code hard to understand and maintain. In the functional programming community, it is common to use datatypes such as Option, Either or Validated to make our intentions explicit when dealing with errors. We can leverage the compiler to verify that we are handling them instead of hoping for the best at runtime. This results in code that is clearer, without hidden path flows. We’ll show how we have been doing this in Kotlin, with the help of the Arrow library.
Mutation testing in software development surfaced in academia during the 70's and has recently seen a resurgence in popularity as a legitimate tool in your testing arsenal. In this session we review the conventional testing pyramid, modern approaches to testing software and look at how mutation testing can help fill in those blind spots.
The document discusses security challenges and best practices for Docker containers. It outlines risks at different stages of the container lifecycle from image development to deployment. Key risks include lack of isolation, complex ecosystems, and known vulnerabilities. The document recommends practices like using linting and scanning during development, restricting resources and access controls at deployment, and signing images from trusted sources to improve container security.
Mainframes handle 30 billion business transactions each day and 87% of all credit card transactions*, they are not traditionally associated with flexible, fail-fast development approaches. Can we bring the practices of agile, CI/CD and fully automated deployments to applications running on a mainframe? During our talk, we'll tell you a story about test automation; redefining the smallest testable unit of a program. And we'll discuss our learnings from introducing continuous integration and agile practices to the world of insurance and mainframes.
*9 Mainframe statistics that may surprise you
ThoughtWorks' Lucy Kurian, James Lewis & Kief Morris discuss tech trends in our latest Technology Radar, covering techniques, platforms, tools, languages and frameworks.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise boosts blood flow, releases endorphins, and promotes changes in the brain which help regulate emotions and stress levels.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
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
Padrões de deploy para DevOps e Entrega Contínua, por Danilo Sato
1. J o r n a d a G o i a n a e m E n g e n h a r i a d e S o f t w a re
PADRÕES DE DEPLOY PARA
DEVOPS E ENTREGA CONTÍNUA
Danilo Sato (@dtsato)
dsato@thoughtworks.com
4. UMA EMPRESA DE 100-ANOS
Nossa missão é melhorar a humanidade através do software e ajudar a gerar
a criação de um ecossistema socialmente responsável e economicamente justo.
Gerir um negócio
sustentável
Liderar e promover excelência de
software e revolucionar a indústria de TI
Advogar apaixonadamente em
favor da justiça social e econômica
5. MAIS DE 20 ANOS DE
LIDERANÇA NO PENSAMENTO
…para nomear
alguns
6. QUEM SOU EU?
▫︎Desenvolvedor
▫︎Arquiteto
▫︎Coach
▫︎Treinador
▫︎Administrador de Rede
6
@dtsato
18. PIPELINE DE ENTREGA
17
Repositório
de Código
Build e Testes
de Unidade
Testes de
Aceitação
Validação
com Usuário
Deploy em
Produção
F
commit
feedback
P
commit
feedback
F
P
commit
P
P
aprovação
19. PIPELINE DE ENTREGA
18
App A
Service B
Service C
Unit
Tests
Version
Control
Artifact
Repository
Integration
Tests
Unit
Tests
Integration
Tests
Unit
Tests
Integration
Tests
Contract
Tests
Contract
Tests
Deploy to
Dev Smoke
Deploy to
Int Application
Testing Smoke
Service D
App E
Service F
Unit
Tests
Integration
Tests
Unit
Tests
Integration
Tests
Unit
Tests
Integration
Tests
Contract
Tests
Deploy to
Dev Smoke
Application
Testing
Contract
Tests
Deploy to
Dev Smoke
Deploy to
Int Smoke
Deploy to
Int
End to End
Testing
Dev
Environment
Deploy to
Performance
QA Smoke
Testing UAT
Integration
Environment
QA
Environment
Deploy to
Production Smoke
COTS
Production
Environment
Deploy to
Int
(...)
(…)
29. FOQUE EM ENTREGAR LOTES PEQUENOS
24
https://www.flickr.com/photos/pelosi/2836152295 https://www.flickr.com/photos/55391407@N03/5137410738
vs.
30. FOQUE EM ENTREGAR LOTES PEQUENOS
24
https://www.flickr.com/photos/pelosi/2836152295 https://www.flickr.com/photos/55391407@N03/5137410738
MTBF
Mean Time Between Failure
MTTR
Mean Time To Recover
vs.
31. FOQUE EM ENTREGAR LOTES PEQUENOS
24
https://www.flickr.com/photos/pelosi/2836152295 https://www.flickr.com/photos/55391407@N03/5137410738
MTBF
Mean Time Between Failure
MTTR
Mean Time To Recover
vs.
32. QUALIDADE DEVE ESTAR EMBUTIDA
NO PROCESSO
https://www.flickr.com/photos/edgarallanbro/71979142275 4
33. MUDANÇA PARALELA
26
Também conhecida como “Expansão e Contração”
http://www.thoughtworks.com/insights/blog/mudança-paralela
https://www.flickr.com/photos/telstar/8246798446
34. 1. EXPANSÃO
27
class Grid {
private Cell[][] cells;
…
!
public void addCell(int x, int y, Cell cell) {
cells[x][y] = cell;
}
public Cell fetchCell(int x, int y) {
return cells[x][y];
}
!!
public boolean isEmpty(int x, int y) {
return cells[x][y] == null;
}
!!!
}
35. 1. EXPANSÃO
28
class Grid {
private Cell[][] cells;
…
!
public void addCell(int x, int y, Cell cell) {
cells[x][y] = cell;
}
!
public Cell fetchCell(int x, int y) {
return cells[x][y];
}
!!!
public boolean isEmpty(int x, int y) {
return cells[x][y] == null;
}
!!!
}
36. 1. EXPANSÃO
29
class Grid {
private Cell[][] cells;
private Map<Coordinate, Cell> newCells;
…
!
public void addCell(int x, int y, Cell cell) {
cells[x][y] = cell;
}
public void addCell(Coordinate coordinate, Cell cell) {
newCells.put(coordinate, cell);
}
public Cell fetchCell(int x, int y) {
return cells[x][y];
}
public Cell fetchCell(Coordinate coordinate) {
return newCells.get(coordinate);
}
public boolean isEmpty(int x, int y) {
return cells[x][y] == null;
}
public boolean isEmpty(Coordinate coordinate) {
return !newCells.containsKey(coordinate);
}
}
37. 2. MIGRAÇÃO
30
Nova Versão
Cliente
Versão
Antiga
Cliente
Cliente
addCell(int x, int y, Cell cell)
fetchCell(int x, int y)
isEmpty(int x, int y)
Cell[][] cells
Map<Coordinate, Cell> newCells
38. 2. MIGRAÇÃO
31
Nova Versão
Cliente
Versão
Antiga
Cliente
Cliente
addCell(int x, int y, Cell cell)
fetchCell(Coordinate c)
isEmpty(Coordinate c)
Cell[][] cells
Map<Coordinate, Cell> newCells
39. 3. CONTRAÇÃO
32
Nova Versão
Cliente
Cliente
Cliente
addCell(Coordinate c, Cell cell)
fetchCell(Coordinate c)
isEmpty(Coordinate c)
Cell[][] cells
Map<Coordinate, Cell> cells
40. 3. CONTRAÇÃO
33
class Grid {
private Cell[][] cells;
private Map<Coordinate, Cell> newCells;
…
!
public void addCell(int x, int y, Cell cell) {
cells[x][y] = cell;
}
public void addCell(Coordinate coordinate, Cell cell) {
newCells.put(coordinate, cell);
}
public Cell fetchCell(int x, int y) {
return cells[x][y];
}
public Cell fetchCell(Coordinate coordinate) {
return newCells.get(coordinate);
}
public boolean isEmpty(int x, int y) {
return cells[x][y] == null;
}
public boolean isEmpty(Coordinate coordinate) {
return !newCells.containsKey(coordinate);
}
}
43. IMPLANTAÇÃO AZUL-VERDE
36
Verde
Azul
Servidor
web
Servidor de
aplicação
Servidor de
BD
Usuários Roteador
Servidor
web
Servidor de
aplicação
Servidor de
BD
44. IMPLANTAÇÃO AZUL-VERDE
37
Verde
Azul
Servidor
web
Servidor de
aplicação
Servidor de
BD
Usuários Roteador
Servidor
web
Servidor de
aplicação
Servidor de
BD
46. IMPLANTAÇÃO AZUL-VERDE
39
Azul
Verde
Azul
Verde
Servidor
web
Servidor de
BD
Usuários Roteador
Servidor
web
Servidor de
BD
Servidor de
aplicação
Servidor de
aplicação
47. IMPLANTAÇÃO AZUL-VERDE
40
Azul
Verde
Azul
Verde
Servidor
web
Servidor de
BD
Usuários Roteador
Servidor
web
Servidor de
BD
Servidor de
aplicação
Servidor de
aplicação
48. IMPLANTAÇÃO AZUL-VERDE
41
Azul
Verde
Azul
Verde
Servidor
web
Servidor de
BD
Usuários Roteador
Servidor
web
Servidor de
BD
Servidor de
aplicação
Servidor de
aplicação
51. IMPLANTAÇÃO CANÁRIO
44
Versão Antiga
Nova Versão
Servidor
web
Servidor de
aplicação
Servidor de
BD
Servidor
web
Servidor de
aplicação
Servidor de
BD
Todos os
usuários
Usuários Roteador
52. IMPLANTAÇÃO CANÁRIO
45
Versão Antiga
Nova Versão
Servidor
web
Servidor de
aplicação
Servidor de
BD
Servidor
web
Servidor de
aplicação
Servidor de
BD
Maior parte dos
usuários
(95%)
Usuários Roteador
Alguns
usuários
(5%)
53. IMPLANTAÇÃO CANÁRIO
46
Versão Antiga
Nova Versão
Servidor
web
Servidor de
aplicação
Servidor de
BD
Servidor
web
Servidor de
aplicação
Servidor de
BD
Alguns
usuários
Usuários Roteador
(2%)
Maior parte
dos usuários
(98%)
54. IMPLANTAÇÃO CANÁRIO
47
Versão Antiga
Nova Versão
Servidor
web
Servidor de
aplicação
Servidor de
BD
Servidor
web
Servidor de
aplicação
Servidor de
BD
Usuários
Roteador
Todos os
usuários
56. FEATURE TOGGLE
49
share_with_friends = false
Configuração:
Livro Devops na Prática: Entrega de Software Confiável e Automatizada
http://www.devopsnapratica.com.br Google
57. FEATURE TOGGLE
50
share_with_friends = true
Configuração:
Livro Devops na Prática: Entrega de Software Confiável e Automatizada
http://www.devopsnapratica.com.br Google
58. 51
ENTREGA NO
ESCURO
https://www.flickr.com/photos/dwrose/3967195917
59. ENTREGA NO ESCURO
52
Web Page Title
http://facebook.com Google
João
Backend de Chat
Web Page Title
http://facebook.com Google
Maria
60. ENTREGA NO ESCURO
53
Web Page Title
http://facebook.com Google
Phasellus nulla risus, semper non dictum semper, congue
vitae augue. Nunc vulputate ligula eget neque tempus.
Maria
disse
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Curabitur eget ultrices velit.
Suspendisse ut justo elementum felis facilisis aliquam ut
sit amet mi. Praesent sit amet venenatis eros. Fusce est
João
João tellus, congue ac augue in, congue elementum quam.
disse
Backend de Chat
Web Page Title
http://facebook.com Google
Maria
Phasellus nulla risus, semper non dictum semper, congue
vitae augue. Nunc vulputate ligula eget neque tempus.
Maria
disse
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Curabitur eget ultrices velit.
Suspendisse ut justo elementum felis facilisis aliquam ut
sit amet mi. Praesent sit amet venenatis eros. Fusce est
João tellus, congue ac augue in, congue elementum quam.
disse
61. ENTREGA NO ESCURO
54
Web Page Title
http://facebook.com Google
Phasellus nulla risus, semper non dictum semper, congue
vitae augue. Nunc vulputate ligula eget neque tempus.
Maria
disse
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Curabitur eget ultrices velit.
Suspendisse ut justo elementum felis facilisis aliquam ut
sit amet mi. Praesent sit amet venenatis eros. Fusce est
João
João tellus, congue ac augue in, congue elementum quam.
disse
Backend de Chat
Web Page Title
http://facebook.com Google
Maria
Phasellus nulla risus, semper non dictum semper, congue
vitae augue. Nunc vulputate ligula eget neque tempus.
Maria
disse
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Curabitur eget ultrices velit.
Suspendisse ut justo elementum felis facilisis aliquam ut
sit amet mi. Praesent sit amet venenatis eros. Fusce est
João tellus, congue ac augue in, congue elementum quam.
disse
86. PRINCÍPIOS PARA ENTREGAS
DE BAIXO RISCO
1. Incremental é melhor que “big bang”
2. Implantação != Entrega
3. Foque em entregar lotes pequenos
4. Qualidade deve estar embutida no
processo
69
88. 71
MAIS INFORMAÇÕES
▫︎TI de alto desempenho é uma
vantagem competitiva
▫︎Práticas de DevOps melhoram o
desempenho de TI
▫︎Cultura organizacional é
importante
▫︎Satisfação no emprego é o
preditor Nº 1 de desempenho
organizacional
http://puppetlabs.com/2014-devops-report
89. 72
PRÁTICAS CORRELACIONADAS
Métricas de vazão Métricas de Estabilidade
Freqüência de deploy
- Entrega Contínua
- Controle de Versões
Tempo médio para recuperação
- Controle de Versões
- Monitoramento da Saúde do Sistema e
das Aplicações
Tempo de ciclo para mudanças
- Controle de Versões
- Testes Automatizados
Taxa de falhas para mudanças
Não apresentou correlação forte com as
práticas estudadas
90. MAIS CONTEÚDO
▫︎Kit de Entrega Contínua:
▫︎http://info.thoughtworks.com/entrega-continua-toolkit
▫︎Insights (blogs e artigos)
▫︎Livros
▫︎Slides
▫︎Vídeo
73