Bootstrapping: Improving Apigee with Apigee

anant

Feb 05, 2016

As a grad student at U.C. Berkeley, I was blown away when I read that the C compiler is written in C. Seriously? Since then, I came across many, many more examples: again, as a grad student, I learned that tables in a relational database are themselves described as tables, so the language (SQL) to access database information could itself be used to access the metadata. My head spun.

It’s a very powerful concept—one unique to computer science, maybe—though I am sure existential philosophers could and do tie themselves in knots on this concept. When I look at the sky and wonder in awe about how this beauty came about, I’m drawn to the bootstrapping argument, and, at some point, have to give up thinking about it.

Similarly, in computer science, bootstrapping can’t be extended back to t=0. Niklaus Wirth wrote the Pascal compiler in FORTRAN, even if later Pascal compilers could be written in Pascal. Reductio ad absurdum, maybe? Okay, I'm mixing too many metaphors, but having fun nonetheless.

When I came to Apigee, I had the fortune of sitting next to Greg Brail (and I still do)—a man of brilliance if there ever was one. As our chief architect, he created the product that we sell today. One fine day, he observed: “We should use our own product to improve our product.”

I said, as you might have guessed, “Seriously?” And then I said, “Aha—you mean ‘bootstrap ourselves?’” He said, “Whatever—instead of theorizing, just listen to my ideas.” So I did.

We (he, really, but, because I‘m telling the story, I have inserted myself into it) considered the fact that we tell our customers to manage their APIs with us. Because our product is nothing but a set of APIs (deploy a proxy bundle, create a user, and analyze the traffic through a set of REST calls), why don’t we use our product to manage these APIs?

As we considered that question, we realized that the benefits would be the same as for our customers:

We can describe the APIs in OpenAPI (formerly known as Swagger).

We can mediate them and change their syntax to have uniformity across all APIs.

There’s consistent security.

We can create API products for partners.

We have clear visibility.

We use features like throttling, traffic management, and monetization (based on what the customer has purchased).

So now, our APIs are managed by an org called apigee-internal. We get all the benefits that you get when you use Apigee as your org.