Top Banner
How New Relic Builds Language Agents Belinda Runkle, VP of Engineering, APM @BelindaRunkle
42

How New Relic Develops Language Agents [FutureStack16]

Apr 14, 2017

Download

Data & Analytics

New Relic
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: How New Relic Develops Language Agents [FutureStack16]

How New Relic Builds Language Agents

Belinda Runkle, VP of Engineering, APM @BelindaRunkle

Page 2: How New Relic Develops Language Agents [FutureStack16]

This document and the information herein (including any information that may be incorporated by reference) is provided for informational purposes only and should not be construed as an offer, commitment, promise or obligation on behalf of New Relic, Inc. (“New Relic”) to sell securities or deliver any product, material, code, functionality, or other feature. Any information provided hereby is proprietary to New Relic and may not be replicated or disclosed without New Relic’s express written permission.

Such information may contain forward-looking statements within the meaning of federal securities laws. Any statement that is not a historical fact or refers to expectations, projections, future plans, objectives, estimates, goals, or other characterizations of future events is a forward-looking statement. These forward-looking statements can often be identified as such because the context of the statement will include words such as “believes,” “anticipates,”, “expects” or words of similar import.

Actual results may differ materially from those expressed in these forward-looking statements, which speak only as of the date hereof, and are subject to change at any time without notice. Existing and prospective investors, customers and other third parties transacting business with New Relic are cautioned not to place undue reliance on this forward-looking information. The achievement or success of the matters covered by such forward-looking statements are based on New Relic’s current assumptions, expectations, and beliefs and are subject to substantial risks, uncertainties, assumptions, and changes in circumstances that may cause the actual results, performance, or achievements to differ materially from those expressed or implied in any forward-looking statement. Further information on factors that could affect such forward-looking statements is included in the filings New Relic makes with the SEC from time to time. Copies of these documents may be obtained by visiting New Relic’s Investor Relations website at ir.newrelic.com or the SEC’s website at www.sec.gov.

New Relic assumes no obligation and does not intend to update these forward-looking statements, except as required by law. New Relic makes no warranties, expressed or implied, in this document or otherwise, with respect to the information provided.

Page 3: How New Relic Develops Language Agents [FutureStack16]

VP of Engineering, APM4+ years product engineering for agentsLaunched Go, Node.js agents @belindarunkle

Hi, I’m Belinda

Page 4: How New Relic Develops Language Agents [FutureStack16]

Agents

gopher by Renee French is licensed under CC3.0

Java image licensed under Apache

elephant licensed by El Rubio under GPL

Node.js is a trademark of Joyent, Inc. and is used with its permission

Ruby logo by Yukihiro Matsumoto is licensed under CC-SA-2.5

Python logo licensed under CC-SA-3.0

Page 5: How New Relic Develops Language Agents [FutureStack16]

10 lessons learned from building agents for the future stacks

Page 6: How New Relic Develops Language Agents [FutureStack16]

#1 - Pay attention to what your developers

are talking about

Page 7: How New Relic Develops Language Agents [FutureStack16]

gopher by Renee French is licensed under CC3.0

Page 8: How New Relic Develops Language Agents [FutureStack16]

gopher by Renee French is licensed under CC3.0

Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein

Page 9: How New Relic Develops Language Agents [FutureStack16]

new PHP daemon in Go

▪ Version 5.0 in released over a year ago included a new Go-based daemon

▪ Daemon was re-architected to allow for better performance, easier cross-platform compatibility, and overall maintenance simplicity

▪ Developers loved writing Go (vs. C)

Page 10: How New Relic Develops Language Agents [FutureStack16]

#2 - Use constraints to inspire innovation

Page 11: How New Relic Develops Language Agents [FutureStack16]

Good architecture means having some

rules.

Page 12: How New Relic Develops Language Agents [FutureStack16]

Confidential ©2008-16 New Relic, Inc. All rights reserved.   12

NR Architecture Note #128

Page 13: How New Relic Develops Language Agents [FutureStack16]

Rules are constraints. Constraints inspire

innovation.

Page 14: How New Relic Develops Language Agents [FutureStack16]

Confidential ©2008-16 New Relic, Inc. All rights reserved.   14

NR Architecture Note #128

Page 15: How New Relic Develops Language Agents [FutureStack16]

First Go agent(s)

▪ Dev teams <3 Go.▪ Build an agent to make their Go service

acceptable in production.▪ These new agents and plugins become future

products in some cases.▪ We had at least 3 engineers try writing a

