El documento habla sobre pruebas de escalabilidad y tolerancia a fallos en aplicaciones Kubernetes. Explica conceptos como escalado horizontal y vertical, así como mecanismos de autoescalado como HPA y Cluster Autoscaler. También cubre temas de observabilidad como monitorización, recopilación de logs y tracing entre servicios. Por último, introduce el concepto de ingeniería de caos para probar la resistencia a fallos de los sistemas.
CI/CD Best Practices for Your DevOps JourneyDevOps.com
The journey to realizing DevOps in any organization is fraught with a number of obstacles for developers and other stakeholders. These challenges are often caused by key CI/CD practices being misunderstood, partially implemented or even completely skipped. Now, as the industry positions itself to build on DevOps practices with a Software Delivery Management strategy, it’s more important than ever that we implement CI/CD best practices, and prepare for the future.
Join host Mitchell Ashely, and CloudBees’ Brian Dawson, DevOps evangelist, and Doug Tidwell, technical marketing director, as they explore and review the CI/CD best practices which serve as your stepping stones to DevOps and a successful Software Delivery Management strategy.
The webinar will cover CI/CD best practices including:
Containers and environment management
Continuous delivery or deployment
Movement from Dev to Ops
By the end of the webinar, you’ll understand the key steps for implementing CI/CD and powering your journey to DevOps and beyond.
Kubernetes es una plataforma cada vez más utilizada para poner en producción aplicaciones y servicios. Todos los grandes proveedores cloud la ofrecen y también puede instalarse on premises. En estas slides presentaremos los concetos básicos de la plataforma y aprenderemos a desplegar aplicaciones.
Las slides se han usado en un curso gratuito que ha sido grabado y publicado aquí: https://www.youtube.com/watch?v=5ovqsvqwtZM
Traditional approaches to integration testing—using shared, local, or in-memory databases—fall short for today's modern developer.
Developers today are building cloud native distributed microservices and are taking advantage of a rich variety of backing services. This explosion of applications and backing services introduces new challenges in creating the necessary environments for integration testing. To be useful and effective, these environments must be easy to create and they must resemble production as closely as possible. New solutions are needed to make this need a reality.
Enter Testcontainers!
Testcontainers Java is a library that supports JUnit tests and makes it incredibly easy to create lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
In this talk, you'll learn when and how to use Testcontainers for Java. We'll cover the fundamentals and walk through examples to illustrate various ways you can apply Testcontainers to your applications.
CI/CD Best Practices for Your DevOps JourneyDevOps.com
The journey to realizing DevOps in any organization is fraught with a number of obstacles for developers and other stakeholders. These challenges are often caused by key CI/CD practices being misunderstood, partially implemented or even completely skipped. Now, as the industry positions itself to build on DevOps practices with a Software Delivery Management strategy, it’s more important than ever that we implement CI/CD best practices, and prepare for the future.
Join host Mitchell Ashely, and CloudBees’ Brian Dawson, DevOps evangelist, and Doug Tidwell, technical marketing director, as they explore and review the CI/CD best practices which serve as your stepping stones to DevOps and a successful Software Delivery Management strategy.
The webinar will cover CI/CD best practices including:
Containers and environment management
Continuous delivery or deployment
Movement from Dev to Ops
By the end of the webinar, you’ll understand the key steps for implementing CI/CD and powering your journey to DevOps and beyond.
Kubernetes es una plataforma cada vez más utilizada para poner en producción aplicaciones y servicios. Todos los grandes proveedores cloud la ofrecen y también puede instalarse on premises. En estas slides presentaremos los concetos básicos de la plataforma y aprenderemos a desplegar aplicaciones.
Las slides se han usado en un curso gratuito que ha sido grabado y publicado aquí: https://www.youtube.com/watch?v=5ovqsvqwtZM
Traditional approaches to integration testing—using shared, local, or in-memory databases—fall short for today's modern developer.
Developers today are building cloud native distributed microservices and are taking advantage of a rich variety of backing services. This explosion of applications and backing services introduces new challenges in creating the necessary environments for integration testing. To be useful and effective, these environments must be easy to create and they must resemble production as closely as possible. New solutions are needed to make this need a reality.
Enter Testcontainers!
Testcontainers Java is a library that supports JUnit tests and makes it incredibly easy to create lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
In this talk, you'll learn when and how to use Testcontainers for Java. We'll cover the fundamentals and walk through examples to illustrate various ways you can apply Testcontainers to your applications.
DevOps is a methodology capturing the practices adopted from the very start by the web giants who had a unique opportunity as well as a strong requirement to invent new ways of working due to the very nature of their business: the need to evolve their systems at an unprecedented pace as well as extend them and their business sometimes on a daily basis.
While DevOps makes obviously a critical sense for startups, I believe that the big corporations with large and old-fashioned IT departments are actually the ones that can benefit the most from adopting these principles and practices.
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...Simplilearn
This presentation "Chef vs Puppet vs Ansible vs Saltstack" will compare the DevOps configuration management tools Chef, Puppet, Ansible and Saltstack in terms of their capabilities, architecture, performance, ease of setup, language, scalability and pros and cons. The chef is a configuration management tool written in Ruby and Erlang. Puppet is an open-source software configuration management tool that runs on many Unix-like systems and also Windows. Ansible is yet another tool that automates software provisioning, configuration management, and application deployment. Saltstack is a Python-based open-source configuration management tool. Now, let us get started and get to know which is the best configuration management platform among Chef, Puppet, Ansible and Saltstack.
Below are the contents of our "Chef vs Puppet vs Ansible vs Saltstack" configuration management tools comparison slides:
1) Need for Configuration Management Tools
2) Chef - Infrastructure, Architecture, Pros and Cons
3) Puppet- Infrastructure, Architecture, Pros and Cons
4) Ansible - Infrastructure, Architecture, Pros and Cons
5) Saltstack - Infrastructure, Architecture, Pros and Cons
6) Comparison on the basis of architecture, ease of setup, language, scalability, management and interoperability.
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.
Learn more at https://www.simplilearn.com/cloud-computing/devops-practitioner-certification-training
Understanding MicroSERVICE Architecture with Java & Spring BootKashif Ali Siddiqui
This is a deep journey into the realm of "microservice architecture", and in that I will try to cover each inch of it, but with a fixed tech stack of Java with Spring Cloud. Hence in the end, you will be get know each and every aspect of this distributed design, and will develop an understanding of each and every concern regarding distributed system construct.
A high level introduction to DevOps. Explains what it is, how popular DevOps has become, why DevOps is popular, how DevOps differs from traditional approaches and some next steps to implementation.
DevOps concepts, tools, and technologies v1.0Mohamed Taman
DevOps is not a tool or technology; it is an approach or culture that makes things better.
This session describes in detail how DevOps solves different problems of the traditional
application delivery cycle.
It also describes how it can be used to make development and operations teams efficient and effective in order to make time to market faster by improving culture. It also explains key concepts essential for evolving DevOps culture.
In this session, we will cover the following topics:
1- Understanding the DevOps movement
2- The DevOps lifecycle—it's all about “continuous”
3- Continuous integration
4- Configuration management
5- Continuous delivery/continuous deployment
6- Continuous monitoring
7- Continuous feedback
8- Tools and technologies
These are slides from the presentation that I gave to Global Azure Greece 2021 on Saturday, April 17, 2021.
Abstract:
Our work with legacy code doesn’t often put us in a position to move quickly into new or trendy tooling. And while we almost always introduce Docker very early in our projects, it is usually only for the purpose of standardizing and easing setup of developer environments. Transitioning a live environment to containers, however, can be a daunting prospect. There are a variety of reasons for that, many of which you’ve probably encountered yourself, which include:
1. The application isn’t in the cloud yet
2. It’s too complicated
3. Container orchestration (like Kubernetes or Swarm) is too new/buggy/insecure
4. We need microservices to leverage Kubernetes
5. The application is a monolith All these might be valid reasons, but this talk will focus on our experiences in that last scenario — containerizing a monolith.
This presentation is conducted on 14th Sept in Limerick DotNet User Group.
(https://www.meetup.com/preview/Limerick-DotNet/events/xskpdnywmbsb)
SlideShare Url: https://www.slideshare.net/lalitkale/introduction-to-microservices-80583928
In this presentation, new architectural style - Microservices and it's emergence is discussed. We will also briefly touch base on what are not microservices, Conway's law and organization design, Principles of microservices and service discovery mechanism and why it is necessary for microservices implementation.
About Speaker:
Lalit is a senior developer, software architect and consultant with more than 12 yrsof .NET experience. He loves to work with C# .NET and Azure platform services like App Services, Virtual Machines, Cortana, and Container Services. He is also the author of 'Building Microservices with .NET Core' (https://www.packtpub.com/web-development/building-microservices-net-core) book.
To know more and connect with Lalit, you can visit his LinkedIn profile below. https://www.linkedin.com/in/lalitkale/
This presentation will be useful for software architects/Managers, senior developers.
Do share your feedback in comments.
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...Edureka!
***** DevOps Masters Program : https://www.edureka.co/masters-progra... *****
This DevOps tutorial takes you through what is DevOps all about and basic concepts of DevOps and DevOps Tools. This DevOps tutorial is ideal for beginners to get started with DevOps. Check our complete DevOps playlist here: http://goo.gl/O2vo13
DevOps Tutorial Blog Series: https://goo.gl/P0zAfF
This presentation about DevOps will help you understand what is DevOps, how is DevOps different from traditional IT, benefits of DevOps, the lifecycle of DevOps and tools used in DevOps processes. DevOps is one of the most trending IT jobs. It is a collaboration between development and operation teams which enables continuous delivery of applications and services to our end users. However, if you want to become a DevOps engineer, you must have knowledge of various DevOps tools (like Git, Maven, Selenium, Jenkins, Docker, Ansible, Nagios etc.) to achieve automation at each stage which helps in gaining Continuous Development, Continuous Integration, Continuous Testing and Continuous Monitoring in order to deliver a quality product to the client at a very fast pace. Now, let us get started and understand DevOps and does the various DevOps tools work.
Below are the topics explained in this DevOps presentation:
1. What is DevOps?
2. Benefits of DevOps
3. Lifecycle of DevOps
4. Tools in DevOps
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
An introduction to docker; the concepts; how to use it and why. The presentation is mainly based on the following presentation by docker, but with added info about Docker Compose and Docker Swarm.
https://www.slideshare.net/Docker/docker-101-nov-2016
#container #docker #Trifork #TriforkSelected #GotoConf
El despliegue de aplicaciones dentro de contenedores en producción cada vez está más extendido y, de todas las opciones de orquestación, Kubernetes (K8s) es la que, indiscutiblemente, está ganando la batalla.
Pero, si soy developer, ¿esto me importa? No debemos ver los contenedores y la orquestación de estos como algo “de sistemas”. Hay distintas razones por las que (nos) conviene saber de qué va esto.
La primera razón, y posiblemente la más importante, es que el uso de contenedores nos facilita la vida durante el desarrollo y nos ayuda a mantener nuestro entorno de trabajo limpio sin tener que lidiar con la instalación de diferentes versiones del mismo software, por ejemplo. Si nuestra “aplicación” consta de diferentes servicios, tener una manera de describirlos todos y sus dependencias simplifica enormemente el arranque y parada de estos servicios, pudiendolo hacer en bloque.
También hay que tener en cuenta que para que las aplicaciones puedan aprovechar todas las ventajas que Docker y Kubernetes ofrecen deben cumplir ciertas condiciones. Como developers, debemos tenerlo en cuenta a la hora de pensar la arquitectura y diseño de estas: cómo se les provee la configuración, cómo se deben comportar ante el escalado y la convivencia de versiones,...
Sabemos que los distintos entornos, (local, test, staging, preproducción, producción, …) deben tener la misma configuración o podemos encontrarnos con sorpresas desagradables a la hora de desplegar. Esto, que históricamente ha sido una utopía, con los contenedores es posible. En esta charla veremos cómo podemos arrancar en local un entorno lo más similar a producción, arrancando Kubernetes en local.
En nuestro sistema de CI, además de por homogeneización de entornos, también podemos sacar partido de tener nuestra aplicaciones “contenerizadas”. Veremos cómo integrar cualquier sistema de CI con Kubernetes para conseguir un Continuous Deployment real. A partir de aquí, dar el salto a Continuous Delivery es prácticamente trivial con K8s!
Por si estas razones no fueran suficientes, conocer los conceptos y el entorno en los que nuestras aplicaciones se despliegan nos ayudará a comunicarnos con DevOps y atajar juntos los problemas que puedan surgir. Durante la charla veremos los conceptos básicos de K8s y cómo podemos desplegarlo en AWS con Elastic Container Service for Kubernetes (EKS) para hacer pruebas o, quién sabe, poder estar más cerca de ser un Full Cycle Developer.
DevOps is a methodology capturing the practices adopted from the very start by the web giants who had a unique opportunity as well as a strong requirement to invent new ways of working due to the very nature of their business: the need to evolve their systems at an unprecedented pace as well as extend them and their business sometimes on a daily basis.
While DevOps makes obviously a critical sense for startups, I believe that the big corporations with large and old-fashioned IT departments are actually the ones that can benefit the most from adopting these principles and practices.
Chef vs Puppet vs Ansible vs Saltstack | Configuration Management Tools | Dev...Simplilearn
This presentation "Chef vs Puppet vs Ansible vs Saltstack" will compare the DevOps configuration management tools Chef, Puppet, Ansible and Saltstack in terms of their capabilities, architecture, performance, ease of setup, language, scalability and pros and cons. The chef is a configuration management tool written in Ruby and Erlang. Puppet is an open-source software configuration management tool that runs on many Unix-like systems and also Windows. Ansible is yet another tool that automates software provisioning, configuration management, and application deployment. Saltstack is a Python-based open-source configuration management tool. Now, let us get started and get to know which is the best configuration management platform among Chef, Puppet, Ansible and Saltstack.
Below are the contents of our "Chef vs Puppet vs Ansible vs Saltstack" configuration management tools comparison slides:
1) Need for Configuration Management Tools
2) Chef - Infrastructure, Architecture, Pros and Cons
3) Puppet- Infrastructure, Architecture, Pros and Cons
4) Ansible - Infrastructure, Architecture, Pros and Cons
5) Saltstack - Infrastructure, Architecture, Pros and Cons
6) Comparison on the basis of architecture, ease of setup, language, scalability, management and interoperability.
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.
Learn more at https://www.simplilearn.com/cloud-computing/devops-practitioner-certification-training
Understanding MicroSERVICE Architecture with Java & Spring BootKashif Ali Siddiqui
This is a deep journey into the realm of "microservice architecture", and in that I will try to cover each inch of it, but with a fixed tech stack of Java with Spring Cloud. Hence in the end, you will be get know each and every aspect of this distributed design, and will develop an understanding of each and every concern regarding distributed system construct.
A high level introduction to DevOps. Explains what it is, how popular DevOps has become, why DevOps is popular, how DevOps differs from traditional approaches and some next steps to implementation.
DevOps concepts, tools, and technologies v1.0Mohamed Taman
DevOps is not a tool or technology; it is an approach or culture that makes things better.
This session describes in detail how DevOps solves different problems of the traditional
application delivery cycle.
It also describes how it can be used to make development and operations teams efficient and effective in order to make time to market faster by improving culture. It also explains key concepts essential for evolving DevOps culture.
In this session, we will cover the following topics:
1- Understanding the DevOps movement
2- The DevOps lifecycle—it's all about “continuous”
3- Continuous integration
4- Configuration management
5- Continuous delivery/continuous deployment
6- Continuous monitoring
7- Continuous feedback
8- Tools and technologies
These are slides from the presentation that I gave to Global Azure Greece 2021 on Saturday, April 17, 2021.
Abstract:
Our work with legacy code doesn’t often put us in a position to move quickly into new or trendy tooling. And while we almost always introduce Docker very early in our projects, it is usually only for the purpose of standardizing and easing setup of developer environments. Transitioning a live environment to containers, however, can be a daunting prospect. There are a variety of reasons for that, many of which you’ve probably encountered yourself, which include:
1. The application isn’t in the cloud yet
2. It’s too complicated
3. Container orchestration (like Kubernetes or Swarm) is too new/buggy/insecure
4. We need microservices to leverage Kubernetes
5. The application is a monolith All these might be valid reasons, but this talk will focus on our experiences in that last scenario — containerizing a monolith.
This presentation is conducted on 14th Sept in Limerick DotNet User Group.
(https://www.meetup.com/preview/Limerick-DotNet/events/xskpdnywmbsb)
SlideShare Url: https://www.slideshare.net/lalitkale/introduction-to-microservices-80583928
In this presentation, new architectural style - Microservices and it's emergence is discussed. We will also briefly touch base on what are not microservices, Conway's law and organization design, Principles of microservices and service discovery mechanism and why it is necessary for microservices implementation.
About Speaker:
Lalit is a senior developer, software architect and consultant with more than 12 yrsof .NET experience. He loves to work with C# .NET and Azure platform services like App Services, Virtual Machines, Cortana, and Container Services. He is also the author of 'Building Microservices with .NET Core' (https://www.packtpub.com/web-development/building-microservices-net-core) book.
To know more and connect with Lalit, you can visit his LinkedIn profile below. https://www.linkedin.com/in/lalitkale/
This presentation will be useful for software architects/Managers, senior developers.
Do share your feedback in comments.
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...Edureka!
***** DevOps Masters Program : https://www.edureka.co/masters-progra... *****
This DevOps tutorial takes you through what is DevOps all about and basic concepts of DevOps and DevOps Tools. This DevOps tutorial is ideal for beginners to get started with DevOps. Check our complete DevOps playlist here: http://goo.gl/O2vo13
DevOps Tutorial Blog Series: https://goo.gl/P0zAfF
This presentation about DevOps will help you understand what is DevOps, how is DevOps different from traditional IT, benefits of DevOps, the lifecycle of DevOps and tools used in DevOps processes. DevOps is one of the most trending IT jobs. It is a collaboration between development and operation teams which enables continuous delivery of applications and services to our end users. However, if you want to become a DevOps engineer, you must have knowledge of various DevOps tools (like Git, Maven, Selenium, Jenkins, Docker, Ansible, Nagios etc.) to achieve automation at each stage which helps in gaining Continuous Development, Continuous Integration, Continuous Testing and Continuous Monitoring in order to deliver a quality product to the client at a very fast pace. Now, let us get started and understand DevOps and does the various DevOps tools work.
Below are the topics explained in this DevOps presentation:
1. What is DevOps?
2. Benefits of DevOps
3. Lifecycle of DevOps
4. Tools in DevOps
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
An introduction to docker; the concepts; how to use it and why. The presentation is mainly based on the following presentation by docker, but with added info about Docker Compose and Docker Swarm.
https://www.slideshare.net/Docker/docker-101-nov-2016
#container #docker #Trifork #TriforkSelected #GotoConf
El despliegue de aplicaciones dentro de contenedores en producción cada vez está más extendido y, de todas las opciones de orquestación, Kubernetes (K8s) es la que, indiscutiblemente, está ganando la batalla.
Pero, si soy developer, ¿esto me importa? No debemos ver los contenedores y la orquestación de estos como algo “de sistemas”. Hay distintas razones por las que (nos) conviene saber de qué va esto.
La primera razón, y posiblemente la más importante, es que el uso de contenedores nos facilita la vida durante el desarrollo y nos ayuda a mantener nuestro entorno de trabajo limpio sin tener que lidiar con la instalación de diferentes versiones del mismo software, por ejemplo. Si nuestra “aplicación” consta de diferentes servicios, tener una manera de describirlos todos y sus dependencias simplifica enormemente el arranque y parada de estos servicios, pudiendolo hacer en bloque.
También hay que tener en cuenta que para que las aplicaciones puedan aprovechar todas las ventajas que Docker y Kubernetes ofrecen deben cumplir ciertas condiciones. Como developers, debemos tenerlo en cuenta a la hora de pensar la arquitectura y diseño de estas: cómo se les provee la configuración, cómo se deben comportar ante el escalado y la convivencia de versiones,...
Sabemos que los distintos entornos, (local, test, staging, preproducción, producción, …) deben tener la misma configuración o podemos encontrarnos con sorpresas desagradables a la hora de desplegar. Esto, que históricamente ha sido una utopía, con los contenedores es posible. En esta charla veremos cómo podemos arrancar en local un entorno lo más similar a producción, arrancando Kubernetes en local.
En nuestro sistema de CI, además de por homogeneización de entornos, también podemos sacar partido de tener nuestra aplicaciones “contenerizadas”. Veremos cómo integrar cualquier sistema de CI con Kubernetes para conseguir un Continuous Deployment real. A partir de aquí, dar el salto a Continuous Delivery es prácticamente trivial con K8s!
Por si estas razones no fueran suficientes, conocer los conceptos y el entorno en los que nuestras aplicaciones se despliegan nos ayudará a comunicarnos con DevOps y atajar juntos los problemas que puedan surgir. Durante la charla veremos los conceptos básicos de K8s y cómo podemos desplegarlo en AWS con Elastic Container Service for Kubernetes (EKS) para hacer pruebas o, quién sabe, poder estar más cerca de ser un Full Cycle Developer.
Kubernetes es una plataforma demasiado popular en este momento, todo mundo la usa o quiere usarla, pero es muy importante conocer las consideraciones y malos usos en los que algunos equipos caen al ejecutar aplicaciones Java.
Teniendo en cuenta la gran masificación de los web services, como así también su utilidad, el objetivo del presente proyecto es elaborar un servicio web, teniendo en cuenta su optimización y comparando diferentes plataformas para poder lograr un servicio que pueda atender la mayor cantidad de solicitudes posibles.
Con motivo de realizar lo mencionado anteriormente se presenta la siguiente idea:
Crear un web services SOAP que permita realizar búsquedas de ip’s y que devuelva la localización del mismo.
El objetivo de esta aplicación es ofrecer la posibilidad de brindar un servicio de buscador eficiente
Dev Tools para Kubernetes - Codemotion 2019Micael Gallego
Charla impartida entre Pablo Chico y Micael Gallego en la que se muestran algunas herramientas para mejorar la experiencia de desarrollo de aplicaciones cloud native para Kubernetes. Concretamente, se presenta cómo okteto puede reducir el tiempo empleado en el ciclo de change, build, push, deploy de pods Java en Kubernetes usando la sincronización de ficheros.
Ejemplos de código en https://github.com/micaelgallego/k8s-dev-tools-codemo19
Derribando la torre de marfil - Plain Concepts Dev DayPlain Concepts
Los microservicios son el nuevo hype del desarrollo pero, ¿seguro que sabemos cómo y cuándo utilizarlos? En esta charla veremos, a través de un ejemplo de un caso de negocio, una breve introducción a los microservicios, ventajas y retos que plantea (no todo va a ser fácil), incluyendo buenas prácticas.
Los mejores trucos y prácticas para configurar drupalSiteGround España
En nuestro webinar gratuito de este mes sobre Drupal tuvimos el placer de contar con Oskar Calvo, que nos dió sus consejos sobre “Los mejores trucos y prácticas para configurar tu Drupal” (#SGwebinar).
El webinar trató de buenas prácticas para tener un proyecto Drupal funcionando correctamente, tanto en la base de datos, como en la caché, en los módulos instalados, así como en las plantillas. Himcios un repaso a las configuraciones, tanto de módulos, base de datos y servidores sin entrar en detalles de programación.
Puedes leer más en Twitter #SGwebinar y en nuestro blog https://www.siteground.es/blog/webinars-buenas-practicas-configuracion-drupal
Pues volvemos de nuevo a la carga con un nuevo meetup donde os vamos a contar cómo podeis optimizar al máximo los recursos que CloudHub nos ofrece como por ejemplo:
1.- Saber dimensionar el número de operaciones por API
2.- Aplicar buenas prácticas para no saturar los recursos
3.- Aprovechar al máximo el 0.1 vCore
4.- Cuando escalar vertical y horizontalmente un API
5.- Utilizar herramientas de análisis de código como Sonar
Cómo incluir videoconferencia en tu web usando la tecnología WebRTC y servidores de media open source y comerciales. Se explora en más detalle OpenVidu, una plataforma de videoconferencias con ediciones open source y comerciales
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
Ciclo de vida del software, repositorios de código, análisis estático de código, pruebas software, integración continua, entrega continua, despliegue continuo, DevOps.
Curso de Angular 9 para desarrollo de aplicaciones SPA (Single Page Application).
● Tema 1: Introducción a Angular: TypeScript y herramientas
● Tema 2: Componentes
● Tema 3: REST y Servicios
● Tema 4: Aplicaciones multipágina: Router
● Tema 5: Librerías de componentes
● Tema 6: Publicación
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Micael Gallego
Una vista panorámica de la situación actual de la concurrencia y la asincronía. Comparando modelos de concurrencia y técnicas de programación asíncrona en lenguajes de programación como Java, C/C++ y JavaScript.
Testing cloud and kubernetes applications - ElasTestMicael Gallego
Kubernetes applications are complex distributed systems composed by several microservices. When some end to end test is failing in these kind of applications, root cause is difficult without good observability tools. In this presentation, several tools are presented to make easier root cause analysis of cloud and kubernetes applications. One of the most interesting ones is ElasTest, a platform that integrates several open source tools to provide observability to e2e testing of complex distributed systems.
OpenVidu es una plataforma para incorporar videoconferencia y video streaming en tus aplicaciones web. Es muy fácil de usar y tienes multitud de ejemplos con diferentes tecnologías. Además, es open source. Qué más se puede pedir?
Estas slides son una presentación a las pruebas de software. Para qué sirven, qué tipos de pruebas existen, qué librerías, frameworks y herramientas se pueden utilizar para implemenar pruebas automatizadas, etc.
Node.js es una tecnología cada vez más popular para el desarrollo de servicios web. Grandes abanderados de Java como Netflix están usando cada vez más JavaScript para implementar parte de su backend. Pese a esta realidad, muchos javeros como yo no quieren tocar JavaScript ni con un palo, y cuando hay que hacerlo, sólo en el browser.
Si eres javero y no te gusta JavaScript, en esta presentación tendrás una visión general sobre cómo desarrollar servicios web con Node.js. Verás cómo con TypeScript, async/await y frameworks como Nest y TypeORM no echarás de menos a Spring y JPA. Pero lo mismo pasa al revés, verás cómo en Java también puedes implementar apps con los mismos principios reactivos y funcionales tan comunes en Node.js.
Testing fácil con Docker: Gestiona dependencias y unifica entornosMicael Gallego
Docker es una tecnología que permite empaquetar el software de forma que se pueda ejecutar de forma sencilla y rápida, sin instalación y en cualquier sistema operativo. Es como tener cualquier programa instalado en su propia máquina virtual, pero arranca mucho más rápido y consume menos recursos. Docker está cambiando la forma en la que desplegamos software, pero también está afectando al propio proceso de desarrollo y particularmente al testing.
En este taller pondremos en práctica cómo usar Docker para facilitar la implementación de diferentes tipos de tests y su ejecución tanto en el portátil como en el entorno de integración continua. Aunque las técnicas que veremos se podrán aplicar en cualquier lenguaje de programación, los ejemplos estarán basados en Java y en JavaScript.
Using Docker to build and test in your laptop and JenkinsMicael Gallego
Docker is changing the way we create and deploy software. This presentation is a hands-on introduction to how to use docker to build and test software, in your laptop and in your Jenkins CI server
Como ser mas productivo en el desarrollo de aplicacionesMicael Gallego
Charla impartida en la Universidad Politécnica de Madrid presentando algunas técnicas y herramientas para ser más productivo en el desarrollo de aplicaciones
Docker para Data Scientist - Master en Data Science URJCMicael Gallego
Presentación de Docker en el Master en Data Science de la URJC en la asignatura de Arquitecturas en la nube. En esta asignatura hablamos de AWS, Azure, Docker, Kubernetes, Mesos
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...Micael Gallego
En este artículo se describe una metodología docente que pretende emular en el aula el trabajo que los alumnos realizarán cuando finalicen sus estudios. Esta metodología combina el Aprendizaje Basado en Proyectos y la Clase Invertida y está diseñada para la asignatura de Desarrollo Web del Grado en Ingeniería del Software de la URJC. La metodología propuesta se aplicará en el curso 2016/2017 y supone una evolución de una metodología previa, aplicada en el curso 2015/2016 en la misma asignatura. Se espera que los cambios introducidos en esta nueva metodología mejoren los resultados obtenidos en el curso pasado.
El mundo real en el aula, con la ayuda del profesorMicael Gallego
Presentación en las Jornadas de Innovación y TIC Educativas: JITICE 2016 de la Universidad Rey Juan Carlos.
Aplicación de Project Based Learning y Flipped Classroom en la asignatura de "Desarrollo Web" en el Grado de Ingeniería del Software
Slides del taller de Angular 2 realizado en el Campus Madrid de Google el 26 de Septiembre de 2016. Actualizado con la versión final de Angular 2.
Grabación del taller: https://www.youtube.com/watch?v=YVVjXpquzBE
Repositorio de código: https://github.com/codeurjc/ng2-campusmadrid
GRASP con PR para el SRFLP en el MAEB 2016Micael Gallego
Presentación sobre el Problema de la distribución de instalaciones en línea (SRFLP) en el MAEB 2016 dentro del CEDI 2016. Usamos un GRASP con Path Relinking que mejora los métodos del estado del arte
5. @micael_gallego
Servicios en producción
•Asistencia en el despliegue y en la actualización
•Reinicio si el servicio finaliza o no responde a las
peticiones (resiliencia)
•Uso de más recursos hardware la carga aumenta
(escalabilidad)
•Aprovechamiento de recursos hardware
compartiendo pero sin interferencias
(multitenancy)
•Monitorización
13. 13@micael_gallego
•Si un pod no es capaz de atender el tráfico con
calidad de servicio, podemos crear más
réplicas de ese pod
•La carga se distribuye entre ellos
•Cada pod puede ejecutarse en cualquier nodo
del cluster
•Los nodos se pueden añadir bajo demanda
Escalabilidad
14. @micael_gallego
Reparto de carga
•userspace
– Round robin
•iptables
– Random
•ipvs
– Round robin
– Least connection
– Destination hashing
– Source hashing
– Shortest expected delay
– Never queue
Proxy-mode
https://kubernetes.io/docs/concepts/services-networking/
16. 16@micael_gallego
Demo time
Web gatitos con una réplica y con 2
réplicas
$ kubectl create -f webgatos/webgatos.yml
$ minikube service webgatos-service
$ kubectl get pods
$ kubectl scale deployment/webgatos-deploy --replicas=2
$ kubectl get pods
17. 17@micael_gallego
•Horizontal Pod Autoscaler
– El número de réplicas puede cambiar de
forma automática en base a alguna métrica
de carga objetivo
– Aumenta réplicas si se sobrepasa la métrica
– Reduce réplicas si se está por debajo
Autoescalado
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/
20. 20@micael_gallego
Demo time
Web raíz cuadrada con autoscaling
$ kubectl create -f hpa/deployment.yaml
$ kubectl create -f hpa/hpa-autoscaling.yaml
$ watch kubectl get pods
$ kubectl run load-generator --generator=run-pod/v1
-it --image=busybox:1.30 /bin/sh
# while true; do wget -q -O- http://php-apache; done
21. 21@micael_gallego
•Vertical Pod Autoscaler
– Ajusta los recursos solicitados de un pod en base a
los recursos usados realmente
– Para aplicar los nuevos recursos, reinicia el pod
– Los límites máximos no cambian
– No es compatible con HPA
– En desarrollo!!!
Autoescalado
https://cloud.google.com/kubernetes-engine/docs/concepts/verticalpodautoscaler
https://medium.com/magalix/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autos
caler-and-vertical-pod-2a441d9ad231
23. @micael_gallego
● Cluster autoscaling
● El número de nodos de un cluster puede cambiar
dinámicamente en función del número de pods del cluster
● Si un nuevo pod que se va a crear no cabe en el cluster
(por la reserva de recursos de cada uno), se crea un nuevo
nodo en el cluster
● Esta funcionalidad requiere de la instalación de un plugin
en Kubernetes dependiendo del proveedor cloud /VMs.
https://kubernetes.io/docs/tasks/administer-cluster/cluster-management/#cluster-
autoscaling
https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler
Autoescalado
25. @micael_gallego
● Escalado inmediato?
● Se tienen que recoger métricas
● HPA consulta las métricas cada cierto tiempo (por defecto
30 seg)
● Después de un cambio, hay periodo de espera hasta que
todo se estabiliza (3 min por defecto)
● Los pods pueden tardar en arrancar y estar disponibles
● Los nodos tardan mucho más en arrancar
Autoescalado
26. @micael_gallego
Sobredimensiona un poco si quieres
soportar picos de tráfico
Autoescalado
O saca la bola de cristal
https://medium.com/netflix-techblog/scryer-netflixs-predictive-auto-scaling-engine-part-2-b
b9c4f9b9385
27. @micael_gallego
● Se asume que los pods de un deployment no
tienen estado (stateless)
● Cualquier pod puede ser eliminado (scale in)
● Un nuevo pod pueda atender tráfico de un usuario
que antes atendía otro pod (scale out)
● Pero hay veces que nuestras apps tienen estado
(statefull)
Escalado con estado
Qué hacemos?
28. 28@micael_gallego
Demo time
App con estado replicada
$ kubectl create -f webapp-stateful/k8s/webapp.yaml
$ minikube service webapp
$ kubectl delete -f webapp-stateful/k8s/webapp.yaml
29. @micael_gallego
● Algunas opciones
● Convierte la app en stateless > Mueve el estado a
otro sitio
● Crea aplicaciones que repliquen el estado entre sus
réplicas
● Usa mecanismos de escalado con estado en
Kubernetes (StatefulSet)
● Gestiona el estado fuera de Kubernetes (en los
servicios proporcionados por el proveedor en la nube
Escalado con estado
30. @micael_gallego
● Convierte la app en stateless
● Web stateful:
● App web que mantiene datos del usuario conectado
en memoria
● Peticiones pueden ser atendidas por diferentes
pods y se le considera nuevo usuario
● Solución:
● Los datos de la sesión tienen que estar en un
recurso compartido
Escalado con estado
34. @micael_gallego
● Aplicaciones que repliquen estado
Escalado con estado
https://hazelcast.com/
Estructuras de datos compartidas y replicadas para Java
35. @micael_gallego
● Usa mecanismos de escalado stateful
● Los recursos StatefulSet proporcionan un
mecanismo similar a los Deployment pero con
características específicas para contenedores con
estado:
● Identificadores de red estables y únicos por pod
● Almacenamiento persistente estable por pod
● Despliegue y escalado ordenado de pods
● Terminado y borrado ordenado de pods
Escalado con estado
https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
36. @micael_gallego
● Usa mecanismos de escalado stateful
Escalado con estado
Es muy complejo diseñar un sistema
distribuido con estado escalable y
tolerante a fallos
Mejor usa servicios existentes
preparados para trabajar en
Kubernetes
37. @micael_gallego
● MySQL escalables y tolerantes a fallos
en K8s
Escalado con estado
https://vitess.io/
https://portworx.com/
https://github.com/oracle/mysql-operator
40. @micael_gallego
● Se usan herramientas de pruebas de
carga para simular tráfico
● Se verifica la calidad de servicio desde
fuera
● Se observa que kubernetes (nodos) y las
apps (réplicas) escalan como se espera
Pruebas de escalabilidad
45. @micael_gallego
¿Qué ocurre en el cluster?
Observabilidad
● Monitorización (CPU, memoria…)
● Alertas y visualización
● Agregación de logs
● Registro de la comunicación entre servicios
Pruebas de escalabilidad
52. @micael_gallego
Observabilidad
● ¿Tenemos que adaptar las aplicaciones?
● No requiere cambiar las aplicaciones
● Monitorización de métricas de sistema
● Visualización y alertas
● Recogida de logs
53. @micael_gallego
Observabilidad
● ¿Tenemos que adaptar las aplicaciones?
● Requiere cambios en las aplicaciones
● Monitorización de métricas de negocio
● Generación de logs con información
relevante (a ser posible estructurada)
● Comunicación entre servicios: Enviar trazas a
zipkin
54. @micael_gallego
Observabilidad
● Para testing automático necesitamos APIs
en los tests
● ElasticSearch
● Prometheus
● Kuebernetes
● Zipkin
https://prometheus.io/docs/prometheus/latest/querying/api/
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html
https://kubernetes.io/docs/reference/using-api/client-libraries/
https://zipkin.io/zipkin-api/
57. @micael_gallego
Para ser tolerante a fallos se
necesita ser redundante
Tolerancia a fallos
Tiene que haber varias copias de
cada elemento desacopladas entre sí
para que un fallo en una no afecte a
las demás
59. @micael_gallego
Tolerancia a fallos
● Los servicios stateful de k8s son redundantes
A distributed, reliable key-value store for the
most critical data of a distributed system
https://coreos.com/etcd/
61. @micael_gallego
● Si un nodo del cluster falla
● Los pods ejecutando en ese nodo se crean en
otro nodo disponible
● El nodo fallido se “sustituye” por un nuevo
nodo en el que se pueden volver a desplegar
pods
Tolerancia a fallos
https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
63. 63@micael_gallego
Pruebas de tolerancia a fallos
“Limited scope,
continuous,
disaster
recovery”
https://medium.com/russmiles/chaos-engineering-for-the-business-17b723f26361
Russ Miles
http://principlesofchaos.org/
64. 64@micael_gallego
•Introducir errores aleatorios e impredecibles
•Su objetivo es proporcionar datos sobre al
estabilidad de los sistemas
•Sabemos que los sistemas van a fallar
•Por qué no introducir nosotros los fallos para
ver cómo de resistentes son nuestros sistemas
Pruebas de tolerancia a fallos
65. 65@micael_gallego
•Chaos monkeys de Netflix
– Creada en 2011
– Desconectaba nodos de
AWS en los sistemas en
producción de Netflix
– Se comprobaba cómo se
comportaba el resto del
sistema ante la caída de
una instancia
https://github.com/netflix/chaosmonkey
Pruebas de tolerancia a fallos
66. 66@micael_gallego
•Ejemplos de fallos que podemos inducir (caos)
– Para una MáquinaVirtual
– Incrementar la latencia en la red
– Forzar errores HTTP
– Aumentar la carga de CPU
– Simular disco lleno
– Etc...
Pruebas de tolerancia a fallos
67. 67@micael_gallego
•Metodología
– Partimos de un estado estable
– Inducimos caos
– Comparamos el comportamiento del estado
estable frente al estado problemático
– Las herramientas de observabilidad son
esenciales
Pruebas de tolerancia a fallos
73. 74@micael_gallego
●
Carga de CPU
●
Si lanzamos una prueba de carga elegimos un nodo
de los disponibles, un tiempo de ejecución y cuántos
nodos usar.
●
En las métricas de nuestro cluster podemos ver cómo
la carga de CPU aumenta
Gremlin
74. 75@micael_gallego
•Elimina un pod cada cierto tiempo
•El temporizador puede ser configurado
•Podemos así comprobar como se comporta
nuestra app cuando los pods se mueren
súbitamente
•Script de bash que usa kubectl
Pod-Chaos-Monkey
https://github.com/jnewland/kubernetes-pod-chaos-monkey
75. 76@micael_gallego
•Desplegamos una aplicación con un único pod
•La app tarda 2 seg en procesar cada petición
•Usaremos LoadMill para simular la carga y
analizar la calidad de servicio
•Se eliminará un pod cada 30 segundos
Pod-Chaos-Monkey
79. 80@micael_gallego
•Es la versión de Netflix Chaos Monkey
aplicada a k8s
•Se puede planificar para que sólo actúe en
ciertas franjas horarias
•Se suelen usar horas valle
Kube-Monkey
https://github.com/asobti/kube-monkey
80. 81@micael_gallego
•En los deployments se especifican labels para
configurar Kube-Monkey
– Si está habilitado o no para ser eliminada por
kube-monkey
– El identificador de la app
– El modo de muerte: Puedes matar un solo pod o
todos o un porcentaje
– Etc…
Kube-Monkey
83. 84@micael_gallego
•¿Por qué el cliente recibe errores cuando hay
dos pods?
– Porque el pod que atiende la petición muere
y se envía el error al cliente
•¿Se podría reintentar la petición en este caso
para que llegue al otro pod?
– El cliente podría reintentar, pero no el pod
Mejora en tolerancia a fallos
86. 87@micael_gallego
•Es un plugin de Kubernetes que gestiona las
peticiones de red que llegan a un pod (y las que
salen de él)
•Mejora la tolerancia a fallos
– Permite reintentar peticiones fallidas
– Permite proteger servicios para que sean más
tolerantes a fallos (Circuit breaker, políticas…)
– Permite controlar los timeouts de las peticiones
Istio
91. 92@micael_gallego
•Mejoras en tolerancia a fallos con Istio a los
clientes del servicio
– Timeout de las peticiones (para no esperar
demasiado)
– Reintentos en peticiones fallidas
Istio
92. 93@micael_gallego
•Mejoras en tolerancia a fallos con Istio al
servicio
– Reintentos con tiempo de espera (para no
sobrecargar el servicio)
– Limitar el número de conexiones concurrentes
– Verificación de la salud de los servicios (health-
check)
– Circuit-breakers a los pods para que se recuperen
antes de atender nuevas peticiones
Istio
97. 98@micael_gallego
Istio
•Istio también se puede usar como herramienta
para insertar caos en las peticiones de red
– Insertar errores de API rest
– Insertar latencia
•Podemos hacer pruebas de tolerancia a fallos
con Istio
98. 99@micael_gallego
Istio
•Errores en
peticiones de red
– Creamos
gateway,
deployment y
service
– Creamos virtual
service
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: nginx-color-http-error
spec:
hosts:
- "*"
gateways:
- nginx-color-gateway
http:
- match:
- uri:
prefix: /app
route:
- destination:
host: nginx
port:
number: 80
fault:
abort:
percent: 50
httpStatus: 503