SlideShare uma empresa Scribd logo
1 de 37
We open sourced our trade
secrets, and so can you!
James Meickle
Developer evangelist, AppNeta
@jmeickle
Boston Rails Meetup
August 26, 2014
AppNeta
• Application
performance
management (APM)
– Client
– Network
– Server
• Software as a service
• Cloud hosted
A brief history of APM
• Closed source
monitoring for closed
source applications
• Oriented around
mainframes and J2EE
• Incredibly high cost, not
production-ready
• Today: rapid value, easy
deployment, low cost
AppNeta TraceView
• Distributed tracing
(Zipkin, Dapper)
• Bytecode
instrumentation
• Java, .NET, PHP, Ruby,
Python, node.js
• Definitely not
Tracelytics!
THE GEM
Implementing TraceView’s functionality in Ruby
Our maintainer
• Peter Lombardo came
on a few years ago
• Exclusively focused on
the oboe gem
• Works remote from
Italy, or else he’d be
giving this talk!
oboe
• Installed like a normal
gem (with C extension)
• No configuration required
• Provides:
– Application performance
management
– Software as a service
– Distributed tracing
– Bytecode instrumentation
– Trace API
Application performance management
• Collect performance data:
– Database queries
– Cache requests
– Remote calls
– Templating time
• Without causing
problems:
– Identical behavior
– Overhead below 1%
– Stable
Software as a service
• Don’t do any processing
locally
• Report data to the
agent (UDP)
• Report data to collector
(SSL, on Heroku)
Distributed tracing
• Follow calls from one
application to another
– Different servers
– Multiple languages
– Asynchronous
• Common
request/response
protocols:
– HTTP
– Thrift
– EJB (for JRuby)
Bytecode instrumentation
• Support common
components:
– Frameworks
– Libraries
– Drivers/clients
• Without code
modification
– Ruby, Python: monkey
patching
– Java: classloader
– PHP: 
Trace API
• Same API that we use
when adding layers
• Our backend is built
around supporting it
• Duck typing for events
• Report anything!*
*please don’t report credit card numbers, thanks
Example 1: memcache
Example 2: rack
Example 2: Net::HTTP
Example 4: resque
THE PROCESS
Opening the oboe gem to the world
Why did we open source oboe?
• We <3 open source
• Larger customers want
to audit our code
• Increased community
contributions
• Better capture of
reported issues
• Good publicity 
Why couldn’t we “flip the switch”?
• The code was not
appropriately
documented
• The test suite needed
work
• There was no
contribution guide
• It wasn’t licensed
• Not branded properly!
• Issues contained
customer-specific
information
Documentation
• Added
Tests
• “Before opensourcing, we had to
move away from manual testing
via nosetests (30 something stack
variations, manual boot and
manually run nosetests, rinse and
repeat for the next hour).
We went with Minitest. Today
with Minitest, we now test 7
Ruby versions: each with 202
tests, 1979 assertions - biggest
win beyond coverage is that it’s
automated with Travis for each
git commit.”
– Peter Lombardo
Contribution guide
Branding
• We were already
AppNeta TraceView
• But we still were
Tracelytics in our code
• Not as simple as a
s/foo/bar/; lots of
unexpected places
(support URLs!)
Licensing
• Open source != free
software
• Competitive advantage
• Still an unfathomable
change from where we
were 10 years ago 
Issues with issues
• We didn’t want to lose
historical issues
• New issues would also
need to reference
specific customers and
post about their data
The solution
• “The key was to use two repos (1
private and 1 public) using two git
remotes. Now our default is that
all issues are filed in the public
repository unless it contains
customer specific data. If a public
issue, turns out to need a pointer
to some internal data or
resource, we file a corresponding
internal issue that points to the
public issue. We now always
prefer the public repo over the
private and only use the private
when absolutely necessary.”
– Peter Lombardo
The final countdown
Marketing helped too!
• Pre-launch
– Implications of licensing
– How to reward and
publicize contributors
– Info page for repo
• Post-launch
– Launch blog post
– Social media
– Existing customers!
Launch day
• Set up the public repo
as a private one
• Switch our build
process (rubygems) to
use the right repo
• Post the new build as a
GitHub Release too
• Publish the blog post!
THE RESULT
What we’ve seen after open sourcing
appneta / oboe-ruby
• Not many visitors 
• But they were
incredibly engaged:
more than 25% of them
cloned the repo.
• And about a third of
them contributed code!
More contributions
• 80%: post an issue
• 15%: post a fix/snippet
• 5%: an entire feature!
– Grape API: Todd Lunter
at Swipely
– EventMachine: Diogo
Benica at Abril Midia
Happier maintainer
• “Not sure if this part is going to make
sense but working on an opensource
project is like having a weight lifted
off of your shoulders. When it’s
private, proprietary code, the burden
is completely on you to assure quality
and to not screw up. When the code
is opensource, there is a slightly
calming feel because you know that
your code is public and is available to
be reviewed and improved upon by
anyone. We love the contributions
we’ve gotten so far and are always
looking for more.”
– Peter Lombardo
GitHub issues
• Work being done lives
in GitHub issues on the
public repo
• Anyone can post there!
Supporting contributors
• Most people use the
trace API incorrectly
• We only notice when
they file support tickets
• Post custom code on
GH, and we can help
while you write it! 
Thank you!
Come work for us! We’re a mostly
Python shop 
You can meet us at:
• Sep 15-17: Velocity New York
• Sep 18: WebPerfDays New
York
• Oct 21: TechBreakfast New
York
• October 24: Surge (DC)
• Nov 11-14: AWS re:Invent
(Vegas!)
Or just try us out:
http://www.appneta.com/products/traceview/

