O documento discute arquitetura de microserviços, comparando-a com arquitetura monolítica. Aborda definições, benefícios, desafios e padrões de projeto de microserviços, incluindo deployment e monitoramento.
This is a small introduction to microservices. you can find the differences between microservices and monolithic applications. You will find the pros and cons of microservices. you will also find the challenges (Business/ technical) that you may face while implementing microservices.
Vamos ver o passo a passo de como configurar um ambiente de integração continua e deploy continuo usando ferramentas gerenciadas no Google Cloud, sem se queimar tendo que gerenciar servidores.
Demos
Demo em Flask
https://github.com/alvarowolfx/flask-demo
Demo de Múltiplos Ambientes
https://github.com/alvarowolfx/gcloud-ci-cd-demo
Use Case em IoT
https://medium.com/google-cloud/serverless-continuous-integration-and-ota-update-flow-using-google-cloud-build-and-arduino-d5e1cda504bf
https://github.com/alvarowolfx/gcloud-ota-arduino-update
Referencias
Deploy de aplicativos móveis
Android APK
https://cloud.google.com/community/tutorials/building-android-apk-with-cloud-build-gradle-docker-image
Flutter e Cloud Build
https://medium.com/@lidemin/flutter-ci-cd-with-cloud-build-android-9cd12ade8306
Outros ambientes de execução
Google App Engine
https://medium.com/google-cloud/continuous-delivery-in-google-cloud-platform-cloud-build-with-app-engine-8355d3a11ff5
Cloud Functions
https://cloud.google.com/cloud-build/docs/deploying-builds/deploy-functions
https://medium.com/swlh/how-to-ci-cd-on-google-cloud-platform-1e631cded335
https://cloud.google.com/devops
https://github.com/GoogleCloudPlatform/github-actions/blob/master/get-secretmanager-secrets/README.md
https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context
https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values#yaml_2
https://cloud.google.com/cloud-build/docs/building/build-go#building_using_go_modules
Cloud Run Quickstart - https://www.youtube.com/watch?v=3OP-q55hOUI
https://fireship.io/lessons/ci-cd-with-google-cloud-build/
This is a small introduction to microservices. you can find the differences between microservices and monolithic applications. You will find the pros and cons of microservices. you will also find the challenges (Business/ technical) that you may face while implementing microservices.
Vamos ver o passo a passo de como configurar um ambiente de integração continua e deploy continuo usando ferramentas gerenciadas no Google Cloud, sem se queimar tendo que gerenciar servidores.
Demos
Demo em Flask
https://github.com/alvarowolfx/flask-demo
Demo de Múltiplos Ambientes
https://github.com/alvarowolfx/gcloud-ci-cd-demo
Use Case em IoT
https://medium.com/google-cloud/serverless-continuous-integration-and-ota-update-flow-using-google-cloud-build-and-arduino-d5e1cda504bf
https://github.com/alvarowolfx/gcloud-ota-arduino-update
Referencias
Deploy de aplicativos móveis
Android APK
https://cloud.google.com/community/tutorials/building-android-apk-with-cloud-build-gradle-docker-image
Flutter e Cloud Build
https://medium.com/@lidemin/flutter-ci-cd-with-cloud-build-android-9cd12ade8306
Outros ambientes de execução
Google App Engine
https://medium.com/google-cloud/continuous-delivery-in-google-cloud-platform-cloud-build-with-app-engine-8355d3a11ff5
Cloud Functions
https://cloud.google.com/cloud-build/docs/deploying-builds/deploy-functions
https://medium.com/swlh/how-to-ci-cd-on-google-cloud-platform-1e631cded335
https://cloud.google.com/devops
https://github.com/GoogleCloudPlatform/github-actions/blob/master/get-secretmanager-secrets/README.md
https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context
https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values#yaml_2
https://cloud.google.com/cloud-build/docs/building/build-go#building_using_go_modules
Cloud Run Quickstart - https://www.youtube.com/watch?v=3OP-q55hOUI
https://fireship.io/lessons/ci-cd-with-google-cloud-build/
Modern application architectures are embracing public clouds, microservices, and container schedulers like Kubernetes and Nomad. These bring complex service-to-service communication patterns, increased scale, dynamic IP addresses, ephemeral infrastructure, and higher failure rates. These changes require a new approach for service discovery, configuration, and segmentation. Service discovery enables services to find and communicate with each other. Service configuration allows us to dynamically configure applications at runtime. Service segmentations lets us secure our microservices architectures by limiting access. In this talk, we cover these challenges and how to solve them with Consul providing as a service mesh.
Kevin Huang: AWS San Francisco Startup Day, 9/7/17
Architecture: When, how, and if to adopt microservices - Microservices are not for everyone! If you're a small shop, a monolith provides a great amount of value and reduces the complexities involved. However as your company grows, this monolith becomes more difficult to maintain. We’ll look at how microservices allow you to easily deploy and debug atomic pieces of infrastructure which allows for increased velocity in reliable, tested, and consistent deploys. We’ll look into key metrics you can use to identify the right time to begin the transition from monolith to microservices.
This presentation will introduce you to Container, Docker, and Kubernetes with a live demo. This also explains Kubernetes basic concepts such as Pod, Deployment, Service, Ingress, and Rolling Update.
Facebook Live: https://www.facebook.com/imcinstitute/videos/4199946253380670
Youtube Recorded: https://youtu.be/vW1Yq5ftWZ4
IMC Live Webinar on July 17, 2020
Learn all about microservices from Product Marketing Manager Dan Giordano. We'll cover how to get started, the benefits, potential challenges, and how SmartBear can help.
SlideTeam presents Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide Templates. This PPT slideshow is an ideal virtual expression of the fundamentals of Kubernetes. The smart data-visualizations make this PowerPoint presentation easy-to-understand and perfect to introduce your audience to the container orchestration system. Use our PPT theme to communicate the definition and need for containers or virtual private servers. Communicate the container, and microservices architecture using cutting-edge graphics. Explain the need for and benefits of Kubernetes for an organization. Elucidate the features, architecture, use cases, installation roadmap, and the 30-60-90 day plan in Kubernetes. Use the neat tabular format to compare Kubernetes with docker swarm based on various parameters. Familiarize your viewers with the various components of Kubernetes. Elaborate on what is Kubelet, Kubectl, and Kubeadm with the help of labeled diagrams. This presentation acquaints your audience with the significance of Kubernetes in management, scaling, automating, and deploying computer applications. Hit the download icon and start personalization. https://bit.ly/2L0Ojdu
Docker is one of the fastest-growing open source projects ever, and the ecosystem that has grown around it is evolving at a similar pace. For these reasons, we want to introduce developers, system administrators, and other computer users of a mixed skillset to the Docker project and Linux container concepts.
containerd the universal container runtimeDocker, Inc.
containerd is an industry-standard core container runtime with an emphasis on simplicity, robustness and portability. It is available as a daemon for Linux and Windows, which can manage the complete container lifecycle of its host system: image transfer and storage, container execution and supervision, low-level storage and network attachments, etc..
containerd is designed to be embedded into a larger system, rather than being used directly by developers or end-users.
containerd includes a daemon exposing gRPC API over a local UNIX socket. The API is a low-level one designed for higher layers to wrap and extend. It also includes a barebone CLI (ctr) designed specifically for development and debugging purpose. It uses runC to run containers according to the OCI specification. The code can be found on GitHub, and here are the contribution guidelines.
containerd is based on the Docker Engine’s core container runtime to benefit from its maturity and existing contributors.
Building Cloud-Native App Series - Part 11 of 11
Microservices Architecture Series
Service Mesh - Observability
- Zipkin
- Prometheus
- Grafana
- Kiali
Docker Kubernetes Istio
Understanding Docker and creating containers.
Container Orchestration based on Kubernetes
Blue Green Deployment, AB Testing, Canary Deployment, Traffic Rules based on Istio
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...Simplilearn
This presentation about DevOps will help you learn what is DevOps, the lifecycle of DevOps, different tools used in DevOps life cycle, version control system, continuous integration, and deployment. You will also understand how DevOps performs configuration management, containerization and continuous monitoring of applications. DevOps is a culture that allows the Development and Operations team to work together. In this video, you will see how an organization can use DevOps tools and techniques to build a website. Finally, you will implement Git, Jenkins, and Puppet and gain hands-on experience in it. Now, let us get started with DevOps training.
Below topics are explained in this DevOps training Video:
1. What is DevOps?
2. DevOps Lifecycle
3. DevOps Tools
4. Version Control System
5. CI/CD
6. Configuration Management
7. Containerization
8. Monitoring
Why learn DevOps?
Simplilearn’s DevOps training course is designed to help you become a DevOps practitioner and apply the latest in DevOps methodology to automate your software development lifecycle right out of the class. You will master configuration management; continuous integration deployment, delivery, and monitoring using DevOps tools such as Git, Docker, Jenkins, Puppet, and Nagios in a practical, hands-on and interactive approach. The DevOps training course focuses heavily on the use of Docker containers, a technology that is revolutionizing the way apps are deployed in the cloud today and is a critical skillset to master in the cloud age.
After completing the DevOps training course you will achieve hands-on expertise in various aspects of the DevOps delivery model. The practical learning outcomes of this Devops training course are:
An understanding of DevOps and the modern DevOps toolsets
The ability to automate all aspects of a modern code delivery and deployment pipeline using:
1. Source code management tools
2. Build tools
3. Test automation tools
4. Containerization through Docker
5. Configuration management tools
6. Monitoring tools
Who should take this course?
DevOps career opportunities are thriving worldwide. DevOps was featured as one of the 11 best jobs in America for 2017, according to CBS News, and data from Payscale.com shows that DevOps Managers earn as much as $122,234 per year, with DevOps engineers making as much as $151,461. DevOps jobs are the third-highest tech role ranked by employer demand on Indeed.com but have the second-highest talent deficit.
1. This DevOps training course will be of benefit the following professional roles:
2. Software Developers
3. Technical Project Managers
4. Architects
5. Operations Support
6. Deployment engineers
7. IT managers
8. Development managers
Learn more at https://www.simplilearn.com/cloud-computing/devops-practitioner-certification-training
PPT concetrates on :
1. Introduction to RabbitMQ .
2. Difference between AMQP and JMS
3. Different types of exchanges
4. Routing Key and Binding concept
Virtualization, Containers, Docker and scalable container management servicesabhishek chawla
In this presentation we take you through the concept of virtualization which includes the different types of virtualizations, understanding the Docker as a software containerization platform like Docker's Architecture, Building and running custom images in Docker containers, Scalable container management services which include overview of Amazon ECS & kubernetes and how at LimeTray we harnessed the power of kubernetes for scalable automated deployment of our microservices.
Building a scalable microservice architecture with envoy, kubernetes and istioSAMIR BEHARA
Talk from O'Reilly Software Architecture Conference San Jose 2019
Microservices and containers have taken the software industry by storm. Transitioning from a monolith to microservices enables you to deploy your application more frequently, independently, and reliably. However, microservice architecture has its own challenges, and it has to deal with the same problems encountered while designing distributed systems.
Enter service mesh technology to the rescue. A service mesh reduces the complexity associated with microservices and provides functionality like load balancing, service discovery, traffic management, circuit breaking, telemetry, fault injection, and more. Istio is one of the best implementations of a service mesh at this point, while Kubernetes provides a platform for running microservices and automating deployment of containerized applications.
Join Samir Behara to go beyond the buzz and understand microservices and service mesh technologies.
Modern application architectures are embracing public clouds, microservices, and container schedulers like Kubernetes and Nomad. These bring complex service-to-service communication patterns, increased scale, dynamic IP addresses, ephemeral infrastructure, and higher failure rates. These changes require a new approach for service discovery, configuration, and segmentation. Service discovery enables services to find and communicate with each other. Service configuration allows us to dynamically configure applications at runtime. Service segmentations lets us secure our microservices architectures by limiting access. In this talk, we cover these challenges and how to solve them with Consul providing as a service mesh.
Kevin Huang: AWS San Francisco Startup Day, 9/7/17
Architecture: When, how, and if to adopt microservices - Microservices are not for everyone! If you're a small shop, a monolith provides a great amount of value and reduces the complexities involved. However as your company grows, this monolith becomes more difficult to maintain. We’ll look at how microservices allow you to easily deploy and debug atomic pieces of infrastructure which allows for increased velocity in reliable, tested, and consistent deploys. We’ll look into key metrics you can use to identify the right time to begin the transition from monolith to microservices.
This presentation will introduce you to Container, Docker, and Kubernetes with a live demo. This also explains Kubernetes basic concepts such as Pod, Deployment, Service, Ingress, and Rolling Update.
Facebook Live: https://www.facebook.com/imcinstitute/videos/4199946253380670
Youtube Recorded: https://youtu.be/vW1Yq5ftWZ4
IMC Live Webinar on July 17, 2020
Learn all about microservices from Product Marketing Manager Dan Giordano. We'll cover how to get started, the benefits, potential challenges, and how SmartBear can help.
SlideTeam presents Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide Templates. This PPT slideshow is an ideal virtual expression of the fundamentals of Kubernetes. The smart data-visualizations make this PowerPoint presentation easy-to-understand and perfect to introduce your audience to the container orchestration system. Use our PPT theme to communicate the definition and need for containers or virtual private servers. Communicate the container, and microservices architecture using cutting-edge graphics. Explain the need for and benefits of Kubernetes for an organization. Elucidate the features, architecture, use cases, installation roadmap, and the 30-60-90 day plan in Kubernetes. Use the neat tabular format to compare Kubernetes with docker swarm based on various parameters. Familiarize your viewers with the various components of Kubernetes. Elaborate on what is Kubelet, Kubectl, and Kubeadm with the help of labeled diagrams. This presentation acquaints your audience with the significance of Kubernetes in management, scaling, automating, and deploying computer applications. Hit the download icon and start personalization. https://bit.ly/2L0Ojdu
Docker is one of the fastest-growing open source projects ever, and the ecosystem that has grown around it is evolving at a similar pace. For these reasons, we want to introduce developers, system administrators, and other computer users of a mixed skillset to the Docker project and Linux container concepts.
containerd the universal container runtimeDocker, Inc.
containerd is an industry-standard core container runtime with an emphasis on simplicity, robustness and portability. It is available as a daemon for Linux and Windows, which can manage the complete container lifecycle of its host system: image transfer and storage, container execution and supervision, low-level storage and network attachments, etc..
containerd is designed to be embedded into a larger system, rather than being used directly by developers or end-users.
containerd includes a daemon exposing gRPC API over a local UNIX socket. The API is a low-level one designed for higher layers to wrap and extend. It also includes a barebone CLI (ctr) designed specifically for development and debugging purpose. It uses runC to run containers according to the OCI specification. The code can be found on GitHub, and here are the contribution guidelines.
containerd is based on the Docker Engine’s core container runtime to benefit from its maturity and existing contributors.
Building Cloud-Native App Series - Part 11 of 11
Microservices Architecture Series
Service Mesh - Observability
- Zipkin
- Prometheus
- Grafana
- Kiali
Docker Kubernetes Istio
Understanding Docker and creating containers.
Container Orchestration based on Kubernetes
Blue Green Deployment, AB Testing, Canary Deployment, Traffic Rules based on Istio
DevOps Training | DevOps Training Video | DevOps Tools | DevOps Tutorial For ...Simplilearn
This presentation about DevOps will help you learn what is DevOps, the lifecycle of DevOps, different tools used in DevOps life cycle, version control system, continuous integration, and deployment. You will also understand how DevOps performs configuration management, containerization and continuous monitoring of applications. DevOps is a culture that allows the Development and Operations team to work together. In this video, you will see how an organization can use DevOps tools and techniques to build a website. Finally, you will implement Git, Jenkins, and Puppet and gain hands-on experience in it. Now, let us get started with DevOps training.
Below topics are explained in this DevOps training Video:
1. What is DevOps?
2. DevOps Lifecycle
3. DevOps Tools
4. Version Control System
5. CI/CD
6. Configuration Management
7. Containerization
8. Monitoring
Why learn DevOps?
Simplilearn’s DevOps training course is designed to help you become a DevOps practitioner and apply the latest in DevOps methodology to automate your software development lifecycle right out of the class. You will master configuration management; continuous integration deployment, delivery, and monitoring using DevOps tools such as Git, Docker, Jenkins, Puppet, and Nagios in a practical, hands-on and interactive approach. The DevOps training course focuses heavily on the use of Docker containers, a technology that is revolutionizing the way apps are deployed in the cloud today and is a critical skillset to master in the cloud age.
After completing the DevOps training course you will achieve hands-on expertise in various aspects of the DevOps delivery model. The practical learning outcomes of this Devops training course are:
An understanding of DevOps and the modern DevOps toolsets
The ability to automate all aspects of a modern code delivery and deployment pipeline using:
1. Source code management tools
2. Build tools
3. Test automation tools
4. Containerization through Docker
5. Configuration management tools
6. Monitoring tools
Who should take this course?
DevOps career opportunities are thriving worldwide. DevOps was featured as one of the 11 best jobs in America for 2017, according to CBS News, and data from Payscale.com shows that DevOps Managers earn as much as $122,234 per year, with DevOps engineers making as much as $151,461. DevOps jobs are the third-highest tech role ranked by employer demand on Indeed.com but have the second-highest talent deficit.
1. This DevOps training course will be of benefit the following professional roles:
2. Software Developers
3. Technical Project Managers
4. Architects
5. Operations Support
6. Deployment engineers
7. IT managers
8. Development managers
Learn more at https://www.simplilearn.com/cloud-computing/devops-practitioner-certification-training
PPT concetrates on :
1. Introduction to RabbitMQ .
2. Difference between AMQP and JMS
3. Different types of exchanges
4. Routing Key and Binding concept
Virtualization, Containers, Docker and scalable container management servicesabhishek chawla
In this presentation we take you through the concept of virtualization which includes the different types of virtualizations, understanding the Docker as a software containerization platform like Docker's Architecture, Building and running custom images in Docker containers, Scalable container management services which include overview of Amazon ECS & kubernetes and how at LimeTray we harnessed the power of kubernetes for scalable automated deployment of our microservices.
Building a scalable microservice architecture with envoy, kubernetes and istioSAMIR BEHARA
Talk from O'Reilly Software Architecture Conference San Jose 2019
Microservices and containers have taken the software industry by storm. Transitioning from a monolith to microservices enables you to deploy your application more frequently, independently, and reliably. However, microservice architecture has its own challenges, and it has to deal with the same problems encountered while designing distributed systems.
Enter service mesh technology to the rescue. A service mesh reduces the complexity associated with microservices and provides functionality like load balancing, service discovery, traffic management, circuit breaking, telemetry, fault injection, and more. Istio is one of the best implementations of a service mesh at this point, while Kubernetes provides a platform for running microservices and automating deployment of containerized applications.
Join Samir Behara to go beyond the buzz and understand microservices and service mesh technologies.
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
Um método para o desenvolvimento de software baseado em microsserviçosThiago Pereira
Trabalho de conclusão do curso (TCC 2) de Engenharia de Software da Universidade Federal do Ceará, campus de Quixadá.
Este trabalho propõe um método, ou seja, um conjunto de passos bem definidos para auxiliar o desenvolvimento de software baseado em microserviços.
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Renato Groff
Apresentação sobre microserviços e o uso de tecnologias disponibilizadas pelo Azure na implementação deste tipo de arquitetura. Palestra realizada em 29/07/2017, em meetup promovido pelo grupo Tecnologia na Prática na cidade de São Paulo-SP.
Tópicos abordados nesta apresentação realizada durante o Interopmix (24/08/2015):
- Aplicações Monolíticas
- Serviços: uma visão geral
- Arquitetura de Microservices
Tópicos abordados nesta apresentação realizada durante o ALM Roadshow 2015 - São Paulo (07/11/2015):
- Aplicações Monolíticas
- Serviços: uma visão geral
- Arquitetura de Microservices
Vantagens e desvantagens de uma arquitetura microservicesFábio Rosato
A demanda cada vez maior por agilidade, inovação e escalabilidade das soluções digitais tem impulsionado a adoção da arquitetura baseada em microservices. Os benefícios desta abordagem são reais e significativos, mas esse estilo arquitetural traz uma série de novos desafios.
Nesta apresentação, vamos fazer um mergulho profundo a partir de exemplos detalhados sobre as vantagens e desvantagens dessa abordagem arquitetural, como por exemplo:
Explorar como realizar a decomposição funcional e como definir taxonomias e granularidades adequadas para os microservices;
Como solucionar problemas arquiteturais como Client-side service discovery e Server-side service discovery, invocação, logging e monitoramento;
Definir protocolos de comunicação (HTTP, AMQP e Websocket) de forma minimizar a latência e lidar com outros requisitos não funcionais;
Como atacar questões de replicação de dados e regras de negócio e dados;
Design Patterns para problemas arquiteturais recorrentes;
Como conduzir a operação e evolução de um sistema nesta abordagem.
Microservices - Canal .NET Dev WeekendRenato Groff
Tópicos abordados nesta apresentação realizada durante o Canal .NET Dev Weekend, evento online realizado em 05/12/2015:
- Aplicações Monolíticas
- Serviços: uma visão geral
- Arquitetura de Microservices
Arquitetura de Micro Serviços não é uma bala de prata, esta é uma introdução comparando com Arquittura Monolítica. Como também as vantagens e desvantagens de usá-las.
Micro-serviços tornaram-se o tema mais quente na arquitetura de software durante o ano passado, e muito pode ser dito sobre os seus benefícios. No entanto, é importante compreender que ao começar a decompor o monolito, entramos no reino de sistemas distribuídos lidando com cenários de transparência de localização, recuperação à falhas, escalabilidade, autonomia, fácil atualização, etc. O projeto Spring Cloud promove ferramentas para facilmente implementar estes conceitos, definindo padrões de implementação para sistemas distribuídos com suporte para gerenciamento de configuração, descoberta de serviços, circuit breakers, roteamento, distribuição de sessão, barramento de controle, dentre outros. Nesta palestra serão demonstrados os conceitos destas ferramentas com a utilização do projeto Spring Cloud e com o suporte da plataforma do Netflix OSS.
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...Rodrigo Cândido da Silva
Os microservices tornaram-se o tema mais quente na arquitetura de software, e muito se pode dizer sobre os seus benefícios. Mas é importante compreender que ao começar a decompor o monolito entramos no reino de sistemas distribuídos. Precisamos lidar com cenários de transparência de localização, recuperação de falhas, escalabilidade, autonomia, facilidade de atualização e outros aspectos. Por outro lado, quando tratamos toda essa complexidade, conseguimos definir aplicações que rodam “eternamente” – tornando-se auto-curáveis (self-healing) e muito escaláveis.
O projeto Spring Cloud traz ferramentas para facilitar a aplicação desses conceitos na prática, definindo padrões de implementação para sistemas distribuídos com suporte a gerenciamento de configuração, descoberta de serviços, circuit breakers, roteamento, distribuição de sessões, barramento de controle, dentre outras técnicas. Pode também ser combinado com a plataforma Netflix OSS, que oferece componentes especialmente úteis em um ambiente de microservices, como Eureka (registro), Ribbon (localização), Hystrix (tolerância a falhas), Zulu (roteamento).
Nesta palestra será demonstrado como usar na prática essas ferramentas, bem como os desafios e lições aprendidas – tudo com base em casos reais de uso de uma arquitetura de microservices implementada com Spring Cloud e Netflix OSS.
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Renato Groff
Slides de apresentação realizada no dia 12/05/2020 (terça) focando na implementação de aplicações distribuídas com Azure Service Bus e Azure Functions.
Palestrantes:
- Gustavo Bellini Bigardi
- Renato Groffe
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
Microservices é um estilo arquitetural que têm revolucionado o desenvolvimento de aplicações através de pequenos serviços, desacoplados e com foco em executar uma tarefa específica comunicando-se através de Web APis ou mensagens assíncronas. Nesta palestra será apresentado como microservices é capaz de solucionar seus problemas no desenvolvimento de sistemas robustos e escaláveis. Serão abordadas as principais características deste paradigma, quais as vantagens e desvantagens em comparação a arquiteturas monolíticas, exemplos e situações de uso.
A versão do Java 9 trouxe muitas novidades e melhorias para a plataforma e estrutura da linguagem. Novos recursos foram incorporados, como suporte à modularidade (Jigsaw), JShell, Stream API, Collection factories, dentre outros. A versão 10 também acabou de ser lançada com alguns recursos bem importantes. Venha conhecer e acompanhar demonstrações destes recursos em ação e também discutir sobre as futuras modificações da próxima versão 11 planejada para setembro deste ano.
O desenvolvimento de aplicações no ambiente de nuvem já tornou-se ?mainstream?. É fato também que o deployment de uma aplicação Java EE neste ambiente pode ser feito rapidamente, sem muita necessidade de adaptação. Mas, muitos são os desafios enfrentados e as melhores práticas recomendadas afim de extrair todo o benefício (escalabilidade, elasticidade, produtividade, adaptabilidade, resiliência) que este ambiente pode oferecer. Nesta talk iremos demonstrar como tirar proveito dos recursos e serviços computacionais oferecidos pela nuvem (Microsoft Azure) no desenvolvimento de uma aplicação Java EE utilizando os últimos recursos da versão EE 8 (JAX-RS, CDI, JPA, EJB, JSON-P, Servlets, etc).
Microservices tornaram-se o tema mais quente na arquitetura de software atualmente, e muito pode ser dito sobre os seus benefícios. Mas, existem inúmeros desafios relacionados a implementação e propagação de segurança no contexto destes componentes. Esta palestra abordará como realizar os cenários de autenticação e autorização com microservices, bem como discutir boas práticas e estratégias de implementação de segurança cobrindo tecnologias como OAuth2, OpenID Connect, JSON Web Token.
Microservices have become the hottest topic in software architecture over the past year, and much can be said about their benefits. But there are many challenges related to their security implementation and security context propagation over their components. This session addresses how to perform authentication and authorization inside a microservices architecture, covering technologies such as OAuth2, OpenID Connect, and JSON Web Token and use of Spring Cloud Security to integrate with a Spring and/or Java EE–based application platform.
A versão do Java 9 acabou de ser lançada e traz muitas novidades e melhorias para a plataforma e na estrutura da linguagem. Novos recursos foram incorporados, como suporte à modularidade (Jigsaw), JShell, Stream API, Collection factories, dentre outros. Venha conhecer e acompanhar algumas demonstrações destes estes novos recursos em ação.
Microservices tornaram-se o tema mais quente na arquitetura de software durante o ano passado, e muito pode ser dito sobre os seus benefícios. Mas, existem inúmeros desafios relacionados a implementação e propagação de segurança no contexto destes componentes. Esta palestra abordará como realizar os cenários de autenticação e autorização com microservices, cobrindo tecnologias como OAuth2, JSON Web Token, utilizando a plataforma do Spring Cloud Security afim de integrar-se com aplicações Spring e/ou Java EE.
Serviços reativos foram definidos pelo Manifesto Reativo. Eles são construídos para serem flexíveis, fracamente acoplados, escaláveis, e também qualificados com base nos quatro principais princípios: responsividade, resiliência, elasticidade e dirigido à mensagens. Java e a plataforma Java EE oferecem uma ótima estrutura com bibliotecas para implementar serviços reativos e transformá-los em uma arquitetura otimizada para micro-serviços. Esta palestra apresentará as melhores práticas para implementar serviços reativos em Java usando RxJava, definindo uma arquitetura de micro-serviços baseada em casos reais e boa práticas aplicadas.
Serviços reativos foram definidos pelo Manifesto Reativo. Eles são desenvolvidos para serem mais flexíveis, fracamente acoplados, escaláveis e também qualificados a partir dos quatro princípios: responsivo, resiliente, elástico e direcionados a mensagens. A plataforma Java e Java EE oferecem uma ótima estrutura e bibliotecas para implementarem serviços reativos e transformá-los em uma arquitetura de micro-serviços resiliente.
Reactive services were defined by the Reactive Manifesto. They are built to be more flexible, loosely-coupled and scalable and also they are qualified based on the four principles: responsive, resilient, elastic and message driven. Java and the Java EE platform offers a pretty good structure and libraries to implement reactive services and transform it in a microservices architecture designed.
AngularJS tem atraído muita atenção ultimamente e a maioria das aplicações utilizando Angular necessitam comunicar-se por meio de uma API REST. A plataforma Java EE com sua robustez e o seu avançado suporte a REST é uma das melhoras soluções atuais para suportar todos os requisitos de uma API REST backend para aplicações baseadas em HTML5 e AngularJS. Esta palestra abordará como construir uma aplicação em Angular utilizando tecnologias backend Java EE, como JAX-RS, WebSockets, JSON-P e CDI. Ao final desta sessão, você vai entender os benefícios no uso destas tecnologias, bem como padrões e boas práticas aplicadas neste modelo de desenvolvimento. Os tópicos abordados incluem: Javascript, HTML5, AngularJS, algumas API's Java EE (JAX-RS, WebSockets, JSON-P, CDI).
Spring Data REST oferece uma customização no topo do projeto Spring Data que exporta os repositórios automaticamente como serviços REST. Implementa conceitos e boas práticas em arquiteturas REST, como RESTful, ALPS, HATEOAS, permitindo os clientes encontrarem e explorarem as funcionalidades expostas de uma maneira fácil e organizada.
Esta palestra irá abordar como desenvolver rapidamente uma API de microservicos REST utilizando Spring Boot e Spring Data REST. Será principalmente orientada a exemplos de código demonstrando a implementação destas tecnologias.
O AngularJS tem atraído muita atenção dos desenvolvedores, e a maioria das aplicações utilizando esse framework open source necessitam se comunicar por meio de APIs web. A plataforma Java EE, com sua robustez e suporte avançado a REST, é uma das melhoras soluções atuais para suportar todos os requisitos de uma API REST de backend para aplicações baseadas em HTML5 e AngularJS.
Esta palestra abordará como construir uma aplicação em AngularJS utilizando tecnologias backend Java EE, incluindo JAX-RS, WebSockets, JSON-P e CDI. Ao final você vai entender os benefícios do uso destas tecnologias, bem como padrões e boas práticas aplicadas nesse modelo de desenvolvimento. Os tópicos abordados incluem JavaScript, HTML5, AngularJS e várias APIs do Java EE.
O AngularJS tem atraído muita atenção dos desenvolvedores, e a maioria das aplicações utilizando esse framework open source necessitam se comunicar por meio de APIs web. A plataforma Java EE, com sua robustez e suporte avançado a REST, é uma das melhoras soluções atuais para suportar todos os requisitos de uma API REST de backend para aplicações baseadas em HTML5 e AngularJS.
Esta palestra abordará como construir uma aplicação em AngularJS utilizando tecnologias backend Java EE, incluindo JAX-RS, WebSockets, JSON-P e CDI. Ao final você vai entender os benefícios do uso destas tecnologias, bem como padrões e boas práticas aplicadas nesse modelo de desenvolvimento. Os tópicos abordados incluem JavaScript, HTML5, AngularJS e várias APIs do Java EE.
OAuth 2.0 is an open authentication and authorization protocol that enables applications to access data from each other. This session will show you how to define OAuth 2.0 settings to implement security for RESTful resources developed using JAX-RS for the Java EE platform. Join us to learn about safety requirements for REST services, HTTP Basic authentication, and centralized identity management with OAuth 2.0, plus get an overview of OAuth 2.0 specification, OAuth 2.0 and REST services, and existing alternatives for OAuth 2.0.
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...Rodrigo Cândido da Silva
Batch processing systems are regularly used to integrate data from multiple applications, usually developed and supported by different suppliers, and/or hosted on different software and hardware environments. JSR 352 (batch processing for the Java platform), which is part of the Java EE 7 platform, defines a programming model for batch applications and an execution environment on which to run and manage these batch processes. This presentation will show you how to create a batch processing system using the Java EE batch API. Topics covered will include batch processing architecture, developing Java EE batch jobs, the lifecycle of jobs, integration with message queues, and scalability and strength.
The popularity of cloud environments is real and the deployment of SaaS applications is becoming a strong business model. To support these applications is essential to create a multi-tenancy environment separating each customer data and providing a single execution environment with security and isolated customer contexts. This talk will demonstrate different technologies and strategies used to implement those features using the Java EE platform.
OAuth 2.0 is an open authentication and authorization protocol which enables applications to access each others data. This talk will presents how to implement the OAuth2 definitions to secure RESTful resources developed using JAX-RS in the Java EE platform.
2. Objetivos
Ao final desta unidade você irá:
• Compreender uma arquitetura utilizando Microservices
• Comparar uma arquitetura Monolítica vs Microservices
• Entender os principais benefícios e problemas
relacionados
• Compreender os desafios enfrentados por essa
arquitetura
• Entender alguns design patterns utilizados nessa
arquitetura
• Identificar as práticas necessárias para deployment
3. Agenda
• Definição
• Arquitetura Monolítica
• Arquitetura Microservices
• Principais Desafios
• Deployment e Monitoramento
• Design Patterns
5. Microservices
• O que são Microservices?
• É apenas “hype” ?
• Estilo de arquitetura?
• Alternativa ao modelo “monolito" tradicional?
• Modelo de arquitetura SOA?
6. Microservices
• Características
• Pequenos
• Deployment interdependentes
• Independente de tecnologia
• Independente de infra-estrutura
"Small independent component with well-
defined boundaries that’s doing one thing, but
doing it well"
7. Definição
"Decomposição de uma única aplicação em um conjunto de
pequenos serviços…
(diferentemente de uma aplicação monolítica)
…cada um rodando como um processo independente…
(não meramente módulos, mas unidades de execução)
…intercomunicando-se via protocolos abertos…
(HTTP/REST, messaging, eventos)
…com possibilidade de separação de escrita, escalabilidade,
distribuição e manutenção…
(potencialmente em diferentes linguagens de programação)
… que podem ser independentemente substituídos e atualizados"
8. Microservices
• O que NÃO são:
• A mesma coisa que SOA
• Arquitetura SOA realiza a integração de diferentes aplicações
enterprise
• Microservices são relacionados a decomposição de
aplicações monolíticas
• Finalmente a bala de prata
• Microservices envolve riscos e grandes desafios
• Novo modelo de arquitetura
• Você pode estar utilizando microservices hoje e não sabe
9. Use Cases
• Twitter mudou de Ruby/Rails monolítico para
Microservices
• Facebook mudou de PHP monolítico para
Microservices
• Netflix mudou de Java monolítico para
Microservices
10. Monolito
• Único módulo de aplicação
executável
• Deve ser escrito na mesma
linguagem de programação
• Java EE server + EAR
• Modularidade baseada na
linguagem ou plataforma
escolhida
• EJB, OSGi, CORBA, DCOM+
• Escalabilidade replicando o
monolito "inteiro"
15. Monolito
• Vantagens
• Facilidade de desenvolvimento
• Java EE server + EAR
• Facilidade para testabilidade
• Pode ser implementado end-to-end testing via UI (Selenium)
• Simplicidade de deployment
• Geralmente uma única cópia da aplicação empacotada no
server
• Facilidade para escalabilidade horizontal
• Topologia simplificada, usando um simples load balancer
• Gerenciamento simplificado
16. Monolito
• Desvantagens
• Linguagem e/ou framework lock
• Barreira para adoção de novas tecnologias
• Maior crescimento == maior complexidade
• Acoplamento generalizado
• Maior tempo ciclo “start / redeploy / stop”
• Redeployment da aplicação inteira à cada atualização
• Prática continuous deployment torna-se difícil
• Escalabilidade e resiliência fragilizada
• Efeito “dominó”, um memory leak pode afetar toda a
aplicação
19. Arquitetura Microservices
• Componentização via Serviços
• Serviços são pequenos, inter-dependentes e com deployment
independente
• Não bloqueia uso de uma única linguagem, ou mesmo
framework
• Utilização de interfaces claras e simples
• Princípio responsabilidade única
20. Arquitetura Microservices
• Comunicação heterogênea
• HTTP, TCP, UDP, Messaging, etc.
• Payloads: JSON, BSON, XML, Protocol Buffers, etc.
• Comunicação via APIs
21. Arquitetura Microservices
• Gerenciamento e manutenção
• Diferentes times responsáveis por diferentes serviços
• Atualização e substituição independente
• Menores unidades == maior facilidade de compreensão
22. Arquitetura Microservices
• Persistência poliglota
• Cada serviço define seu próprio modelo de persistência
• Nem sempre RDBMS é o melhor para TUDO
• Alguns problemas relacionados
• Como suportar transação? Como trabalhar com FK?
23. Microservices
• Benefícios
• Baixo acoplamento
• Maior resiliência e flexibilidade
• Aumenta escalabilidade
• Promove maior reusabilidade
• Independência de tecnologia e/ou framework
• Facilita compreensão e manutenção
• Foco em apenas pequenos módulos (serviços)
• Flexibiliza deployment
• Atualização pode ser realizada por serviço
24. Arquitetura Microservices
• Como quebrar o Monolito em Microservices?
• Consideração principal: funcionalidade de negócio
• Entidades de negócio (catálogo, cliente, produto)
• Verbos e regras de negócio (consulta, entrega, checkout)
• Princípio da responsabilidade única
• https://en.wikipedia.org/wiki/Single_responsibility_principle
• Bounded context (DDD)
• https://martinfowler.com/bliki/BoundedContext.html
25. Atividade
• Modele uma arquitetura de Microservices
• Defina os possíveis serviços e suas dependências
• Defina o modelo de persistência necessário para cada serviço, se
necessário
• Defina a camada de user interface
• DICA: Utilize uma ferramenta UML para auxiliar
• Perguntas
• Quais os prós e contras no uso de uma arquitetura de
Microservices vs Monolítica?
• Quais os principais desafios à serem enfrentados?
26. 12 Factor Applications
1. Codebase
2. Dependencies
3. Config
4. Backend Services
5. Build, Release, Run
6. Processess
7. Port Binding
8. Concurrency
9. Disposability
10.Dev/Pro Parity
11.Logs
12.Admin
“Methodology for building SaaS apps that has clean contract with
underlying operating system, enable continuous integration, deployment
with maximum agility, significant scale up capability, and independent
of programming language and backend services"
27. Microservices
• Quais os principais desafios?
• Gerenciamento de configuração
• Registro e descoberta dos serviços
• Roteamento
• Balanceamento de carga
• Tolerância à falhas
• Monitoramento
34. Demais Desafios
• Complexidade na camada de infra-estrutura
• Falácias da computação distribuída
• Serviços podem ficar indisponíveis
• Não acontece isso no universo monolítico
• Chamadas remotas “podem” ser custosas
• Contexto transacional não ACID
• Funcionalidades espalhadas em diversos serviços
• Gestão de dependências e versionamento dos
serviços
• Refactoring das fronteiras entre os serviços
35. Falácias da Computação Distribuída
• A rede é 100% confiável
• Zero latência
• A largura de banda é infinita
• A rede é segura
• Topologia de rede não muda
• Existe um administrador
• Custo de transporte é zero
• Ambiente de rede é homogêneo
37. Messaging Pattern
• Comunicação assíncrona entre os microservices
• Melhora a confiabilidade da arquitetura
• Promove o desacoplamento entre os serviços
38. Access Token
• Modelo stateless e essencialmente distribuído
• Centraliza o processo de autenticação e autorização
39. Circuit Breaker
• Implementação de uma estratégia de fallback para caso o
serviço destino esteja indisponível
• Promove resiliência com tolerância à falhas
• Evita o caos generalizado na arquitetura
40. Proxy
• Um único ponto de entrada para a arquitetura distribuída
• Evita o problema de CORS
• Facilita o registro para utilização no frontend
41. API Gateway
• Requisições podem ser apenas repassadas, ou
modificadas
• Pode implementar uma camada de serviços assíncrona
“Single entry point for the service clients”
42. Shared Data
• Alguns serviços necessitam compartilhar dados entre si
• Pode ser utilizado via cache distribuído
• Não deve ser utilizado como premissa, mas sim como
exceção
43. CQRS
• Separa a aplicação em duas partes, command (write) e
query (read)
• Promove o compartilhamento e a junção de dados
• Bastante utilizado em sistemas com requisitos de
relatórios
44. Log Aggregation
• N serviços == N logs
• Agregação e padronização de todos os logs gerados afim
de uma visualização centralizada
45. Distributed Tracing
• Ajuda a identificar aonde aconteceu o problema
• Service A > Service B > Service C
• Associa um request ID para toda a cadeia de execução
• Facilita o debugging e análise de performance do sistema
56. Atividade
• Revise sua arquitetura de Microservices
• É necessário a incorporação de algum outro serviço?
• Como implementar segurança?
• Como será realizado a estratégia de deployment?
• Será utilizada alguma ferramenta para agregação de logs e/ou tracing?
• Existe algum processo de negócio bloqueante e/ou com alto volume de
processamento?
• Como será endereçado o requisito de resiliência?
57. Conclusões
• Microservices é um modelo de design de arquitetura
• Arquitetura de Microservices possui vantagens e
desvantagens comparadas ao Monolítico
• Existem grandes desafios na adoção de uma
arquitetura de Microservices
• Containers são uma ótima opção para deployment de
Microservices
• Elasticidade, orquestração, flexibilidade, monitoramento
são necessidades importantes aos Microservices
58. Revisão
Nessa unidade você teve a oportunidade de:
• Compreender uma arquitetura utilizando Microservices
• Comparar uma arquitetura Monolítica vs Microservices
• Entender os principais benefícios e problemas
relacionados
• Compreender os desafios enfrentados por essa
arquitetura
• Entender alguns design patterns utilizados nessa
arquitetura
• Identificar as práticas necessárias para deployment