SlideShare una empresa de Scribd logo
1 de 63
Querétaro Software
Development Meetup
Sesión #1
Agosto, 2017
La finalidad del Meetup es
tener un lugar donde compartir
experiencias (técnicas o no),
ideas y tendencias en la
industria de IT
Querétaro Software
Development Meetup
Primera Regla del Meetup:
tú hablas del Meetup
Segunda Regla del Meetup:
TÚ HABLAS del Meetup
Tercera Regla del Meetup:
TÚ HABLAS DEL MEETUP
Teléfonos como
en Cine
Participen Regla del ⅔ en Dudas
Términos en Inglés
Presentes y en Itálicas
Presentación disponible
en SlideShare
Guía de Acuerdo Común
Para asegurarnos de llevarnos bien, vamos aclarando unas cosas
Faltas de Ortografía y
pochismos presentes
7: 50 pm nos vamos No hacer presentaciones
para vender tu producto
Una presentación en el 2010 cambió mi actitud y mis
experiencias cada que participo en una presentación
o conferencia, así como las expectativas que tengo de
estas.
La triste historia de una presentación
Una presentación de GMaps
Expectativas Reales
Cuales son sus expectativas del Meetup?
Agenda
Entendiendo los beneficios de Unit Testing y TDD
Simian Army: Fault-tolerance en el sistema, para
adultos
Agosto, 2017
Unit Testing & TDD
Presentado por Osvaldo Mercado Coss
Entendiendo los Beneficios
Querétaro Software
Development Meetup
8
Osvaldo Mercado Coss
Backend Developer por error
● De Guadalajara, México
● Senior Backend Developer en PSL Group
● Estudios en Multimedia, de alguna manera termine codeando en el
backend
○ Stack: LA|EMP, PHP + Framework, NodeJS & Python
○ DevOps: Vagrant + Chef
○ Test: PHPUnit, Mockery, Codeception, Selenium, Jasmine,
QUnit, RSpec, InSpec, ChefSpec, Chai/Mocha y un poco de
Behat
○ Interesado en Software Escalable, DevOps & Perros
Un poco sobre mi:
Hola!
@omercadocoss
omercadocoss@gmail.com
https://mx.linkedin.com/in/osvaldomercado
Agenda
Una introducción al mágico mundo del Testing
Propósitos y Beneficios de Unit Testing
Best Practices
Conclusión
TDD - Vale la Pena?
10
El Mágico Mundo del Testing
Vamos entendiendo de qué estamos hablando
Unit Tests
La práctica de testear
pequeñas piezas de
código, usualmente en
funciones individuales y
aisladas, ejecutándose
una a la vez.
Integration Tests
Cuando múltiples
componentes son
testeados en un sistema
para confirmar que
pueden crear una
operación.
Functional Tests
Grupo de pruebas
específicas que
garantizan o validan un
escenario o
requerimiento del
negocio.
Acceptance Tests
Set completo de
pruebas donde se
valida lo que un usuario
puede ver,
experimentar y recibir
en base a pre-contratos
11
Vamos entendiendo de qué estamos hablando
El Mágico Mundo del Testing
12
El Mágico Mundo del Testing
Qué significa esto en el contexto de e-commerce
Unit Tests
Valida que una
función regrese
true/false
Integration Tests
Valida que un método
hace una petición a
una API mockeada
Functional Tests
Valida que un método
hace una respuesta a
una API mockeada
Y también valida su
respuesta
Acceptance Tests
Hace el flujo de pago
completo de un
usuario, desde
registrarse hasta
pagar y luego generar
un recibo que se le
manda vía email
Unit Testing hace que me
tarde más tiempo
Ideas equivocadas sobre Unit Testing
Tratar de entender, debugear,
extender y lanzar tu código
hace que todos se tarden más
tiempo
Unit Testing hace que cambie
mi código una vez terminado
Ideas equivocadas sobre Unit Testing
Unit Testing hace
mejor tu código
Unit Tests son falsas o mocks,
entonces no añaden valor
Ideas equivocadas sobre Unit Testing
Unit Tests son la única prueba
de que tu código funciona
19
Múltiples Propósitos para Unit Testing
A veces los UTs son asociados con el único paso de deployear una aplicación
Dependency Mgmt
npm install |
composer install |
gem install |
pip install |
{string} install
Corre los Tests
Así es, se convierte en el
3er paso justo después de
completar dependency
management
Haz Lo que SeaCode Checkout
svn checkout |
git clone | cvs checkout
Unit tests no sólo es un paso para deployear aplicaciones, sino que sirven para desarrollos
existentes, ver si tu branch local funciona como debe, etc
MULTIPLESESCENARIOS
Codea | testea un nuevo
ambiente | testea un upgrade |
haz un performance test |
deployea la aplicación| testea
un merge | etc
Beneficios Corto Plazo Pipeline sugerido por Jenkins para CI
Beneficios Corto Plazo Estadísticas de SonarQube
Beneficios Mediano Plazo
Beneficios Mediano Plazo The Case for Continuous Delivery
Beneficios Largo Plazo
ROI del Unit Testing
26
Beneficios Reales: Escenarios Reales
Aquí es donde personalmente veo los beneficios de tener Unit Tests
Actualizar Symfony a 3.2
Usas la version 2.8
Vez una larga lista de cambios en
el changelog y no tienes ni idea
de que tanto impacta
$ composer update symfony/symfony:3.2
$ phpunit -c app/
$ php codecept run acceptance
New Kid on the Block:
corre y rompe las pruebas
Hotfix en app crítica:
perdiendo dinero por minuto
Problema en PROD
Se necesita deployear ASAP
$ phpunit -c app/
$ php codecept run acceptance
$ git push origin hotfix/chaos_branch
$ git checkout master
$ git pull
$ git merge chaos_branch
$git push origin master
Nueva persona en el equipo
$ phpunit -c app/
(dev changes code)
$ phpunit -c app/
(dev changes code)
$ phpunit -c app/
(dev ve resultados correctos, sonríe)
$ git commit -m ‘New feature done’
27
Beneficios Reales 3 Scenarios Resueltos por UTs
Aquí es donde personalmente veo los beneficios de tener Unit Tests
90k LoC se movieron de ZF2 a
Phalcon en tiempo record
En 2.5 días, 2 devs lograron
hacer un porting de ~90k LoC de
un framework de PHP a otro en
menos de 3 días, mejorando el
performance de la aplicación en
78% e incrementando la
availability en 2.5X
OS nuevo lanza warnings
Después de un exitoso composer
install, integration tests mostraron
un valor no esperado, haciendo
que una de las librerías tronara
debido a no ser compatible con
Ubuntu. Un problema de horas se
resolvió en minutos.
Aplicación de 120k LoC con
problemas constantes en
PROD/Deploy issues
La introducción del Unit Testing
al equipo de desarrollo de
QUnit y PHPUnit incrementó el
FTR de 12.5% a 75% en sólo 4
meses y pasó de hacer deploys
bi-semanales a semanales.
Tiempo para llegar a PROD === $$$
Mantenimiento & Bugs === $$$
29
Arreglando/Expandiendo Sistemas sin UTs
Como me siento trabajando en arreglar un sistema que ya tiene issues reportados y no cuenta con unit testing
30
Haciendo un Hotfix en PROD sin UTs
A veces es un salto de fe
Vamos a Ensuciarnos un Poco
Crear, cambiar y expandir
código es rápido y se
convierte en una decisión
informada
33
TDD: vale la pena?
El concepto de TDD se basa en el siguiente diagrama
34
TDD: vale la pena?
En mi opinión personal, cuando tienes ya una arquitectura de clases y métodos definida, TDD es una ayuda invaluable
Best Practices
36
Empieza con Poco
Best Practices Personales
5 cosas que he aprendido a lo largo del tiempo
100% de code
coverage es bastante
difícil de lograr y a
veces ni siquiera hace
sentido tenerlo,
empieza con poco e
increméntalo
constantemente
Haz Pruebas
Negativas
Prueba lanzamiento de
excepciones, escenarios
inválidos y datos que no
cuadran, esto hará tu
código más robusto,
seguro y realmente dará
valor a las pruebas
Define Métricas
Es 10% de test coverage
un buen lugar para
empezar? Se puede
incluso hacer? Empieza
con números básicos y
sobre las secciones
problemáticas y mejora
a partir de ahí
Mejora
el Workflow
Usa UTs de forma
automatizada y tanto
como sea posible,
inclúyelos en tu
trabajo del día a día
Expande las Pruebas
Unit tests es el primer
paso para estabilizar
un sistema, pero el
camino nunca acaba:
incluye ATs, ITs, FTs
para hacer un sistema
más sólido
37
Porqué el Unit Testing Funciona?
8 puntos por el cual yo promuevo el unit testing
Mejorarás tu Código como
Desarrollador
Haces Aplicaciones
Robustas y Elásticas
Resuelves
problemas más
rápido, y
tiempo === dinero
Haces más fácil que otras
personas entiendan tu
código
Puedes cambiar, mover,
borrar código sin
preocuparte de que
rompiste algo
Empiezas el camino a
CI, CD, CD y todos esos
nombres elegantes en IT
Te forza a mejorar tu
OOP (ejemplo, al usar
Dependency Injection)
Elimina un
MONTÓN de
debugging linea por
linea
foreach ($feature as $f) {
$this->writeTests($f);
$speed++;
$stability++;
$headaches--;
$maintenanceCosts--;
}
Gracias!
Bienvenidas las preguntas, comentarios, quejas y sugerencias
omercadocoss@gmail.com
https://mx.linkedin.com/in/osvaldomercado
Lecturas Recomendadas
Recomendaciones personales acerca del tema
Twelve Benefits of Writing Unit Tests First
http://sd.jtimothyking.com/2006/07/11/twelve-benefits-of-writing-unit-tests-first/
Test-Driven PHP
https://code.tutsplus.com/series/test-driven-php--net-27482
Mockery
http://docs.mockery.io/en/latest/getting_started/simple_example.html
Continuous Integration (by Martin Fowler)
http://martinfowler.com/articles/continuousIntegration.html
Jumpstart Your PHP Testing with Codeception
https://www.toptal.com/php/php-testing-with-codeception
Running PHPUnit tests after each commit (Get started with Jenkins)
https://www.youtube.com/watch?v=68cDNUz7uro
Manage Code Coverage by Unit Tests with Sonar
http://www.sonarqube.org/manage-code-coverage-by-unit-tests-with-sonar/
Unit Tests, How to Write Testable Code and Why it Matters
https://www.toptal.com/qa/how-to-write-testable-code-and-why-it-matters
3 Git hooks for continuous integration
https://www.atlassian.com/continuous-delivery/git-hooks-continuous-
integration
Be Nice to Future You: Write Unit Tests With PHPUnit
http://slides.com/johnnorton/be-nice-to-future-you-write-unit-tests-with-phpunit#/
Unit Testing by Jeremy Lindblom
https://speakerdeck.com/jeremeamia/unit-testing
Master Symfony2 - part 2: Test Driven Development
https://gnugat.github.io/2014/08/13/master-sf2-part-2-tdd.html
PHP Quality Assurance
https://phpqa.io/index.html
Selective Unit Testing – Costs and Benefits
http://blog.stevensanderson.com/2009/11/04/selective-unit-testing-
costs-and-benefits/
Agosto, 2017
Simian Army
Presentado por Osvaldo Mercado Coss
(otra vez)
Fault-tolerance en el sistema, para adultos
Querétaro Software
Development Meetup
Agenda
Qué es el Simian Army?
Jesus, Maria y José… truena todo?
Conclusión
Porque necesitaría el Simian Army?
Tipos de Simios
Simian Army consists of services
(Monkeys) in the cloud for
generating various kinds of failures,
detecting abnormal conditions, and
testing our ability to survive them.
The goal is to keep our cloud safe,
secure, and highly available.
Netflix uses the Simian Army to
intentionally induce failure on its
own terms, so that issues can be
identified and fixed before they
impact customers.
[...] a tool that randomly disables
Netflix production instances to
make sure they can survive this
common type of failure without any
customer impact. The name comes
from the idea of unleashing a wild
monkey with a weapon in your data
center
46
Qué es el Simian Army?
Vamos entendiendo de qué estamos hablando
Librerías desarrolladas primordialmente
en GO, para destruir, deshabilitar y evaluar
una infraestructura de nube hosteada en
Amazon AWS, basadas en los principios de
Chaos Engineering
47
Jesús, María y José… Truena Todo?
Vamos entendiendo de qué estamos hablando, primero necesitamos entender que corre y dónde
48
Jesús, María y José… Truena Todo?
Vamos entendiendo de qué estamos hablando, primero necesitamos entender AWS
49
Qué es el Simian Army?
Vamos entendiendo de qué estamos hablando
50
Jesús, María y José… Truena Todo?
Vamos entendiendo de qué estamos hablando, primero necesitamos entender AWS
Netflix se ataca a sí mismo, con
la idea de mejorar sus sistemas
sin tener que esperar un
problema grande
El primer simio, un
servicio que identifica
grupos de sistemas
(instancias) y termina
uno de ellos
Crea delays artificiales
en la capa RESTful para
simular degradación de
servicios
Limpia recursos no
utilizados en AWS:
EBS Volumes, EBS
Volume Snapshots,
and Auto Scaling
Groups
Janitor
Monkey
Verifica y determina
que una instancia sea
conforme al aplicar
una serie de reglas a
ella
Verifica la salud de
una instancia
(ejemplo: carga de
CPU) y quita aquellas
que presentan
problemas
Detecta problema de
configuración
erróneas en clientes
usando instancias en
diferentes lengujes y
character sets
Busca violaciones de
seguridad,
vulnerabilidades y
misconfiguraciones, y
termina las instancias
Simula un outage de
una zona de
availability de AWS
Tipos de Simios
Cómo aseguramos que todos nos llevemos bien y el taller tenga mayor impacto
Chaos
Monkey
Conformity
Monkey
Chaos
Gorilla
Latency
Monkey
Doctor
Monkey
10-18
Monkey
Security
Monkey
Tipos de Simios
Cómo aseguramos que todos nos llevemos bien y el taller tenga mayor impacto
Chaos Kong
El más destructivo del Simian
Army, destruye una region de
AWS completa.
Porqué Necesitaría el Simian Army?
Cuál es la razón de poner algo tan disruptivo en tus servidores
Porqué Necesitaría el Simian Army?
Cuál es la razón de poner algo tan disruptivo en tus servidores
Porqué Necesitaría el Simian Army?
Cuál es la razón de poner algo tan disruptivo en tus servidores
Porqué Necesitaría el Simian Army?
Cuál es la razón de poner algo tan disruptivo en tus servidores
Netflix lleva cerca de 6 años
disparándose en el pie, las
lecciones de infraestructura, cloud
management & troubleshooting que
tienen al momento son
inigualables en la industria
Lo más probable es que llegue el
apocalipsis zombie, y los que
sobrevivan seguirán disfrutando
de Orange is the New Black
Gracias!
Bienvenidas las preguntas, comentarios, quejas y sugerencias
omercadocoss@gmail.com
https://mx.linkedin.com/in/osvaldomercado
Lecturas Recomendadas
Recomendaciones personales acerca del tema
Netflix Simian Army
https://github.com/Netflix/SimianArmy
How to deploy Chaos Monkey
https://netflix.github.io/chaosmonkey/How-to-deploy/
Principles of Chaos Engineering
http://principlesofchaos.org/
Need A Cloud Monkey? Netflix Unleashes Simian Army
https://www.wired.com/insights/2012/04/cloud-monkeys/
Netflix Tech Blog
https://medium.com/netflix-techblog
The Netflix Simian Army
https://medium.com/netflix-techblog/the-netflix-simian-army-16e57fbab116
Mini-Training: Simian Army
https://www.slideshare.net/betclicTech/betclic-mini-trainingnetflixsimianarmy

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Xp
XpXp
Xp
 
