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

Meetup: Sesion #1 Unit Testing & Simian Army

  • 1.
  • 2.
    La finalidad delMeetup 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 delMeetup: 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 ParticipenRegla 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 enel 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 beneficiosde 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 BackendDeveloper 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 almágico mundo del Testing Propósitos y Beneficios de Unit Testing Best Practices Conclusión TDD - Vale la Pena?
  • 10.
    10 El Mágico Mundodel 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 dequé estamos hablando El Mágico Mundo del Testing
  • 12.
    12 El Mágico Mundodel 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 haceque 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 haceque cambie mi código una vez terminado Ideas equivocadas sobre Unit Testing
  • 16.
  • 17.
    Unit Tests sonfalsas o mocks, entonces no añaden valor Ideas equivocadas sobre Unit Testing
  • 18.
    Unit Tests sonla única prueba de que tu código funciona
  • 19.
    19 Múltiples Propósitos paraUnit 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 PlazoPipeline sugerido por Jenkins para CI
  • 21.
    Beneficios Corto PlazoEstadísticas de SonarQube
  • 22.
  • 23.
    Beneficios Mediano PlazoThe Case for Continuous Delivery
  • 24.
  • 25.
    ROI del UnitTesting
  • 26.
    26 Beneficios Reales: EscenariosReales 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 3Scenarios 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 llegara PROD === $$$ Mantenimiento & Bugs === $$$
  • 29.
    29 Arreglando/Expandiendo Sistemas sinUTs Como me siento trabajando en arreglar un sistema que ya tiene issues reportados y no cuenta con unit testing
  • 30.
    30 Haciendo un Hotfixen PROD sin UTs A veces es un salto de fe
  • 31.
  • 32.
    Crear, cambiar yexpandir código es rápido y se convierte en una decisión informada
  • 33.
    33 TDD: vale lapena? El concepto de TDD se basa en el siguiente diagrama
  • 34.
    34 TDD: vale lapena? En mi opinión personal, cuando tienes ya una arquitectura de clases y métodos definida, TDD es una ayuda invaluable
  • 35.
  • 36.
    36 Empieza con Poco BestPractices 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 UnitTesting 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 personalesacerca 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 Presentadopor Osvaldo Mercado Coss (otra vez) Fault-tolerance en el sistema, para adultos Querétaro Software Development Meetup
  • 42.
    Agenda Qué es elSimian Army? Jesus, Maria y José… truena todo? Conclusión Porque necesitaría el Simian Army? Tipos de Simios
  • 43.
    Simian Army consistsof 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 theSimian Army to intentionally induce failure on its own terms, so that issues can be identified and fixed before they impact customers.
  • 45.
    [...] a toolthat 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 elSimian 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 yJosé… Truena Todo? Vamos entendiendo de qué estamos hablando, primero necesitamos entender que corre y dónde
  • 48.
    48 Jesús, María yJosé… Truena Todo? Vamos entendiendo de qué estamos hablando, primero necesitamos entender AWS
  • 49.
    49 Qué es elSimian Army? Vamos entendiendo de qué estamos hablando
  • 50.
    50 Jesús, María yJosé… Truena Todo? Vamos entendiendo de qué estamos hablando, primero necesitamos entender AWS
  • 51.
    Netflix se atacaa sí mismo, con la idea de mejorar sus sistemas sin tener que esperar un problema grande
  • 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ómoaseguramos 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 elSimian Army? Cuál es la razón de poner algo tan disruptivo en tus servidores
  • 56.
    Porqué Necesitaría elSimian Army? Cuál es la razón de poner algo tan disruptivo en tus servidores
  • 57.
    Porqué Necesitaría elSimian Army? Cuál es la razón de poner algo tan disruptivo en tus servidores
  • 58.
    Porqué Necesitaría elSimian Army? Cuál es la razón de poner algo tan disruptivo en tus servidores
  • 59.
    Netflix lleva cercade 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 probablees 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
  • 63.
    Lecturas Recomendadas Recomendaciones personalesacerca 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