The good thing: right from the start in July 2000 Moonpig is a rapidly growing business, with up to 300 orders a minute during peak periods like Mother’s Day. The pain point: 18 years of adding features left a lot of technical debt with a monolithic database. We asked Ronan Tighe, CPO of Moonpig, how it was going with the migration to a cloud infrastructure.
What does your current IT strategy look like?
We’re currently rebuilding our frontend in React and we’re moving to a headless content management system, where we’re really trying to essentially decouple the frontend business logic with the backend. And we’ve got a number of kind of key architectural principles that we’re working towards. So we need to operate on a massive scale, especially around our peaks, that’s Mother’s Day, we can easily take in over 300 orders a minute at peak time. Here, we’re fully integrated. From a customer placing an order on the site to the card being printed in one of our factories, it takes about 10 seconds. And that’s all through our own stack. So we really need to build a highly scalable, reliable system that meets those business needs. And we are really focused on making data first-class systems, using GraphQL and exposing that.
What are the challenges which you’re trying to master by building a cloud infrastructure?
Seasonality is definitely a challenge, and we’ve got four peaks in the year. Christmas has a bit of a lower ramp-up period. We find that the way people shop at Christmas, it happens over a couple of weeks. So if you’re going to send Christmas cards to all your family and friends, you might send 20-30 cards, and you tend to do that, maybe towards the end of November. And as you get closer to Christmas, people usually buy individual cards and gifts. So that’s a two-three week peak. And Valentine’s Day is a massive peak for us, especially for flowers. We will sell 100,000 bouquets of roses in three or four days during Valentine’s Day. So you can imagine the operation and effort that that takes. We have to build and pop up warehouses in order to satisfy the demand of customers and people are shopping later and later due to expectations of eCommerce retailers like Amazon they’re accessing. So it’s those peaks that really drives the biggest number of orders, the rest of the year tends to be a lot flatter. But birthdays are the predominant kind of use case and outside of the peaks. So this is our main challenge. And the forward plan is where we’re leveraging more cloud infrastructure. We’re moving to kind of platform as a service and serverless infrastructure where all the instructions are in code and we can spin up new services when needed. We’re not paying for massive data centers when we don’t need them during peaks. And so we now have all of our kind of legacy architecture on AWS. But we’re going to move into this new architecture to in order to make it faster, more scalable, and more cost-efficient.
Why are you moving away from a software monolith?
I think when you understand the pain of that monolith, you really want to move towards a world where you’ve got microservices. So it really enables teams to independently deliver without creating lots of internal dependencies. When it comes to releasing something, you have to coordinate massively, and that slows down. We’re really trying to build a platform where we can have smaller cross-functional full-stack teams that can just ship things quickly.
How did you plan the process of going to the cloud?
About a year ago, we looked at our stock, and we took a step back and looked at where we were spending our engineering time. And we realized that we’re focusing and building on too many things that are now commoditized eCommerce capabilities, where we really should have been focussing on parts of the customer experience that are unique to our market. And we’ll be able to differentiate us from our current competitors and any potential new entrants. And so around this time last year, we kicked off a three months vendor selection process, and we chose commercetools. We just built stuff. We didn’t spend months working on very long, detailed functional specs and listening to lots of sales presentations, we just got a team and we gave them a few weeks to create a proof of concepts of the number of vendors that we shortlisted. So when it came to making the decision, we had a really clear understanding of what it would take. What we liked about commercetools was it will allow us to sequentially move parts of our existing stack over time, so we can continue to deliver to customers without taking a significant portion of our team out and building something behind the closed wall for months on end. And so we’re now at a point where we’re releasing new parts of our stack to customers and in different markets. And I’m rolling it out sequentially over the next year.
Which cloud-based services are you using or will you be using in the future?
We’re moving to a headless CMS, we’re using contentful for that. And we’re using GraphQL as an intermediate layer. We’re fully on AWS, and we’re going to use Lambda functions and CloudFront within that. And together with commercetools as a commerce platform that will be the core. We’re currently looking at different server-side A/B testing frameworks as well.