Xp
XpXp
Xp
 
Programación Xp Nocturno
Programación Xp NocturnoProgramación Xp Nocturno
Programación Xp Nocturno
 
7iSF-4 test driver development
7iSF-4   test driver development7iSF-4   test driver development
7iSF-4 test driver development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Metodologias xp
Metodologias xpMetodologias xp
Metodologias xp
 
Testlodge Tutorial v1.0
Testlodge Tutorial v1.0Testlodge Tutorial v1.0
Testlodge Tutorial v1.0
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de Selenium
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
Encuentro Genexus 2005 Beta Testing
Encuentro Genexus 2005 Beta TestingEncuentro Genexus 2005 Beta Testing
Encuentro Genexus 2005 Beta Testing
 
Programación extrema
Programación extremaProgramación extrema
Programación extrema
 
Introducción a Unit Testing y TDD
Introducción a Unit Testing y TDDIntroducción a Unit Testing y TDD
Introducción a Unit Testing y TDD
 
DevOps. Integre las operaciones para una entrega continua
DevOps. Integre las operaciones para una entrega continuaDevOps. Integre las operaciones para una entrega continua
DevOps. Integre las operaciones para una entrega continua
 
Programación Extrema - XP
Programación Extrema - XPProgramación Extrema - XP
Programación Extrema - XP
 
