Engineering – The Moonpig Journey

“Every company is a technology company”

Companies across all industries now rely on some some form of technology to achieve their goals.  Here at Moonpig, technology is at the very heart of what we do.  Everything from designing cards through to the machines that print, cut and package cards is driven by custom software generated in-house or by our industry business partners.

The evolution of software engineering at Moonpig

Back in 2000, Moonpig was a small start-up employing just a handful of people. There were no software engineers as all development was to be outsourced. However, the founders soon realized the pace of change was too rapid to rely on external contractors. Two software engineers joined the team, and development of the website and a suite of back office tools began in house.

The website was built using classic ASP and the back office tools were developed in Delphi with SQL Server holding the data.

The original homepage

One of the developers, Dan Bachmann, recalls being told his role was temporary.  “You do realize that in two years time we won’t need developers anymore. The web site will be completed by then and there won’t be any need to change it.

Moonpig founder, Nick Jenkins (now of Dragon’s Den fame,) made analytics and forecasting a cornerstone of the brand’s success – but on this occasion, his prediction was well wide of the mark.

With Moonpig being acquired by the Photobox Group in 2011, focus and investment shifted to the technology.  Whilst speed of delivery had hitherto been the priority, attention now shifted towards quality, maintainability and scalability.  Gradually the engineering team began to break down the existing monolithic website and move towards a lean, service oriented architecture utilising messaging frameworks, web services, distributed caching and other technologies that could be scaled on demand to meet the needs of a rapidly expanding business.  

Today our technology stack includes .Net 4.6,  MVC, Web.API, Azure services, Message buses, blob stores & distributed caching.  As our solutions have evolved we have streamlined our deployment process and our developers now confidently release multiple times a day.

A history of change:

 

Where are we now?

Moonpig’s software continues to evolve at a rapid pace driven by lean development principles and agile practices.  Developers are empowered and encouraged to explore new technology, creating proof of concepts to demo to the wider development team.  These demos drive collaborative discussion to determine whether the technology meets our needs and should be introduced to our stack.

Current web stack as of February 2017 (not all inclusive)

  • .Net 4.6.1
  • MVC 4
  • Web Api 2
  • SQL Server 2014
  • OWIN
  • nCache
  • Solr
  • EpiServer
  • Azure Service Bus
  • Azure Worker Roles
  • Azure Blob Stores
  • TeamCity
  • Octopus Deploy
  • Launch Darkly
  • Windows Services
  • Windows Forms
  • Web Forms

Frameworks / Libraries (not all inclusive)

  • Automapper
  • Entity Framework
  • Flurl
  • HTTP Mock
  • Log4Net
  • Moq
  • Mass Transit
  • Newtonsoft
  • Polly
  • Should
  • Specflow
  • Xunit
  • Unity

The Future!

As consumer behaviour and the use of technology changes, our software systems must be adaptable.

Breaking down the monolith and streamlining our architecture remains a key focus. We aim to have a suite of client-agnostic APIs serving our website and native apps, whilst transforming the monolith itself to a slim, client-side layer.

Alongside this we are working to migrate our platform to the cloud, giving us the ability to scale confidently and provide a reliable platform for our customers.

This is an exciting time for Moonpig as we embark on projects to rejuvenate some of our core technologies, driving innovation and unlocking new streams of revenue.  As a company with technology at its core, we continue to tailor our ways of working and the software we use to meet the needs of an ambitious, high growth business.

Watch this space!