SlideShare ist ein Scribd-Unternehmen logo
1 von 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/

Weitere ähnliche Inhalte

Andere mochten auch

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
 

Andere mochten auch (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
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

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/