Diapositivas xp
Diapositivas xpDiapositivas xp
Diapositivas xp
 
Metodologia XP
Metodologia XPMetodologia XP
Metodologia XP
 
Programación extrema [XP]
Programación extrema [XP]Programación extrema [XP]
Programación extrema [XP]
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
 
Ponele el TURBO al Dev Team de tu Startup
Ponele el TURBO al Dev Team de tu StartupPonele el TURBO al Dev Team de tu Startup
Ponele el TURBO al Dev Team de tu Startup
 

Similar a Meetup: Sesion #1 Unit Testing & Simian Army

Vuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfVuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfPabloMorales831994
 
Estrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareEstrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareDomingo Suarez Torres
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurancewill2294
 
ALM Sessions 2012 - Entrega Continua con VS ALM y TFS
ALM Sessions 2012 - Entrega Continua con VS ALM y TFSALM Sessions 2012 - Entrega Continua con VS ALM y TFS
ALM Sessions 2012 - Entrega Continua con VS ALM y TFSJose Luis Soria
 
Arquitectura de Software y DevOps
Arquitectura de Software y DevOpsArquitectura de Software y DevOps
Arquitectura de Software y DevOpsJorge Eduardo Gaona
 
Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)Martín Machuca
 
practica 9 de fundamento.pdf
practica 9 de fundamento.pdfpractica 9 de fundamento.pdf
practica 9 de fundamento.pdfEduinGamer
 
