Case Study / ScanCafe
Case Study Highlights
ScanCafe needed to add a new SMS or text alert capability to their existing system so that customers can be notified of order shipment and delivery instantly.
Before Ravello it took two days of manual effort to setup a new test environment from scratch – it involved provisioning the right infrastructure, configuring the application and validating the setup.
Now, with Ravello their developers and test engineers have self-service access to spin up multiple instances of this entire application environment with one click in any public cloud.
ScanCafe is the world’s number one photo digitization and photo concierge service, with over 85 million images scanned. The company has global operations and logistics with employees across U.S., Europe, India and Bhutan. With sophisticated technology for scanning and processing images, designing photo products and shipping millions of photos worldwide, ScanCafe takes pride in never having lost an order.
ScanCafe works hard to maintain its reputation as best of breed. The company’s website is the main portal for customers to place orders and track shipments, and for partners to integrate with ScanCafe’s services. In order to delight customers with an online ordering and delivery experience, ScanCafe must keep pace with the high standards set by other online industries such as Amazon.com which provides immediate notifications when orders are shipped and delivered.
“Our customers are pretty technology savvy and we need to offer them the right features. Otherwise they will simply pick a competitor even if that supplier is more expensive or offers lower quality than ScanCafe” said Laurent Martin, president and CTO, ScanCafe. “This requires fast product development cycles and the ability to add new features quickly. Not just customers, but our partners are demanding as well. More than 130 partners integrate into the ScanCafe system so responding to all their integration requests in a timely manner is no small task.”
“Additionally, with slow development cycles I’ll need to decide what my development focus and strategy is for the next six months and lock in the direction of my business,” Martin continued. “I’d much rather change the course of the boat as required based on competitive pressures and partner or customer requirements.”
Apart from delivering features rapidly, the team must also ensure that the system is scalable and always on. Prioritizing agility over product quality is not an option since any downtime in the application can result in losing customers, and consequently have a direct impact on revenue.
Application and Dev/Test Environment
ScanCafe’s IT operations are spread across U.S., India, Europe and Bhutan. The company has its own physical data-centers in U.S. and India and also uses the public cloud and hosting providers in multiple regions.
The primary online application is built on a LAMP stack with a MySQL database on the backend. The main database that stores customer’s photos is massive with close to 100M images representing many terabytes of data. The application integrates with the e-commerce engine and also integrates with multiple other modules to process the images and handle delivery logistics on the backend.
ScanCafe needed to add a new SMS or text alert capability to their existing system so that customers can be notified of order shipment and delivery instantly. However this new feature touched multiple parts of their application and had a lot of inter-dependencies across modules. There were eight developers and four test engineers at ScanCafe, with two shared instances for development and test. Developers did initial testing on a local environment on their laptop before pushing the code into testing. ScanCafe also recognized the value of having a pre-production environment to ensure that changes being pushed into production were fully tested from an integration perspective. The team created a hybrid pre-prod environment that interfaced with the live database to ensure higher quality in production.
Before Ravello it took two days of manual effort to setup a new test environment from scratch – it involved provisioning the right infrastructure, configuring the application and validating the setup. Due to these constraints developers did not have self-service access to these environments. Code was pushed to the testing environment once every three to five days.
Due to resource constraints, only the individual modules which were modified would be tested exhaustively. A final high level smoke testing of the critical workflows would be performed in the end in an integration testing environment. As a result more issues would be uncovered towards the end of the development cycle, particularly in projects with interdependent modules.
“We evaluated multiple solutions to accelerate our development and test cycles. Due to our spiky project demands a massive data-center build out was not an option because we realized it would be under-utilized for the most part. We wanted to use the public cloud for our development & test instances but the cloud is such a different environment we didn't have the time to undertake a complex cloud migration effort.”
Instead ScanCafe chose to use Ravello. The team uploaded their existing virtual machines into the Ravello SaaS and saved a blueprint of their own application environment, including same virtual machines networking and storage. Now their developers and test engineers have self-service access to spin up multiple instances of this entire application environment with one click in any public cloud. Now there are no resource constraints preventing more frequent integration testing on instances that are representative of production.
Since each developer can have access to their own environments they are able to test it further downstream and are doing much more efficient testing – overall this has resulted in less frustrated engineers. Test engineers are no longer finding trivial integration bugs and developers have more control over their own modules by having their own environments to test on. They no longer need to rely on outdated and scaled down local environments. They always create an instance of the latest & greatest environment maintenance is no longer an overhead.
“We have gained 25-30% of testing time since the developers are able to test sooner and more, and features are being put out faster”. Laurent said. “Overall we were able to achieve 20% acceleration in our development cycles particularly for complex features like our SMS system which touched multiple modules and required a lot of integration testing. We are now able to spin up new environments in 5 minutes as compared to the 2 days of manual effort it took us before.”
“Ravello doesn't take a bait and switch type of approach where they sell you resources on-demand but make it so difficult to turn it on and off that you end up leaving it on all the time. Instead Ravello makes it so easy to spin up and tear down environments that my developers are naturally adopting the best practice of creating environments only when needed. And this means we really pay only for usage thus helping us do more testing faster, while keeping costs low.”
Going forward ScanCafe is considering moving its production environment into Ravello so that the staging environment can be converted into production and move closer to a continuous deployment model.
“Earlier we sometimes felt we were rolling out code a bit like we were rolling dice because we were privileging agility. We’d rather spend our resources in developing features for our customers than in building the type of test infrastructure and automation that would be required for flawless deployments,” said Martin. “With Ravello we no longer need to compromise; we are able to get our applications to market faster and with better quality.”