Mais conteúdo relacionado

Destaque

Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool KitExclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
KathleenIsobel
 

Destaque (12)

Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool KitExclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
Exclusive Preview: AppNeta' Launches Advanced Network Assessment Tool Kit
 
Configuring elasticsearch for performance and scale
Configuring elasticsearch for performance and scaleConfiguring elasticsearch for performance and scale
Configuring elasticsearch for performance and scale
 
8 Common Network Topologies & Where to Use Them
8 Common Network Topologies & Where to Use Them8 Common Network Topologies & Where to Use Them
8 Common Network Topologies & Where to Use Them
 
Reducing Latency and Increasing Performance while Cutting Infrastructure Costs
Reducing Latency and Increasing Performance while Cutting Infrastructure CostsReducing Latency and Increasing Performance while Cutting Infrastructure Costs
Reducing Latency and Increasing Performance while Cutting Infrastructure Costs
 
How Serverless Computing Enables Microservices and Micropayment 
How Serverless Computing Enables Microservices and Micropayment  How Serverless Computing Enables Microservices and Micropayment 
How Serverless Computing Enables Microservices and Micropayment 
 
Monitoring to the Nth tier: The state of distributed tracing in 2016
Monitoring to the Nth tier: The state of distributed tracing in 2016Monitoring to the Nth tier: The state of distributed tracing in 2016
Monitoring to the Nth tier: The state of distributed tracing in 2016
 
Distributed Tracing
Distributed TracingDistributed Tracing
Distributed Tracing
 
Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...
Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...
Social Media Case Study: How Micromax Mobile's Teaser Went Viral for the Firs...
 
Oppo Smartphone Launch SA - Assignment
Oppo Smartphone Launch SA - AssignmentOppo Smartphone Launch SA - Assignment
Oppo Smartphone Launch SA - Assignment
 
AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...
AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...
AWS re:Invent 2016: Monitoring, Hold the Infrastructure: Getting the Most fro...
 
Big Data Technology Stack : Nutshell
Big Data Technology Stack : NutshellBig Data Technology Stack : Nutshell
Big Data Technology Stack : Nutshell
 
Big Data Tech Stack
Big Data Tech StackBig Data Tech Stack
Big Data Tech Stack
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 

