Charity Majors, CTO & Co-Founder at Honeycomb – Interview Sequence

Charity is an ops engineer and unintentional startup founder at Honeycomb. Earlier than this she labored at Parse, Fb, and Linden Lab on infrastructure and developer instruments, and at all times appeared to wind up working the databases. She is the co-author of O’Reilly’s Database Reliability Engineering, and loves free speech, free software program, and single malt scotch.

You have been the Manufacturing Engineering Supervisor at Fb (Now Meta) for over 2 years, what have been a few of your highlights from this era and what are a few of your key takeaways from this expertise?

I labored on Parse, which was a backend for cell apps, form of like Heroku for cell. I had by no means been concerned with working at a giant firm, however we have been acquired by Fb. Certainly one of my key takeaways was that acquisitions are actually, actually onerous, even in the perfect of circumstances. The recommendation I at all times give different founders now’s this: in case you’re going to be acquired, be sure you have an govt sponsor, and suppose actually onerous about whether or not you might have strategic alignment. Fb acquired Instagram not lengthy earlier than buying Parse, and the Instagram acquisition was hardly bells and roses, but it surely was finally very profitable as a result of they did have strategic alignment and a robust sponsor.

I didn’t have a simple time at Fb, however I’m very grateful for the time I spent there; I don’t know that I may have began an organization with out the teachings I realized about organizational construction, administration, technique, and so on. It additionally lent me a pedigree that made me enticing to VCs, none of whom had given me the time of day till that time. I’m a bit of cranky about this, however I’ll nonetheless take it.

Might you share the genesis story behind launching Honeycomb?

Undoubtedly. From an architectural perspective, Parse was forward of its time — we have been utilizing microservices earlier than there have been microservices, we had a massively sharded knowledge layer, and as a platform serving over 1,000,000 cell apps, we had numerous actually sophisticated multi-tenancy issues. Our clients have been builders, and so they have been continuously writing and importing arbitrary code snippets and new queries of, let’s say, “various high quality” — and we simply needed to take all of it in and make it work, one way or the other.

We have been on the vanguard of a bunch of modifications which have since gone mainstream. It was that the majority architectures have been fairly easy, and they’d fail repeatedly in predictable methods. You usually had an internet layer, an utility, and a database, and a lot of the complexity was certain up in your utility code. So you’d write monitoring checks to look at for these failures, and assemble static dashboards on your metrics and monitoring knowledge.

This business has seen an explosion in architectural complexity over the previous 10 years. We blew up the monolith, so now you might have wherever from a number of companies to hundreds of utility microservices. Polyglot persistence is the norm; as a substitute of “the database” it’s regular to have many various storage sorts in addition to horizontal sharding, layers of caching, db-per-microservice, queueing, and extra. On prime of that you just’ve acquired server-side hosted containers, third-party companies and platforms, serverless code, block storage, and extra.

The onerous half was debugging your code; now, the onerous half is determining the place within the system the code is that it’s essential to debug. As an alternative of failing repeatedly in predictable methods, it’s extra seemingly the case that each single time you get paged, it’s about one thing you’ve by no means seen earlier than and will by no means see once more.

That’s the state we have been in at Parse, on Fb. Daily the complete platform was happening, and each time it was one thing totally different and new; a special app hitting the highest 10 on iTunes, a special developer importing a nasty question.

Debugging these issues from scratch is insanely onerous. With logs and metrics, you mainly must know what you’re searching for earlier than you will discover it. However we began feeding some knowledge units right into a FB instrument known as Scuba, which allow us to slice and cube on arbitrary dimensions and excessive cardinality knowledge in actual time, and the period of time it took us to establish and resolve these issues from scratch dropped like a rock, like from hours to…minutes? seconds? It wasn’t even an engineering downside anymore, it was a help downside. You may simply comply with the path of breadcrumbs to the reply each time, clicky click on click on.

It was mind-blowing. This huge supply of uncertainty and toil and sad clients and a pair of am pages simply … went away. It wasn’t till Christine and I left Fb that it dawned on us simply how a lot it had remodeled the way in which we interacted with software program. The thought of going again to the unhealthy outdated days of monitoring checks and dashboards was simply unthinkable.

However on the time, we truthfully thought this was going to be a distinct segment resolution — that it solved an issue different huge multitenant platforms might need. It wasn’t till we had been constructing for nearly a 12 months that we began to appreciate that, oh wow, that is really turning into an everybody downside.

For readers who’re unfamiliar, what particularly is an observability platform and the way does it differ from conventional monitoring and metrics?

