Here at HomeAdvisor we've been thinking a lot lately about what it means to have a truly resilient architecture. As we continue our record growth, we're realizing that our current architecture won't allow us to scale the way we need to over the next few years. Like most organizations, the answer for us is becoming clear: we need to move into the cloud. In this post we'll discuss the motivations behind moving to a multi data center architecture and the pros and cons of each approach we're considering. We're still very early on in the process and expect it to take us well into next year, so this will likely be the first of many posts as we begin to make this important change. Our Current Architecture As we've discussed previously, our current architecture is a hybrid of several large monolithic web applications and a growing suite of microservices. The monoliths are traditional Java web applications based on Apache Tomcat, while our Microservices are based on Spring Boot. In … [Read more...]
From Monolith to Microservices
In our last post, we introduced our villainous software monolith and explained its origin story. To recap, in the early days of moving from a small startup to large software organization, it made sense to clump all our code together. Builds were less complex (always build everything), software dependencies were never an issue (all the code you need is one place), and server space was expensive (deploy everything to a few hosts). Life was good. But times have changed, and just like the pet rock, not all ideas are good forever. We're no longer a small band of developers trying to build a few applications to secure some more VC. We've grown like crazy and hired a ton of people over the past 15 years and our customer base has grown to levels we never imagined in those early days. On our busiest days we connect upwards of 50,000 consumers to service professionals. And with the introduction of products like Instant Connect and Instant Booking, the demand on our systems will continue to … [Read more...]
The Rise and Fall of the Software Monolith
A long time ago (as in, 15 years), in a place called Colorado, there was a company named ServiceMagic. Over the years, this company, now named HomeAdvisor, built software applications to support the business of connecting service professionals with homeowners. They wrote a lot of software. A single web application became two, then three, then a half dozen or so. All of these applications shared the same underlying set of code libraries to run the core business functions. No, that's not quite true. All these applications used the same, single library, that contained all the business logic necessary to run the company. Attempts have been made over the years to try and carve out pieces of this code base into separate modules, with varying degrees of success. As we pick up the story two years ago, there was really only one way to describe the architecture of the software used to run the company known as HomeAdvisor... Monolithic. Software Monolith Architecture Problems We may … [Read more...]