lightweight Go agent.

gopher by Renee French is licensed under CC3.0

Page 16: How New Relic Develops Language Agents [FutureStack16]

#3 - Encourage experimentation

(including failures)

Page 17: How New Relic Develops Language Agents [FutureStack16]

All it takes is one curious

engineerCurious Cat by Captain Pancakes is licensed under CC2.0

Page 18: How New Relic Develops Language Agents [FutureStack16]

“What's the simplest thing that could possibly work?”

by Carrigg Photography for the Wikimedia Foundation – Own work, CC BY-SA 3.0.

– Ward Cunningham

Page 19: How New Relic Develops Language Agents [FutureStack16]

#4 - Rapidly mature by reducing cycle time

Page 20: How New Relic Develops Language Agents [FutureStack16]
Page 21: How New Relic Develops Language Agents [FutureStack16]
Page 22: How New Relic Develops Language Agents [FutureStack16]

#5 - It’s OK to ask for help

Page 23: How New Relic Develops Language Agents [FutureStack16]

Developing the Node.js agent

Page 24: How New Relic Develops Language Agents [FutureStack16]

#6 - Accept that you will lose some bets

Page 25: How New Relic Develops Language Agents [FutureStack16]

Whatever happened to that HHVM agent?

▪ HHVM promising early start

▪ Radically faster performance than PHP5+

▪ Wordpress, Drupal, others adopting

▪ But HHVM was massive reworking of PHP internals, and thus broke our PHP agent in some fundamental places

▪ And eventually… PHP7 launched! With similar performance gains!

▪ Building in support for PHP7 was much easier

Page 26: How New Relic Develops Language Agents [FutureStack16]

#7 - Time with customers is worth 10x

coding time.

Page 27: How New Relic Develops Language Agents [FutureStack16]
Page 28: How New Relic Develops Language Agents [FutureStack16]

How engineers typically engage with customers

▪ our forums▪ requests made via our account teams▪ support tickets▪ user interviews and ride-alongs▪ meetups and conferences▪ open-source and community events▪ Github

Page 29: How New Relic Develops Language Agents [FutureStack16]

Go Agent beta in Slack

Real-time feedback from Go Agent beta customers straight to the engineering team

Page 30: How New Relic Develops Language Agents [FutureStack16]

#8 - Use data to know where to focus

Page 31: How New Relic Develops Language Agents [FutureStack16]

Job listings

Data source: Indeed (www.indeed.com)

Page 32: How New Relic Develops Language Agents [FutureStack16]

RedMonk analysis of Github and Stack Overflow

Data source: Redmonk (www.redmonk,com)

▪ JavaScript▪ Java▪ PHP▪ Python▪ C#▪ C++

▪ Ruby▪ CSS▪ C▪ Objective-C

Page 33: How New Relic Develops Language Agents [FutureStack16]

Stack Overflow survey

Data source: Stack Overflow survey (http://stackoverflow.com/research/developer-survey-2016

▪ Rust: 79.1%▪ Swift: 72.1%▪ F#: 70.7%▪ Scala: 69.4%▪ Go: 68.7%▪ Clojure: 66.7%

▪ React: 66.0%▪ Haskell: 64.7%▪ Python: 62.5%▪ C#: 62.0%▪ Node.js: 59.6%

Page 34: How New Relic Develops Language Agents [FutureStack16]

Relative comparisons

Data source: Google Trends (www.google.com/trends)

Page 35: How New Relic Develops Language Agents [FutureStack16]

Customer requests on our forum

Page 36: How New Relic Develops Language Agents [FutureStack16]

#9 - Curate every new-stack experience

Page 37: How New Relic Develops Language Agents [FutureStack16]

Goroutines page

Page 38: How New Relic Develops Language Agents [FutureStack16]

Browser Agent for single page apps

JS logo by Chris Williams licensed under WTFPL

Page 39: How New Relic Develops Language Agents [FutureStack16]

#10 - Always have something simmering

Page 40: How New Relic Develops Language Agents [FutureStack16]

What our developers talk about

New Relic developers talk about Elixir, Rust,

Kotlin

Microsoft has done major work with CoreCLR

Deeper insight into

Node internals

More extensible agents – Improved

Agent APIs

Cloud service

integration

Page 41: How New Relic Develops Language Agents [FutureStack16]

Questions?

Page 42: How New Relic Develops Language Agents [FutureStack16]

Thank you.

Belinda Runkle, VP of Engineering, APM @BelindaRunkle