Presentation: Building Microservices @Squarespace

Track: Microservices: Patterns & Practices

Location: Broadway Ballroom North, 6th fl.

Day of week:

Slides: Download Slides

Level: Intermediate

Persona: Architect, Developer

What You’ll Learn

  • Hear about how Angulo, fresh from a stint at Amazon, came to Squarespace and began to push the company to implement a new service framework.
  • Learn how Squarespace moved from a monolith to a microservices architecture and set a high standard for what it means to put a production microservice out its customers.
  • Understand the importance of open source technologies in the Squarespace journey from a monolith to microservices.

Abstract

In this presentation, Franklin Angulo, will go through our company's journey from a monolith architecture to a microservices architecture. We will share our learnings throughout this process, including what our engineers found most useful in a microservice framework, the different open source technologies utilized in the service client (Ribbon, Hystrix) and service core (Spring Boot), integration points with service discovery (Consul), time-series databases (Graphite), log aggregation frameworks (ELK), alerting frameworks (Sensu), and distributed tracing infrastructure (Zipkin). In the end, we will also share some of our war stories.

Squarespace empowers millions of customers to build their online presence and share their stories. We have a high standard for the quality of features we deliver to our customers and the general availability of our product.

Squarespace's custom-built service framework, Tyson, has been in development for a few years. Tyson provides a lot of functionality out-of-the-box to service developers which results in an increase in feature development velocity and ensures the stability of our platform.

Question: 

QCon: What's the focus of the work that you do at Squarespace today?

Answer: 

Franklin: You can divide our wider organization between Product Engineering, which includes the engineers who build the features for our customers, and Server Engineering which builds the engine on top of which we power those features. I oversee the Server Engineering organization.

Within Server Engineering there are multiple teams, including Site Reliability Engineering teams and software development teams, but in general what we're trying to solve is scalability and reliability. Scalability, so that we can handle more and more customers and more and more features; and reliability, so that as we scale, the systems work properly and there's no impact on the uptime of our general platform.

Question: 

QCon: What's the goal for your talk?

Answer: 

Franklin: I joined Squarespace four years ago coming from Amazon. And at Amazon you receive, like Google and Facebook probably, all of the tools that you need to do your job. There is a time-series database and visualization tool readily available to use. There is a standard way to build and deploy. There is a standard way to get physical hardware, if you need it. If you need to build a new service, there’s a UI and you select what you want to create. I came to Squarespace and there was none of that. I remember I would deploy into production and the first two times I felt uncomfortable because I couldn't look at latencies, request rates or general health levels for the platform. For the first time, I had to think about what it really entailed to implement all of those frameworks that are provided a big companies.

I went to the VP of Engineering and asked if it was okay for me to spend a few weeks building a time series solution where I could pump metrics from our applications and then build dashboards for all engineers to use. That not only became our large-scale time series database, it kicked off an effort to starting building other frameworks, including log aggregation frameworks and microservice frameworks, and have helped us scale operations from 40 engineers to more than 100 today.

This led to a team focused on building a microservice framework that is used today to power about 30 microservices in our ecosystem. So, it's the journey of our company and our Server Engineering organization building that framework and integrating with teams like Site Reliability Engineering to provide all these neat features that you get baked into the framework. And as a developer today you very much interact with the framework like I did at Amazon, where you just focus on your business logic, and deployment and logging and monitoring are provided for you.

Question: 

QCon: Who are you talking to in this talk? Are you talking to an architect, developer, CTO, CIO? Who are you talking to as a core audience?

Answer: 

Franklin: If I were to put myself in the shoes of a junior or senior developer, this this talk would be enticing to them because they'd learn that it is possible for them to exercise change in their organization if they needed to do this. And that there are projects available in the open source community that help you do this so you don't have to write everything from scratch.

From a VP of Engineering or CIO/CTO perspective, it would be informative to them how a company like Squarespace, which is not really a startup anymore as we have 600 employees, can get away from the thinking that everything can be built in a monolith. And especially as a VP of Engineering, you're looking after your culture within engineering and how people work day-to-day with your application. How can you make that a much more pleasant experience for not only the people developing on the platform but for the customers who want to use it? How do you make it more reliable?

Question: 

QCon: What do you want someone who comes to your talk to leave with?

Answer: 

Franklin: I want them to understand the amazing community that we have for open source, thanks to companies like Netflix that provide much of the glue that is required to build a very robust framework. Secondly, how do you actually get this stuff? How do you build it? What type of people do you need in a team that will focus just on building your framework to eventually provide it to developers. And then maybe if I have time I will add some information about what happens after you have a mature framework and people start requesting new features. For example, if you want your models to support some different type of input. Or you want to make it even more self-service. Or you want to think about Kubernetes and Docker instead of just VMware and splitting physical services. So, I may talk about that as our next stage where we have a framework and you have to support that framework and continue to evolve it.

Question: 

QCon: If a senior developer comes up to you who is active and up to date and asks you what should I be focused on to be ready for what's coming next, what would you tell them?

Answer: 

Franklin: I think I would ask them where their focus is. I feel that some developers like the infrastructure a little more. So, there's a lot of work happening in containerization and clustering of infrastructure. I think that's an exciting area where you can deep dive into Docker and Kubernetes, which seem to be becoming the standards at this point. If you don't really like infrastructure and you prefer to do pure coding, there's a lot of awesome stuff happening with the reactive technologies like RxNetty and RxJava. We use those technologies and it's definitely a shift in mentality in how you develop software.

I interview about two people a day and I ask them about Java 8. They will say they use it in production. But when I ask them about Lambdas and a bunch of other features in the new version of the language, they don't know about them; they've never used them. So, keeping up to date, if you're a Java developer, with the new features that are provided by the language so that you can become a much more productive and informed developer when you're building out software is important.

Speaker: Franklin Angulo

Director of Engineering @ Squarespace

Franklin Angulo is the Director of Server Engineering at Squarespace. He leads the teams responsible for building and maintaining the company’s large-scale backend engine and infrastructure that serves millions of users worldwide.

Find Franklin Angulo at

Similar Talks