The challenge of providing high-quality licensed imagery and music to businesses, marketing agencies and media organizations is formidable. Customers expect a vast selection and high-quality media, but they also want the ability to identify, purchase and download items fast and efficiently.
For Shutterstock, a 14-year-old company with 1.7 million active customers in 150 countries, image is everything. More than 125 million royalty-free pictures and 6 million video clips reside at the site, which has tallied over 500 million paid downloads since its inception.
“Growing from a startup to a publicly traded $500 million company has forced us to examine our IT infrastructure, our products, the responsiveness of systems and how to scale out more effectively,” states Martin Brodbeck, chief technology officer at Shutterstock. “The challenge we faced was that we had to undergo an IT transformation without experiencing any performance hits. So, we had to do some deep thinking about people, processes and technology.”
One of the biggest challenges Shutterstock faced was dealing with the limitations of Perl, which it had used as a primary programming language for web pages and other assets since the company’s inception.
“It was a great language, particularly as a startup, but the introduction of cloud computing and more advanced IT infrastructures required us to move to a more cloud-aware, fault-tolerant architecture,” Brodbeck explains. “We wanted to build a next-generation platform that could help propel Shutterstock into a billion-dollar company.”
Beginning the IT Transformation Effort
In late 2015, the company began the IT transformation effort in earnest. The first step was to adopt a scrum approach to software development. “We had to think about how we could align an agile development approach with features and functions that were business-focused and business-driven,” Brodbeck recalls.
The next step was to adopt a programming language that could support ultrafast downloads and deliver the level of richness and flexibility the organization required in the new framework.
Shutterstock chose the open-source, JavaScript run-time environment Node.js as its primary programming language, but it also relies on the React.js open-source library to tackle specific front-end development tasks. The IT team began mapping out the necessary architecture in early 2016.
“We had to take a page-by-page approach to our website because we are a 24×7 operation, and we wanted to make sure there was no detrimental impact on our customers,” Brodbeck explains. After extensively testing pages and performance, the company completed the migration to the new development languages in early 2017.
The results have been impressive. Using a 12-factor app approach, Brodbeck says that speed and performance are up, but, equally important, the business can tap microservices, reusable containers and components to speed and improve software development.
“We now have a set of components that everyone uses,” he adds. “We leverage scripts to improve predictability and overall software quality.”
What’s more, using an AWS public cloud, it’s now possible to quickly push out APIs wherever they are needed within the organization and beyond. This includes APIs that are used by outside companies to add features and functionality to their sites.
Shutterstock is also using the new IT architecture and development framework to power machine learning. This includes optimizing and refining search results at the site based on factors such as computer power, bandwidth and software.
“Having a powerful, flexible and scalable cloud architecture in place has allowed us to undergo a major transformation,” Brodbeck reports. “We are now positioned for success in today’s business environment.”