Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SymfonyLive San Francisco 2015 - Blackfire.io: a Symfony project like no other

SymfonyLive San Francisco 2015 - Blackfire.io: a Symfony project like no other

Blackfire.io is a Symfony project. But it's only the tip of the iceberg. By its very nature,

Tugdual Saunier

October 29, 2015
Tweet

More Decks by Tugdual Saunier

Other Decks in Programming

Transcript

  1. Blackfire.io 
 A Symfony project like no other Tugdual Saunier

    http://www.jyotiumbrellas.com/wp-content/uploads/2013/06/Red-umbrella.jpg
  2. blackfire.io @blackfireio #blackfireio 2 Tugdual Saunier @tucksaun Shipping guy.
 Loves

    Dev, Ops and automation. London, UK Blackfire.io/SensioLabs
  3. blackfire.io @blackfireio #blackfireio 4 SaaS-delivered Solution Great user experience No

    need to change your code Profile comparisons Works in dev & prod (no overhead) Works for the Web and the CLI Freemium for individual developers Automation
  4. Storage Server Probe Agent 6. Aggregated profile 1. Get signature

    2. Trigger 5. Send profile PHP/HHVM 7. Store profile Browser 3. Check signature Companion 4. Collect profile App Container
  5. blackfire.io @blackfireio #blackfireio In a year, we rolled out 220

    prod releases of the website 240 releases for the Companion 260 releases for the Probe 350 releases for the Agent in a fully automated way Numbers 6
  6. Challenge # We knew we would face a lot of

    Challenges 1 Solution: solve Challenge #2
  7. blackfire.io @blackfireio #blackfireio No need to worry about them in

    urgency, Gives us more capacity to deal with other challenges, We knew we would face more challenges, Handle Symfony challenges before issues arise 9
  8. blackfire.io @blackfireio #blackfireio Move heavy workload to background workers Move

    assets building to a Jenkins job publishing on S3 Amazon RDS / ElastiCache Reusing recipes working on other projects 10
  9. blackfire.io @blackfireio #blackfireio Deployment automated very early Monitoring, measuring and

    graphing everything, Pushing all the logs into EHK Sending all errors to Sentry (and JS too!) Reusing recipes working on other projects 11
  10. blackfire.io @blackfireio #blackfireio Not hesitating to change the model :

    136 migrations so far;
 No table in common with first day model;
 User class is probably the only one who has not been changed since the public announcement. Not afraid to denormalize model for reads Allowed us to easily move to ES for reads, 
 Allowed us to remove the complex models burden of frontend. Reusing recipes working on other projects 12
  11. blackfire.io @blackfireio #blackfireio Symfony :
 Only the tip of the

    iceberg http://alpha.wallhaven.cc/wallpaper/169813 14
  12. blackfire.io @blackfireio #blackfireio PHP JavaScript Golang C And a lot

    of glue in several languages (Bash, Ruby, …) Languages used by Blackfire stack 15
  13. blackfire.io @blackfireio #blackfireio Compiling Packaging binaries and scripts Pushing package

    somewhere Updating release channels (Webstore, repositories, you own doc, …) Releasing 19 For every platform
  14. blackfire.io @blackfireio #blackfireio 25 #ifdef&__linux! #ifndef&__GLIBC_COMPAT_SYMBOL_H__! #define&__GLIBC_COMPAT_SYMBOL_H__&1! !!!#ifdef&__amd64__! !!!!!!#define&GLIBC_COMPAT_SYMBOL(FFF)&__asm__(".symver&"&#FFF&","&#FFF&"@GLIBC_2.2.5");! !!!#else!

    !!!!!!#define&GLIBC_COMPAT_SYMBOL(FFF)&__asm__(".symver&"&#FFF&","&#FFF&"@GLIBC_2.0");! !!!#endif&/*__amd64__*/! #endif&/*__GLIBC_COMPAT_SYMBOL_H__*/! #ifndef&__SL_LIB_C_COMPAT_LAYER__! #define&__SL_LIB_C_COMPAT_LAYER__&1! !!!!/*! 66666*6List6here6ALL6libc6symbol6that6should6be6downgraded! 66666*6To6find6linked6libc6versions,6make6and6use:6*/! !!!!!!!!//66objdump6Mx6.libs/*.{o,so}6**\/.libs/*.o6|6grep6"GLIBC"! !!!!GLIBC_COMPAT_SYMBOL(memcpy);! #endif&/*__SP_LIB_C_COMPAT_LAYER__*/! #endif&/*__linux*/
  15. blackfire.io @blackfireio #blackfireio We believe short time to feedback is

    essential to make a tool actually useful to developers. At first, only a single do-everything Jenkins build for PR To decrease time to feedback we split it Which also allows to have the tests running for the whole stack whilst it would have previously stop at first fail. Reducing time to feedback 36
  16. blackfire.io @blackfireio #blackfireio We believe short time to feedback is

    essential to make a tool actually useful to developers. At first, only a single do-everything Jenkins build for PR To decrease time to feedback we split it Which also allows to have the tests running for the whole stack whilst it would have previously stop at first fail. Reducing time to feedback 36
  17. blackfire.io @blackfireio #blackfireio In a year, we rolled out 220

    prod releases of the website 240 releases for the Companion 260 releases for the Probe 350 releases for the Agent in a fully automated way Numbers 37
  18. blackfire.io @blackfireio #blackfireio Continuous Improvement Nothing can be done at

    once Constantly improve and refine Accept new challenges http://www.freewallpaperfullhd.com/space-shuttle-launch-wallpaper-full-hd-2560x1600/ 38