Conventional monitoring famously has three pillars: metrics, logs and traces. You normally want to purchase many instruments to get your wants met: logging, tracing, APM, RUM, dashboarding, visualization, and so on. Every of those is optimized for a special use case in a special format. As an engineer, you sit in the course of these, making an attempt to make sense of all of them. You skim by dashboards searching for visible patterns, you copy-paste IDs round from logs to traces and again. It’s very reactive and piecemeal, and usually you refer to those instruments when you might have an issue — they’re designed that will help you function your code and discover bugs and errors.

Fashionable observability has a single supply of reality; arbitrarily vast structured log occasions. From these occasions you may derive your metrics, dashboards, and logs. You possibly can visualize them over time as a hint, you may slice and cube, you may zoom in to particular person requests and out to the lengthy view. As a result of all the pieces’s linked, you don’t have to leap round from instrument to instrument, guessing or counting on instinct. Fashionable observability isn’t nearly how you use your programs, it’s about the way you develop your code. It’s the substrate that lets you hook up highly effective, tight suggestions loops that aid you ship numerous worth to customers swiftly, with confidence, and discover issues earlier than your customers do.

You’re identified for believing that observability provides a single supply of reality in engineering environments. How does AI combine into this imaginative and prescient, and what are its advantages and challenges on this context?

Observability is like placing your glasses on earlier than you go hurtling down the freeway. Take a look at-driven growth (TDD) revolutionized software program within the early 2000s, however TDD has been dropping efficacy the extra complexity is positioned in our programs as a substitute of simply our software program. More and more, if you wish to get the advantages related to TDD, you really must instrument your code and carry out one thing akin to observability-driven growth, or ODD, the place you instrument as you go, deploy quick, then have a look at your code in manufacturing by the lens of the instrumentation you simply wrote and ask your self: “is it doing what I anticipated it to do, and does anything look … bizarre?”

Assessments alone aren’t sufficient to substantiate that your code is doing what it’s purported to do. You don’t know that till you’ve watched it bake in manufacturing, with actual customers on actual infrastructure.

This type of growth — that features manufacturing in quick suggestions loops — is (considerably counterintuitively) a lot quicker, simpler and less complicated than counting on assessments and slower deploy cycles. As soon as builders have tried working that method, they’re famously unwilling to return to the sluggish, outdated method of doing issues.

What excites me about AI is that once you’re creating with LLMs, it’s important to develop in manufacturing. The one method you may derive a set of assessments is by first validating your code in manufacturing and dealing backwards. I believe that writing software program backed by LLMs shall be as frequent a talent as writing software program backed by MySQL or Postgres in a couple of years, and my hope is that this drags engineers kicking and screaming into a greater lifestyle.

You have raised issues about mounting technical debt because of the AI revolution. Might you elaborate on the sorts of technical money owed AI can introduce and the way Honeycomb helps in managing or mitigating these money owed?

I’m involved about each technical debt and, maybe extra importantly, organizational debt. One of many worst sorts of tech debt is when you might have software program that isn’t properly understood by anybody. Which signifies that any time it’s important to lengthen or change that code, or debug or repair it, any individual has to do the onerous work of studying it.

And in case you put code into manufacturing that no person understands, there’s an excellent likelihood that it wasn’t written to be comprehensible. Good code is written to be straightforward to learn and perceive and lengthen. It makes use of conventions and patterns, it makes use of constant naming and modularization, it strikes a stability between DRY and different issues. The standard of code is inseparable from how straightforward it’s for individuals to work together with it. If we simply begin tossing code into manufacturing as a result of it compiles or passes assessments, we’re creating a large iceberg of future technical issues for ourselves.

In the event you’ve determined to ship code that no person understands, Honeycomb can’t assist with that. However in case you do care about transport clear, iterable software program, instrumentation and observability are completely important to that effort. Instrumentation is like documentation plus real-time state reporting. Instrumentation is the one method you may actually affirm that your software program is doing what you count on it to do, and behaving the way in which your customers count on it to behave.

How does Honeycomb make the most of AI to enhance the effectivity and effectiveness of engineering groups?

Our engineers use AI quite a bit internally, particularly CoPilot. Our extra junior engineers report utilizing ChatGPT day by day to reply questions and assist them perceive the software program they’re constructing. Our extra senior engineers say it’s nice for producing software program that may be very tedious or annoying to jot down, like when you might have a large YAML file to fill out. It’s additionally helpful for producing snippets of code in languages you don’t normally use, or from API documentation. Like, you may generate some actually nice, usable examples of stuff utilizing the AWS SDKs and APIs, because it was educated on repos which have actual utilization of that code.

Nonetheless, any time you let AI generate your code, it’s important to step by it line by line to make sure it’s doing the best factor, as a result of it completely will hallucinate rubbish on the common.

