adding NewRelic APM add? 2. How much overhead will this piece of embedded Lua code add to our nginx? 3. Shall I go with Heroku for my WS-‐heavy app? 4. External APIs
adding NewRelic APM add? 2. How much overhead will this piece of embedded Lua code add to our nginx? 3. Shall I go with Heroku for my WS-‐heavy app? 2. Soak testing
things until it works then I move on. The real programmers will say "Yeah it works but you're leaking memory everywhere. Perhaps we should fix that." I’ll just restart Apache every 10 requests.” -‐ Rasmus Lerdorf (creator of PHP)
adding NewRelic APM add? 2. How much overhead will this piece of embedded Lua code add to our nginx? 3. Shall I go with Heroku for my WS-‐heavy app? 2. Soak testing 3. Load amplification
adding NewRelic APM add? 2. How much overhead will this piece of embedded Lua code add to our nginx? 3. Shall I go with Heroku for my WS-‐heavy app? 2. Soak testing 3. Load amplification 1. Add extra load, in production, at peak
adding NewRelic APM add? 2. How much overhead will this piece of embedded Lua code add to our nginx? 3. Shall I go with Heroku for my WS-‐heavy app? 2. Soak testing 3. Load amplification 1. Add extra load, in production, at peak 2. JustEat do this every day
adding NewRelic APM add? 2. How much overhead will this piece of embedded Lua code add to our nginx? 3. Shall I go with Heroku for my WS-‐heavy app? 2. Soak testing 3. Load amplification 1. Add extra load, in production, at peak 2. JustEat do this every day 3. Trellotoo
-‐> function 1. async.waterfall 2. What creates the waterfall? 1. compileScenario() -‐> function 1. async.waterfall with a context 2. One up to Runner
-‐> function 1. async.waterfall 2. What creates the waterfall? 1. compileScenario() -‐> function 1. async.waterfall with a context 2. One up to Runner 1. Each phaseSpec -‐> function
-‐> function 1. async.waterfall 2. What creates the waterfall? 1. compileScenario() -‐> function 1. async.waterfall with a context 2. One up to Runner 1. Each phaseSpec -‐> function 1. interval running scenario functions
-‐> function 1. async.waterfall 2. What creates the waterfall? 1. compileScenario() -‐> function 1. async.waterfall with a context 2. One up to Runner 1. Each phaseSpec -‐> function 1. interval running scenario functions 2. phaseSpec functions are run with async.series
-‐> function 1. async.waterfall 2. What creates the waterfall? 1. compileScenario() -‐> function 1. async.waterfall with a context 2. One up to Runner 1. Each phaseSpec -‐> function 1. interval running scenario functions 2. phaseSpec functions are run with async.series 3. Wait to finish once all phases launch