Personal Software Process / Sesion 03
Personal Software Process / Sesion 03Personal Software Process / Sesion 03
Personal Software Process / Sesion 03andres hurtado
 
Que demonios es eso de Devops (y porquedebería interesarme)
Que demonios es eso de Devops (y porquedebería interesarme)Que demonios es eso de Devops (y porquedebería interesarme)
Que demonios es eso de Devops (y porquedebería interesarme)Jacobo García López de Araujo
 
Devops meetup 10 diciembre 2014
Devops meetup 10 diciembre 2014 Devops meetup 10 diciembre 2014
Devops meetup 10 diciembre 2014 Eduardo Diaz
 
Is clase 13_metodos_y_procesos
Is clase 13_metodos_y_procesosIs clase 13_metodos_y_procesos
Is clase 13_metodos_y_procesosAle Mejia
 
Seminario de Test Development Driven
Seminario de Test Development DrivenSeminario de Test Development Driven
Seminario de Test Development DrivenParadigma Digital
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de softwaresairarcf
 

Similar a Meetup: Sesion #1 Unit Testing & Simian Army (20)

Vuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfVuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdf
 
Estrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareEstrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar software
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
ALM Sessions 2012 - Entrega Continua con VS ALM y TFS
ALM Sessions 2012 - Entrega Continua con VS ALM y TFSALM Sessions 2012 - Entrega Continua con VS ALM y TFS
ALM Sessions 2012 - Entrega Continua con VS ALM y TFS
 
