Last October Ancestry.com acquired a very exciting property called Find A Grave which focused on collecting content around the graves of family, loved ones and famous people. With the acquisition we wanted to take Find A Grave to the next level and provide the current users new and better experiences around consuming and contributing content. Find A Grave has been around for over 15 years and has done a tremendous job of organically growing the website and user base.
Around the time of the acquisition I was asked to lead the engineering efforts, manage a successful transition and focus on new experiences. But this was a challenge because Find A Grave serves millions of page views a day, was running on a different web technology stack, sitting in a set of physical rack mount servers in a separate data center at the time and contains over 100 million photos and over 116 million memorials.
Our objective was to transition all hardware and code to a modernized infrastructure within a short amount of time to provide the Find A Grave users with a better performing experience (quick page load times) and support future scale and growth over the years.
We also knew we needed to build a mobile app; it just makes sense. One of the primary goals of users for the site is to go out into cemeteries and take photos of grave sites. Before the Find A Grave app it was an arduous and quite disconnected workflow to take photos of a grave site, come back home, download all of the photos to a computer and then upload each photo to the site one by one, etc. As you can see, if you have 100 photos to process this can be quite a pain!
So our goal is to make mobile front and center for Find A Grave and we started with iOS.
Building the Team
The first step was to build the team and get moving, and I quickly hired two amazingly talented iOS developers to focus on the iOS app, John Mead and Shengzhe Chen. John came from the freelance world working on many different iOS applications for different companies and startups. And Shengzhe was doing mobile payment development before joining Ancestry.com.
We then hired a backend engineer to come in and bring some really awesome skills to the team, Prasanna Ramanujam. He is currently positioning Find A Grave to be a very API driven application which allows us to work with many external clients from the ground up. Prasanna comes from NodePrime as an engineer on their Node.js related datacenter infrastructure, and previously from VMware doing Node.js evangelism.
Next we hired another full stack engineer hero, Bob Dowling, to first focus on building a new, modern and flexible fronted to the application. We want to provide a more snappy and performant fronted to the website that ever before which includes optimizations throughout the whole stack. Bob comes from the freelance world as well focusing on both mobile and web applications.
And just recently we have an awesome new intern helping out, Shruti Joshi, who will be working with us to get the new website built.
And of course our product owner Mike Lawless, our designer Jonathan Rumella and the founder of Find A Grave, Jim Tipton, who have all been a tremendous help with all aspects of the team.
Within a few months we were able to migrate all infrastructure, photos, database and content to the Ancestry data center. It was a very complex task as we needed to keep the existing site running live during this whole process. We also wanted to modernize the infrastructure and virtualize everything in our private virtual cloud. Part of this was using Go for continuous integration and Chef for deployment and provisioning to our virtual instances. This will allow us to scale to future growth beyond the acquisition.
As a team we worked closely with our product manager, designer, and the Find A Grave founder to work through what we thought would be an amazing 1.0 iOS application. We were able to work very closely using some extremely lean principals to build quickly and efficiently. From conception to release the two person team was able to build a 1.0 release that contained over 10 major features to get a great mobile experience into our users hands in just about four months. We released the first version to the public at the beginning of March 2014 and we’re excited that millions of people will be able to use this over Memorial Day weekend to remember their loved ones. You can check out the app here.
Find A Grave grew as a Perl based web application over the past 15 years, so we are looking to build things from the ground up using Node.js. It works perfectly for our JSON API layer, provided great real-time support for our iOS app and works great for some of the new NoSQL infrastructure we’re putting in.
We also know that the Find A Grave website needs a new, fresh facelift. Utilizing our UX team we are beginning to envision what that new look and feel looks like and trust us, it’s going to be amazing. This is where we are going to harness the power of a very client-driven web application that will utilize the new backend API services heavily using Backbone.js and Handlebar templating engine.
To recap, we’ve built an amazing Find A Grave engineering team. We migrated all infrastructure in-house and virtualized everything through proper continuous integration and delivery platforms. We’ve released an iOS app with some more great features coming out soon. We’re rebuilding the backend from the ground up. Next on our list is giving the website a new facelift to provide a better user experience. Whew, that’s a lot in just 6 months to get started on.
We have a lot more to come so stay tuned.
About Robert Schultz
Robert is a Director of Engineering & Architect at Ancestry.com for the frontend applications group. His focus is adoption of emerging technologies, architecture, infrastructure improvements, organizing technical talks and more.