We open sourced our trade secrets, and so can you!

  • 1. We open sourced our trade secrets, and so can you! James Meickle Developer evangelist, AppNeta @jmeickle Boston Rails Meetup August 26, 2014
  • 2. AppNeta • Application performance management (APM) – Client – Network – Server • Software as a service • Cloud hosted
  • 3. A brief history of APM • Closed source monitoring for closed source applications • Oriented around mainframes and J2EE • Incredibly high cost, not production-ready • Today: rapid value, easy deployment, low cost
  • 4. AppNeta TraceView • Distributed tracing (Zipkin, Dapper) • Bytecode instrumentation • Java, .NET, PHP, Ruby, Python, node.js • Definitely not Tracelytics!
  • 5. THE GEM Implementing TraceView’s functionality in Ruby
  • 6. Our maintainer • Peter Lombardo came on a few years ago • Exclusively focused on the oboe gem • Works remote from Italy, or else he’d be giving this talk!
  • 7. oboe • Installed like a normal gem (with C extension) • No configuration required • Provides: – Application performance management – Software as a service – Distributed tracing – Bytecode instrumentation – Trace API
  • 8. Application performance management • Collect performance data: – Database queries – Cache requests – Remote calls – Templating time • Without causing problems: – Identical behavior – Overhead below 1% – Stable
  • 9. Software as a service • Don’t do any processing locally • Report data to the agent (UDP) • Report data to collector (SSL, on Heroku)
  • 10. Distributed tracing • Follow calls from one application to another – Different servers – Multiple languages – Asynchronous • Common request/response protocols: – HTTP – Thrift – EJB (for JRuby)
  • 11. Bytecode instrumentation • Support common components: – Frameworks – Libraries – Drivers/clients • Without code modification – Ruby, Python: monkey patching – Java: classloader – PHP: 
  • 12. Trace API • Same API that we use when adding layers • Our backend is built around supporting it • Duck typing for events • Report anything!* *please don’t report credit card numbers, thanks
  • 17. THE PROCESS Opening the oboe gem to the world
  • 18. Why did we open source oboe? • We <3 open source • Larger customers want to audit our code • Increased community contributions • Better capture of reported issues • Good publicity 
  • 19. Why couldn’t we “flip the switch”? • The code was not appropriately documented • The test suite needed work • There was no contribution guide • It wasn’t licensed • Not branded properly! • Issues contained customer-specific information
  • 21. Tests • “Before opensourcing, we had to move away from manual testing via nosetests (30 something stack variations, manual boot and manually run nosetests, rinse and repeat for the next hour). We went with Minitest. Today with Minitest, we now test 7 Ruby versions: each with 202 tests, 1979 assertions - biggest win beyond coverage is that it’s automated with Travis for each git commit.” – Peter Lombardo
  • 23. Branding • We were already AppNeta TraceView • But we still were Tracelytics in our code • Not as simple as a s/foo/bar/; lots of unexpected places (support URLs!)
  • 24. Licensing • Open source != free software • Competitive advantage • Still an unfathomable change from where we were 10 years ago 
  • 25. Issues with issues • We didn’t want to lose historical issues • New issues would also need to reference specific customers and post about their data
  • 26. The solution • “The key was to use two repos (1 private and 1 public) using two git remotes. Now our default is that all issues are filed in the public repository unless it contains customer specific data. If a public issue, turns out to need a pointer to some internal data or resource, we file a corresponding internal issue that points to the public issue. We now always prefer the public repo over the private and only use the private when absolutely necessary.” – Peter Lombardo
  • 28. Marketing helped too! • Pre-launch – Implications of licensing – How to reward and publicize contributors – Info page for repo • Post-launch – Launch blog post – Social media – Existing customers!
  • 29. Launch day • Set up the public repo as a private one • Switch our build process (rubygems) to use the right repo • Post the new build as a GitHub Release too • Publish the blog post!
  • 30. THE RESULT What we’ve seen after open sourcing
  • 31. appneta / oboe-ruby • Not many visitors  • But they were incredibly engaged: more than 25% of them cloned the repo. • And about a third of them contributed code!
  • 32. More contributions • 80%: post an issue • 15%: post a fix/snippet • 5%: an entire feature! – Grape API: Todd Lunter at Swipely – EventMachine: Diogo Benica at Abril Midia
  • 33. Happier maintainer • “Not sure if this part is going to make sense but working on an opensource project is like having a weight lifted off of your shoulders. When it’s private, proprietary code, the burden is completely on you to assure quality and to not screw up. When the code is opensource, there is a slightly calming feel because you know that your code is public and is available to be reviewed and improved upon by anyone. We love the contributions we’ve gotten so far and are always looking for more.” – Peter Lombardo
  • 34.
  • 35. GitHub issues • Work being done lives in GitHub issues on the public repo • Anyone can post there!
  • 36. Supporting contributors • Most people use the trace API incorrectly • We only notice when they file support tickets • Post custom code on GH, and we can help while you write it! 
  • 37. Thank you! Come work for us! We’re a mostly Python shop  You can meet us at: • Sep 15-17: Velocity New York • Sep 18: WebPerfDays New York • Oct 21: TechBreakfast New York • October 24: Surge (DC) • Nov 11-14: AWS re:Invent (Vegas!) Or just try us out: http://www.appneta.com/products/traceview/