Arquitectura de Software y DevOps
Arquitectura de Software y DevOpsArquitectura de Software y DevOps
Arquitectura de Software y DevOps
 
Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)
 
DevOps on AZURE
DevOps on AZUREDevOps on AZURE
DevOps on AZURE
 
Material trainer-depc-v1-parte2
Material trainer-depc-v1-parte2Material trainer-depc-v1-parte2
Material trainer-depc-v1-parte2
 
practica 9 de fundamento.pdf
practica 9 de fundamento.pdfpractica 9 de fundamento.pdf
practica 9 de fundamento.pdf
 
Personal Software Process / Sesion 03
Personal Software Process / Sesion 03Personal Software Process / Sesion 03
Personal Software Process / Sesion 03
 
Que demonios es eso de Devops (y porquedebería interesarme)
Que demonios es eso de Devops (y porquedebería interesarme)Que demonios es eso de Devops (y porquedebería interesarme)
Que demonios es eso de Devops (y porquedebería interesarme)
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
Devops meetup 10 diciembre 2014
Devops meetup 10 diciembre 2014 Devops meetup 10 diciembre 2014
Devops meetup 10 diciembre 2014
 
Is clase 13_metodos_y_procesos
Is clase 13_metodos_y_procesosIs clase 13_metodos_y_procesos
Is clase 13_metodos_y_procesos
 
Is clase 13_metodos_y_procesos
Is clase 13_metodos_y_procesosIs clase 13_metodos_y_procesos
Is clase 13_metodos_y_procesos
 
métodos y procesos
métodos y procesosmétodos y procesos
métodos y procesos
 
Seminario de Test Development Driven
Seminario de Test Development DrivenSeminario de Test Development Driven
Seminario de Test Development Driven
 
S9-DAW-2022S1.pptx
S9-DAW-2022S1.pptxS9-DAW-2022S1.pptx
S9-DAW-2022S1.pptx
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de software
 

Más de Osvaldo Mercado Coss

Meetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven DesignMeetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven DesignOsvaldo Mercado Coss
 
Meetup Sesion #5: Que Dicen los Datos de tus Presidenciablaes
Meetup Sesion #5: Que Dicen los Datos de tus PresidenciablaesMeetup Sesion #5: Que Dicen los Datos de tus Presidenciablaes
Meetup Sesion #5: Que Dicen los Datos de tus PresidenciablaesOsvaldo Mercado Coss
 
Meetup Sesión #4: Scrum, Kanban & XP
Meetup Sesión #4: Scrum, Kanban & XPMeetup Sesión #4: Scrum, Kanban & XP
Meetup Sesión #4: Scrum, Kanban & XPOsvaldo Mercado Coss
 
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)Osvaldo Mercado Coss
 

Más de Osvaldo Mercado Coss (6)

Meetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven DesignMeetup: Sesión #8 Domain Driven Design
Meetup: Sesión #8 Domain Driven Design
 
Meetup Sesion #5: Que Dicen los Datos de tus Presidenciablaes
Meetup Sesion #5: Que Dicen los Datos de tus PresidenciablaesMeetup Sesion #5: Que Dicen los Datos de tus Presidenciablaes
Meetup Sesion #5: Que Dicen los Datos de tus Presidenciablaes
 
Meetup Sesión #4: Scrum, Kanban & XP
Meetup Sesión #4: Scrum, Kanban & XPMeetup Sesión #4: Scrum, Kanban & XP
Meetup Sesión #4: Scrum, Kanban & XP
 
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
 
Meetup: Sesion #3 MongoDB - Pt 2
Meetup: Sesion #3 MongoDB - Pt 2Meetup: Sesion #3 MongoDB - Pt 2
Meetup: Sesion #3 MongoDB - Pt 2
 
Meetup: Sesion #2 MongoDB
Meetup: Sesion #2 MongoDBMeetup: Sesion #2 MongoDB
Meetup: Sesion #2 MongoDB
 

Último

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 

Último (20)

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 

