Presentation: Building Microservices @Squarespace
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.
Interview
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.
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.
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?
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.
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.
Similar Talks


Tracks
Monday, 26 June
-
Microservices: Patterns & Practices
Practical experiences and lessons with Microservices.
-
Java - Propelling the Ecosystem Forward
Lessons from Java 8, prepping for Java 9, and looking ahead at Java 10. Innovators in Java.
-
High Velocity Dev Teams
Working Smarter as a team. Improving value delivery of engineers. Lean and Agile principles.
-
Modern Browser-Based Apps
Reactive, cross platform, progressive - webapp tech today.
-
Innovations in Fintech
Technology, tools and techniques supporting modern financial services.
Tuesday, 27 June
-
Architectures You've Always Wondered About
Case studies from the most relevant names in software.
-
Developer Experience: Level up Your Engineering Effectiveness
Trends, tools and projects that we're using to maximally empower your developers.
-
Chaos & Resilience
Failures, edge cases and how we're embracing them.
-
Stream Processing at Large
Rapidly moving data at scale.
-
Building Security Infrastructure
How our industry is being attacked and what you can do about it.
Wednesday, 28 June
-
Next Gen APIs: Designs, Protocols, and Evolution
Practical deep-dives into public and internal API design, tooling and techniques for evolving them, and binary and graph-based protocols.
-
Immutable Infrastructures: Orchestration, Serverless, and More
What's next in infrastructure. How cloud function like lambda are making their way into production.
-
Machine Learning 2.0
Machine Learning 2.0, Deep Learning & Deep Learning Datasets.
-
Modern CS in the Real World
Applied, practical, & real-world dive into industry adoption of modern CS.
-
Optimizing Yourself
Maximizing your impact as an engineer, as a leader, and as a person.
-
Ask Me Anything (AMA)