"You've heard the story, I'm sure, a thousand times," says Stack Overflow's newly installed CTO, Jody Bailey, at the company's headquarters in lower Manhattan. "How do you evolve the architecture from this really performant monolith to a distributed system that really serves the purpose of helping you scale, and bring people on board and help them understand how to implement things faster and easier, etc."
Tiernan Ray for ZDNet"The running joke is, nobody codes anymore, they just copy and paste from Stack Overflow."
Stack Overflow is a darling of programmers and one of the biggest Web properties in the world. The person referencing the joke, in this case, is Jody Bailey, the newly appointed chief technology officer of the fourteen-year-old company.
Bailey joined the company a month and a half ago from Amazon AWS, where he was head of product management, user experience, and engineering responsible for self-paced learning experiences.
What Bailey is setting out to do in this new role is not exactly copy-and-paste. It's more creative than that, namely, to bring the company more deeply into a public cloud age after years of the company building everything on its own.
"You're bootstrapped, you get something up and running, and now, all of a sudden, you've got success," is how Bailey described the journey of Stack Overflow from its founding in 2008 to this moment in time, in an interview withZDNetat the company's offices in lower Manhattan last week.
The challenge of success then becomes, "how do you transition it so that you can, you know, scale and grow." More specifically, Bailey faces a two-headed challenge, scaling a gigantic internet site, and scaling a revenue-generating version used by enterprise customers.
Much of what Stack Overflow is known for is feeding a mass audience the precise answer at the end of a quest. "If you Google, chances are you're going to end up on Stack Overflow, observed Bailey. The main, retail, public site serves over a hundred million unique users and 6,000 page views per second.
"I don't think of it as content publishing, so much as people, primarily developers, asking questions and then getting answered from experts from the community," said Bailey.
While most of the discussions are on programming material, there are numerous what are called "exchanges" on Stack Overflow that deal with specialty areas from gardening to aviation, in the neighborhood of 150 different exchanges.
But in recent years, "they've been shifting towards more of an enterprise product," called Stack Overflow for Teams. Though the company runs some ads on its public site, the majority of revenue comes from the Teams product.
Teams allows companies to create a kind of private Stack Overflow, "their own communities within their organizations in order to make the knowledge sharing easier," as Bailey puts it. The company has over 100 customers using the enterprise product, including Bloomberg and Microsoft, constituting over 10,000 teams.
Bailey was drawn by the challenge of innovating within what has become a storied brand and a vibrant resource, he said. "The opportunity to come someplace that provides so much value to the industry that I work in, that's super-interesting, that got me to take the call," he toldZDNet.
"Also, I'm passionate about providing education in the tech space," given his role at AWS, and at another prior employer, privately held, 18-year-old Pluralsight, based in Farmington, Utah, a developer of tools for technology skills development and assessment.
He is also, he said, drawn by the opportunity for something like Teams to help with the large-company challenge of sharing knowledge.
"Having worked at Amazon and seeing the scale and the challenge of sharing information across different groups, having something like Stack Overflow really streamlines that, and we're just getting started in that space."
"Software-as-a-service is all about the long tail," says Bailey, meaning, you can just keep adding more customers to it, and economically so, if you can really nail down the most efficient use of the public cloud. "There's just the economies of scale that come from being able to even offer that solution to some of the enterprise customers that maybe, you know, wouldn't require that dedicated instance."
Stack Overflow"The big thing, my perspective on StackOverflow is, it's really shifted over the past couple of years," he said.
"Originally there wasn't really a business plan," said Bailey. In fact, "it wasn't really a business." It was just a finely-oiled machine built for one thing above all else: speed.
The infrastructure developed in 2008 by founders Joel Spolsky and Jeff Atwood for the public site, which to this day runs on nine servers Stack Overflow's owned and operated data center, is designed with an emphasis on raw speed and low, low latency above all else.
"When the organization was first founded, it was all about how do we how do we serve up an answer as fast as possible?" explained Bailey.
"We've got to get the answer up as quickly as possible," was the focus, "because that's how we're going to get the highest paid rank on Google."
That meant the entire engineering effort, he said, "was all about how do we go fast? How do we scale and how do we do it, you know, as cost effectively as possible?
"What's changing now, is, we're moving more to a services model, we're moving more to enterprises."
What that means, he said, is, "We need the ability to provide new capabilities and features and innovations," and to do so, "we need to be able to add engineers, we need to scale in a different kind of way."
"Where, historically, you're focused on ultra-high performance, a small team of engineers, how you operate there is different than if you want to have a team of 150 engineers, and you want to have a bunch of different features, functions, capabilities that are available and that meet the criteria of an enterprise customer."
The Teams product today runs in two forms. There are dedicated instances in the public cloud, at Microsoft's Azure, and there is a multi-tenant version running inside the company's own data center.
Over time, said Bailey, moving the multi-tenant arrangement to public cloud will bring multiple benefits that are already enjoyed with the public Azure instances.
"The multi-tenant solution is the one that we're really looking to to move over to the cloud because that's where our customers will get the most benefit."
The benefits to enterprise of public cloud include things such as horizontal scaling of infrastructure that public cloud makes possible and security and reliability. There's also, being able to to store data in-region, "all those types of things that are, as Amazon would say, the undifferentiated lifting," says Bailey.
"Those are the types of things that we need to take advantage of for the enterprise solution."
There are benefits, too, of developing enterprise product features when more things can be turned on in the public cloud, he said. "When Teresa [Dietrich, chief product officer] has ideas, and our customers have a need, and they say,Hey, wouldn't it be great if we could do X, Y and Z?- you know, anything I can do to shorten the time from that conversation to the time they see it in their application, that is what's exciting to me."
Bailey is also aware that moving more and more to public cloud is simply the way of things. "Most of our revenue is generated by the enterprise customers that are in the cloud," he says, "and there's more opportunity in it."
"Software-as-a-service is all about the long tail," he says, meaning, you can just keep adding more customers to it, and economically so, if you can really nail down the most efficient use of the public cloud.
"There's just the economies of scale that come from being able to even offer that solution to some of the enterprise customers that maybe, you know, wouldn't require that dedicated instance."
While the near term opportunity is to move the Teams multi-tenant approach to the cloud, there is a longer-term goal of moving over the public Stack Overflow site.
"Ideally, we wouldn't think long term that we would be managing our own data centeranda different solution than our enterprise in a [public] cloud," said Bailey.
The essential challenge of the public Stack Overflow site is that "it's been built as a super-performant monolithic application," meaning, a tight assemblage of code with many interdependencies, built in that single data center on those nine servers.
"We've really pushed the boundaries on the servers, the database engines that we use, etc., to be able to reach this kind of scale," said Bailey.
Transitioning all that off of nine private servers into public cloud is tricky; it's not a push-button affair.
"It could it be done today on AWS or another cloud provider likely, but not as it's been architected and built to date," he said.
"You want to take advantage of what you can get in the public cloud, but for scaling up the public side, it's different, it's more challenging there to to make that transition, making sure that we can provide all of those same kind of benefits" for users.
An eventual move of the public-facing site to the public cloud "not necessarily let's move over and hand everything off to Azure."
Among the complexities is the fact that it's not just a site, it's a venue, a place where heavily moderated discussions have to create a community for users, to use a somewhat over-used term.
"It's not just like any answer is going to show up, it's very tightly moderated - which is what really makes it great, but it can also make it somewhat challenging to get the right kinds of questions and answers there."
The payoff for public cloud, aside from security and resilience and region diversity, said Bailey, is potentially to "evolve the architecture to make it easier to, to innovate, to expand," all the things that can make continuous development of code have less wear and tear.
To achieve that means re-fashioning all those tight dependencies, an engineering challenging much grander than the multi-tenant teams challenge, but also fairly intriguing in terms of its complexity.
"You've heard the story, I'm sure, a thousand times," said Bailey.
"How do you evolve the architecture from this really performant monolith to a distributed system that really serves the purpose of helping you scale, and bring people on board, and help them understand how to implement things faster and easier, etc."
"You've got to be able to separate concerns from the monolith, to decompose them into manageable-sized components, or services, that can be understood relatively quickly by a small group of people that aren't tightly coupled."
There is much still to be deduced about the road ahead, given that Bailey just joined.
"Just in terms of how we leverage that database, how we leverage cache, etc. - all those things are really intertwined," said Bailey. "What I'm really talking about is the architecture of the code," said Bailey, "about breaking it into smaller pieces; that's the first step."
Some of the blueprint, or the roadmap for how that happens has to be worked out,
"I'm figuring out StackOverflow, too," he said. "We're kind of at the beginning of that transition, which is fun."
What seems to matter, for the moment, to Bailey, is the team, a team for whom he has high regard, he said, including founders Spolsky and Atwood, and product lead Dietrich.
And, of course, the engineers who've built it all and maintain it. I really like that our organization is very engineering-centric," said Bailey. "As a tech leader, you know, I find working in organizations like this, like AWS, PluralSight, it's really fun, there's a lot of passion around how we build software."
It's not copy and paste, perhaps more the art of finding out by doing.
"My experience in working in engineering teams in learning organizations is that it's kind of self-perpetuating, and that's really fun."