Meetup: Sesion #1 Unit Testing & Simian Army

  • 2. La finalidad del Meetup es tener un lugar donde compartir experiencias (técnicas o no), ideas y tendencias en la industria de IT Querétaro Software Development Meetup
  • 3. Primera Regla del Meetup: tú hablas del Meetup Segunda Regla del Meetup: TÚ HABLAS del Meetup Tercera Regla del Meetup: TÚ HABLAS DEL MEETUP
  • 4. Teléfonos como en Cine Participen Regla del ⅔ en Dudas Términos en Inglés Presentes y en Itálicas Presentación disponible en SlideShare Guía de Acuerdo Común Para asegurarnos de llevarnos bien, vamos aclarando unas cosas Faltas de Ortografía y pochismos presentes 7: 50 pm nos vamos No hacer presentaciones para vender tu producto
  • 5. Una presentación en el 2010 cambió mi actitud y mis experiencias cada que participo en una presentación o conferencia, así como las expectativas que tengo de estas. La triste historia de una presentación Una presentación de GMaps Expectativas Reales Cuales son sus expectativas del Meetup?
  • 6. Agenda Entendiendo los beneficios de Unit Testing y TDD Simian Army: Fault-tolerance en el sistema, para adultos
  • 7. Agosto, 2017 Unit Testing & TDD Presentado por Osvaldo Mercado Coss Entendiendo los Beneficios Querétaro Software Development Meetup
  • 8. 8 Osvaldo Mercado Coss Backend Developer por error ● De Guadalajara, México ● Senior Backend Developer en PSL Group ● Estudios en Multimedia, de alguna manera termine codeando en el backend ○ Stack: LA|EMP, PHP + Framework, NodeJS & Python ○ DevOps: Vagrant + Chef ○ Test: PHPUnit, Mockery, Codeception, Selenium, Jasmine, QUnit, RSpec, InSpec, ChefSpec, Chai/Mocha y un poco de Behat ○ Interesado en Software Escalable, DevOps & Perros Un poco sobre mi: Hola! @omercadocoss omercadocoss@gmail.com https://mx.linkedin.com/in/osvaldomercado
  • 9. Agenda Una introducción al mágico mundo del Testing Propósitos y Beneficios de Unit Testing Best Practices Conclusión TDD - Vale la Pena?
  • 10. 10 El Mágico Mundo del Testing Vamos entendiendo de qué estamos hablando Unit Tests La práctica de testear pequeñas piezas de código, usualmente en funciones individuales y aisladas, ejecutándose una a la vez. Integration Tests Cuando múltiples componentes son testeados en un sistema para confirmar que pueden crear una operación. Functional Tests Grupo de pruebas específicas que garantizan o validan un escenario o requerimiento del negocio. Acceptance Tests Set completo de pruebas donde se valida lo que un usuario puede ver, experimentar y recibir en base a pre-contratos
  • 11. 11 Vamos entendiendo de qué estamos hablando El Mágico Mundo del Testing
  • 12. 12 El Mágico Mundo del Testing Qué significa esto en el contexto de e-commerce Unit Tests Valida que una función regrese true/false Integration Tests Valida que un método hace una petición a una API mockeada Functional Tests Valida que un método hace una respuesta a una API mockeada Y también valida su respuesta Acceptance Tests Hace el flujo de pago completo de un usuario, desde registrarse hasta pagar y luego generar un recibo que se le manda vía email
  • 13. Unit Testing hace que me tarde más tiempo Ideas equivocadas sobre Unit Testing
  • 14. Tratar de entender, debugear, extender y lanzar tu código hace que todos se tarden más tiempo
  • 15. Unit Testing hace que cambie mi código una vez terminado Ideas equivocadas sobre Unit Testing
  • 17. Unit Tests son falsas o mocks, entonces no añaden valor Ideas equivocadas sobre Unit Testing
  • 18. Unit Tests son la única prueba de que tu código funciona
  • 19. 19 Múltiples Propósitos para Unit Testing A veces los UTs son asociados con el único paso de deployear una aplicación Dependency Mgmt npm install | composer install | gem install | pip install | {string} install Corre los Tests Así es, se convierte en el 3er paso justo después de completar dependency management Haz Lo que SeaCode Checkout svn checkout | git clone | cvs checkout Unit tests no sólo es un paso para deployear aplicaciones, sino que sirven para desarrollos existentes, ver si tu branch local funciona como debe, etc MULTIPLESESCENARIOS Codea | testea un nuevo ambiente | testea un upgrade | haz un performance test | deployea la aplicación| testea un merge | etc
  • 20. Beneficios Corto Plazo Pipeline sugerido por Jenkins para CI
  • 21. Beneficios Corto Plazo Estadísticas de SonarQube
  • 23. Beneficios Mediano Plazo The Case for Continuous Delivery
  • 25. ROI del Unit Testing
  • 26. 26 Beneficios Reales: Escenarios Reales Aquí es donde personalmente veo los beneficios de tener Unit Tests Actualizar Symfony a 3.2 Usas la version 2.8 Vez una larga lista de cambios en el changelog y no tienes ni idea de que tanto impacta $ composer update symfony/symfony:3.2 $ phpunit -c app/ $ php codecept run acceptance New Kid on the Block: corre y rompe las pruebas Hotfix en app crítica: perdiendo dinero por minuto Problema en PROD Se necesita deployear ASAP $ phpunit -c app/ $ php codecept run acceptance $ git push origin hotfix/chaos_branch $ git checkout master $ git pull $ git merge chaos_branch $git push origin master Nueva persona en el equipo $ phpunit -c app/ (dev changes code) $ phpunit -c app/ (dev changes code) $ phpunit -c app/ (dev ve resultados correctos, sonríe) $ git commit -m ‘New feature done’
  • 27. 27 Beneficios Reales 3 Scenarios Resueltos por UTs Aquí es donde personalmente veo los beneficios de tener Unit Tests 90k LoC se movieron de ZF2 a Phalcon en tiempo record En 2.5 días, 2 devs lograron hacer un porting de ~90k LoC de un framework de PHP a otro en menos de 3 días, mejorando el performance de la aplicación en 78% e incrementando la availability en 2.5X OS nuevo lanza warnings Después de un exitoso composer install, integration tests mostraron un valor no esperado, haciendo que una de las librerías tronara debido a no ser compatible con Ubuntu. Un problema de horas se resolvió en minutos. Aplicación de 120k LoC con problemas constantes en PROD/Deploy issues La introducción del Unit Testing al equipo de desarrollo de QUnit y PHPUnit incrementó el FTR de 12.5% a 75% en sólo 4 meses y pasó de hacer deploys bi-semanales a semanales.
  • 28. Tiempo para llegar a PROD === $$$ Mantenimiento & Bugs === $$$
  • 29. 29 Arreglando/Expandiendo Sistemas sin UTs Como me siento trabajando en arreglar un sistema que ya tiene issues reportados y no cuenta con unit testing
  • 30. 30 Haciendo un Hotfix en PROD sin UTs A veces es un salto de fe
  • 32. Crear, cambiar y expandir código es rápido y se convierte en una decisión informada
  • 33. 33 TDD: vale la pena? El concepto de TDD se basa en el siguiente diagrama
  • 34. 34 TDD: vale la pena? En mi opinión personal, cuando tienes ya una arquitectura de clases y métodos definida, TDD es una ayuda invaluable
  • 36. 36 Empieza con Poco Best Practices Personales 5 cosas que he aprendido a lo largo del tiempo 100% de code coverage es bastante difícil de lograr y a veces ni siquiera hace sentido tenerlo, empieza con poco e increméntalo constantemente Haz Pruebas Negativas Prueba lanzamiento de excepciones, escenarios inválidos y datos que no cuadran, esto hará tu código más robusto, seguro y realmente dará valor a las pruebas Define Métricas Es 10% de test coverage un buen lugar para empezar? Se puede incluso hacer? Empieza con números básicos y sobre las secciones problemáticas y mejora a partir de ahí Mejora el Workflow Usa UTs de forma automatizada y tanto como sea posible, inclúyelos en tu trabajo del día a día Expande las Pruebas Unit tests es el primer paso para estabilizar un sistema, pero el camino nunca acaba: incluye ATs, ITs, FTs para hacer un sistema más sólido
  • 37. 37 Porqué el Unit Testing Funciona? 8 puntos por el cual yo promuevo el unit testing Mejorarás tu Código como Desarrollador Haces Aplicaciones Robustas y Elásticas Resuelves problemas más rápido, y tiempo === dinero Haces más fácil que otras personas entiendan tu código Puedes cambiar, mover, borrar código sin preocuparte de que rompiste algo Empiezas el camino a CI, CD, CD y todos esos nombres elegantes en IT Te forza a mejorar tu OOP (ejemplo, al usar Dependency Injection) Elimina un MONTÓN de debugging linea por linea
  • 38. foreach ($feature as $f) { $this->writeTests($f); $speed++; $stability++; $headaches--; $maintenanceCosts--; }
  • 39. Gracias! Bienvenidas las preguntas, comentarios, quejas y sugerencias omercadocoss@gmail.com https://mx.linkedin.com/in/osvaldomercado
  • 40. Lecturas Recomendadas Recomendaciones personales acerca del tema Twelve Benefits of Writing Unit Tests First http://sd.jtimothyking.com/2006/07/11/twelve-benefits-of-writing-unit-tests-first/ Test-Driven PHP https://code.tutsplus.com/series/test-driven-php--net-27482 Mockery http://docs.mockery.io/en/latest/getting_started/simple_example.html Continuous Integration (by Martin Fowler) http://martinfowler.com/articles/continuousIntegration.html Jumpstart Your PHP Testing with Codeception https://www.toptal.com/php/php-testing-with-codeception Running PHPUnit tests after each commit (Get started with Jenkins) https://www.youtube.com/watch?v=68cDNUz7uro Manage Code Coverage by Unit Tests with Sonar http://www.sonarqube.org/manage-code-coverage-by-unit-tests-with-sonar/ Unit Tests, How to Write Testable Code and Why it Matters https://www.toptal.com/qa/how-to-write-testable-code-and-why-it-matters 3 Git hooks for continuous integration https://www.atlassian.com/continuous-delivery/git-hooks-continuous- integration Be Nice to Future You: Write Unit Tests With PHPUnit http://slides.com/johnnorton/be-nice-to-future-you-write-unit-tests-with-phpunit#/ Unit Testing by Jeremy Lindblom https://speakerdeck.com/jeremeamia/unit-testing Master Symfony2 - part 2: Test Driven Development https://gnugat.github.io/2014/08/13/master-sf2-part-2-tdd.html PHP Quality Assurance https://phpqa.io/index.html Selective Unit Testing – Costs and Benefits http://blog.stevensanderson.com/2009/11/04/selective-unit-testing- costs-and-benefits/
  • 41. Agosto, 2017 Simian Army Presentado por Osvaldo Mercado Coss (otra vez) Fault-tolerance en el sistema, para adultos Querétaro Software Development Meetup
  • 42. Agenda Qué es el Simian Army? Jesus, Maria y José… truena todo? Conclusión Porque necesitaría el Simian Army? Tipos de Simios
  • 43. Simian Army consists of services (Monkeys) in the cloud for generating various kinds of failures, detecting abnormal conditions, and testing our ability to survive them. The goal is to keep our cloud safe, secure, and highly available.
  • 44. Netflix uses the Simian Army to intentionally induce failure on its own terms, so that issues can be identified and fixed before they impact customers.
  • 45. [...] a tool that randomly disables Netflix production instances to make sure they can survive this common type of failure without any customer impact. The name comes from the idea of unleashing a wild monkey with a weapon in your data center
  • 46. 46 Qué es el Simian Army? Vamos entendiendo de qué estamos hablando Librerías desarrolladas primordialmente en GO, para destruir, deshabilitar y evaluar una infraestructura de nube hosteada en Amazon AWS, basadas en los principios de Chaos Engineering
  • 47. 47 Jesús, María y José… Truena Todo? Vamos entendiendo de qué estamos hablando, primero necesitamos entender que corre y dónde
  • 48. 48 Jesús, María y José… Truena Todo? Vamos entendiendo de qué estamos hablando, primero necesitamos entender AWS
  • 49. 49 Qué es el Simian Army? Vamos entendiendo de qué estamos hablando
  • 50. 50 Jesús, María y José… Truena Todo? Vamos entendiendo de qué estamos hablando, primero necesitamos entender AWS
  • 51. Netflix se ataca a sí mismo, con la idea de mejorar sus sistemas sin tener que esperar un problema grande
  • 52.
  • 53. El primer simio, un servicio que identifica grupos de sistemas (instancias) y termina uno de ellos Crea delays artificiales en la capa RESTful para simular degradación de servicios Limpia recursos no utilizados en AWS: EBS Volumes, EBS Volume Snapshots, and Auto Scaling Groups Janitor Monkey Verifica y determina que una instancia sea conforme al aplicar una serie de reglas a ella Verifica la salud de una instancia (ejemplo: carga de CPU) y quita aquellas que presentan problemas Detecta problema de configuración erróneas en clientes usando instancias en diferentes lengujes y character sets Busca violaciones de seguridad, vulnerabilidades y misconfiguraciones, y termina las instancias Simula un outage de una zona de availability de AWS Tipos de Simios Cómo aseguramos que todos nos llevemos bien y el taller tenga mayor impacto Chaos Monkey Conformity Monkey Chaos Gorilla Latency Monkey Doctor Monkey 10-18 Monkey Security Monkey
  • 54. Tipos de Simios Cómo aseguramos que todos nos llevemos bien y el taller tenga mayor impacto Chaos Kong El más destructivo del Simian Army, destruye una region de AWS completa.
  • 55. Porqué Necesitaría el Simian Army? Cuál es la razón de poner algo tan disruptivo en tus servidores
  • 56. Porqué Necesitaría el Simian Army? Cuál es la razón de poner algo tan disruptivo en tus servidores
  • 57. Porqué Necesitaría el Simian Army? Cuál es la razón de poner algo tan disruptivo en tus servidores
  • 58. Porqué Necesitaría el Simian Army? Cuál es la razón de poner algo tan disruptivo en tus servidores
  • 59. Netflix lleva cerca de 6 años disparándose en el pie, las lecciones de infraestructura, cloud management & troubleshooting que tienen al momento son inigualables en la industria
  • 60. Lo más probable es que llegue el apocalipsis zombie, y los que sobrevivan seguirán disfrutando de Orange is the New Black
  • 61. Gracias! Bienvenidas las preguntas, comentarios, quejas y sugerencias omercadocoss@gmail.com https://mx.linkedin.com/in/osvaldomercado
  • 62.
  • 63. Lecturas Recomendadas Recomendaciones personales acerca del tema Netflix Simian Army https://github.com/Netflix/SimianArmy How to deploy Chaos Monkey https://netflix.github.io/chaosmonkey/How-to-deploy/ Principles of Chaos Engineering http://principlesofchaos.org/ Need A Cloud Monkey? Netflix Unleashes Simian Army https://www.wired.com/insights/2012/04/cloud-monkeys/ Netflix Tech Blog https://medium.com/netflix-techblog The Netflix Simian Army https://medium.com/netflix-techblog/the-netflix-simian-army-16e57fbab116 Mini-Training: Simian Army https://www.slideshare.net/betclicTech/betclic-mini-trainingnetflixsimianarmy