Might you present examples of how AI-powered options like your question assistant or Slack integration improve staff collaboration?

Yeah, for positive. Our question assistant is a superb instance. Utilizing question builders is sophisticated and onerous, even for energy customers. You probably have lots of or hundreds of dimensions in your telemetry, you may’t at all times keep in mind offhand what essentially the most useful ones are known as. And even energy customers neglect the small print of the way to generate sure sorts of graphs.

So our question assistant enables you to ask questions utilizing pure language. Like, “what are the slowest endpoints?”, or “what occurred after my final deploy?” and it generates a question and drops you into it. Most individuals discover it tough to compose a brand new question from scratch and simple to tweak an present one, so it offers you a leg up.

Honeycomb guarantees quicker decision of incidents. Are you able to describe how the combination of logs, metrics, and traces right into a unified knowledge sort aids in faster debugging and downside decision?

All the pieces is linked. You don’t must guess. As an alternative of eyeballing that this dashboard seems prefer it’s the identical form as that dashboard, or guessing that this spike in your metrics should be the identical as this spike in your logs based mostly on time stamps….as a substitute, the information is all linked. You don’t must guess, you may simply ask.

Knowledge is made useful by context. The final technology of tooling labored by stripping away all the context at write time; when you’ve discarded the context, you may by no means get it again once more.

Additionally: with logs and metrics, it’s important to know what you’re searching for earlier than you will discover it. That’s not true of recent observability. You don’t must know something, or seek for something.

If you’re storing this wealthy contextual knowledge, you are able to do issues with it that really feel like magic. We now have a instrument known as BubbleUp, the place you may draw a bubble round something you suppose is bizarre or is perhaps fascinating, and we compute all the scale contained in the bubble vs outdoors the bubble, the baseline, and type and diff them. So that you’re like “this bubble is bizarre” and we instantly let you know, “it’s totally different in xyz methods”. SO a lot of debugging boils right down to “right here’s a factor I care about, however why do I care about it?” When you may instantly establish that it’s totally different as a result of these requests are coming from Android units, with this explicit construct ID, utilizing this language pack, on this area, with this app id, with a big payload … by now you in all probability know precisely what’s incorrect and why.

It’s not simply in regards to the unified knowledge, both — though that could be a large a part of it. It’s additionally about how effortlessly we deal with excessive cardinality knowledge, like distinctive IDs, procuring cart IDs, app IDs, first/final names, and so on. The final technology of tooling can’t deal with wealthy knowledge like that, which is form of unbelievable when you consider it, as a result of wealthy, excessive cardinality knowledge is essentially the most useful and figuring out knowledge of all.

How does enhancing observability translate into higher enterprise outcomes?

This is among the different huge shifts from the previous technology to the brand new technology of observability tooling. Prior to now, programs, utility, and enterprise knowledge have been all siloed away from one another into totally different instruments. That is absurd — each fascinating query you need to ask about trendy programs has components of all three.

Observability isn’t nearly bugs, or downtime, or outages. It’s about guaranteeing that we’re engaged on the best issues, that our customers are having an awesome expertise, that we’re attaining the enterprise outcomes we’re aiming for. It’s about constructing worth, not simply working. In the event you can’t see the place you’re going, you’re not in a position to transfer very swiftly and you may’t course appropriate very quick. The extra visibility you might have into what your customers are doing along with your code, the higher and stronger an engineer you will be.

The place do you see the way forward for observability heading, particularly regarding AI developments?

Observability is more and more about enabling groups to hook up tight, quick suggestions loops, to allow them to develop swiftly, with confidence, in manufacturing, and waste much less time and power.

It’s about connecting the dots between enterprise outcomes and technological strategies.

And it’s about guaranteeing that we perceive the software program we’re placing out into the world. As software program and programs get ever extra complicated, and particularly as AI is more and more within the combine, it’s extra necessary than ever that we maintain ourselves accountable to a human customary of understanding and manageability.

From an observability perspective, we’re going to see rising ranges of sophistication within the knowledge pipeline — utilizing machine studying and complicated sampling methods to stability worth vs value, to maintain as a lot element as doable about outlier occasions and necessary occasions and retailer summaries of the remainder as cheaply as doable.

AI distributors are making numerous overheated claims about how they’ll perceive your software program higher than you may, or how they’ll course of the information and inform your people what actions to take. From all the pieces I’ve seen, that is an costly pipe dream. False positives are extremely pricey. There is no such thing as a substitute for understanding your programs and your knowledge. AI might help your engineers with this! However it can’t change your engineers.

Thanks for the nice interview, readers who want to study extra ought to go to Honeycomb.

Leave a Reply