Author Archives: admin

New Feature: Backup Scheduling

Twitter Facebook

The ability to schedule the time that a particular backup runs is something that we’ve been happy to help customers with through our support team, but until today we had not exposed this functionality in our dashboard. Why the long beta period?

The short answer is: scale. This is a class of problems that is easy to solve when there are not many operations competing for resources, but becomes much more difficult as the number of operations increase. Imagine a simple case where a single backup has to run one time per day and there is a dedicated server for this task. In this contrived scenario, the backup could be scheduled to run at any time, and since the server it’s running on is idle all day, you can almost guarantee that the backup operation will start at the scheduled time and complete successfully. In a more real-world scenario, imagine a server that has a backup scheduled to run at a particular time, but this server is also hosting an active website and a database. The backup could be scheduled to run at any time, but the certainty that the operation will start as scheduled and complete successfully diminishes.


In our case, we’re running anywhere between 10 and 150 servers to service the more than 200,000 backups we perform on a daily basis. So, how do you solve the challenge of scheduling while maintaining CodeGuard-levels of reliability? We make sure that we have the spare capacity available to run the backups at the times they are scheduled using an infrastructure management service that we’ve developed internally. This service, which we affectionately call Steward, watches after all of our servers, the backup operations running on them and the queue of pending backup and restore operations. When the need arises to add capacity to handle the upcoming load, Steward will start more servers to accommodate. Similarly, as backups finish and the servers become idle, Steward shuts them down. This arrangement allows us to have just-in-time resources available for all of our scheduled, on-demand and unscheduled backup and restore operations. Steward has also helped with server configuration management, versioning, deployment, fault-tolerance and cost reduction, but those are topics for another post!

The excellent

The excellent

In addition to the back-end, infrastructure changes, we have also updated our dashboard to reflect the new scheduling ability. Not only do we have an option for it on the website backup settings page, but we’ve updated all of the times and reporting functionality to accurately reflect the backup times in the customer’s local time zone. If you’ve ever tried to schedule a meeting with a colleague or customer in a different time zone, you know that this is not as easy as it sounds! We wanted our interface to be very clear about the scheduling time to ensure that there is no confusion for customers, regardless of what part of the planet they happen to be on relative to our servers.


A quick note about database backups – currently, database backups for a particular website will run at the same time as the website backup. For backup consistency, especially for database-backed applications like WordPress, Joomla! and Drupal it’s important that the backups of the database and file content are taken in close proximity to each other. We have worked very hard to ensure that our website file backup and database backup processes impose minimal load on your server and, therefore, running applications. If you are concerned about load or are using legacy MySQL storage engines, you can always schedule your website and database backups to occur at an off-peak time.

Ready to give backup scheduling a try? Check out the article in our support center for detailed instructions.

– Jonathan

Selective Restore: Our final restore improvements

Twitter Facebook
Over the last few months we’ve released a number of dramatic improvements to all of our restore features. First, we made a number of enhancements to the navigation and user interface of our Automatic One-Click Restore. When you request an Automatic Restore we now present you with a list of your databases for that website in case you want to restore a database at the same time. For WordPress websites, we now detect which of your databases is your WordPress database and make sure you know to restore it alongside your WordPress website.


Screen Shot 2014-12-03 at 11.39.47 AM


The next set of improvements we worked on re-vamped our user interface for requesting zipped backups. We also improved the speed of our zip process, and increased the time period that you have to access backups once you have requested one. When we improved our Download Zip feature we also introduced the concept of ‘Selective Download.’  Now when you choose to download a backup you can download the entire backup or choose to download select files and folders from the backup.


Screen Shot 2014-12-03 at 11.41.17 AM


To conclude our restore enhancements, we have completely re-imagined our “Individual File Restore” feature. Modeled after the same interface for requesting a zip, we now call this feature Selective Restore. You can navigate through a tree-like structure of your backups and check which files and folders you specifically want to restore. Before the restore begins, you are also presented with the option of a confirmation page to see what you selected before beginning this process. We hope that the time it takes for you to search for that one file you need to restore is now cut in half.


Screen Shot 2014-12-03 at 11.42.31 AM


Screen Shot 2014-12-03 at 11.43.27 AM


Screen Shot 2014-12-03 at 11.51.19 AM


With these final improvements, we have now overhauled, redesigned, and re-engineered all three of our restore features. Automatic Restore, Download Zip, and Individual File Restore (Selective Restore). As a customer, what does this mean for you?


When the time comes and you need to restore your website you should notice that for any option you choose, it is much easier now to figure out which option is right for you. We spent a lot of time thinking about the navigation of this part of our application. Figuring out what restore type you need, and what backup version you need is now much simpler with our navigation improvements. To automatically restore your databases alongside your website it is now as easy as checking a box. When you choose to perform an Automatic Restore we now show you a list of all of your databases. You can choose to restore none of them, all of them, or some of them.


Screen Shot 2014-12-03 at 11.49.08 AM


What else will you be able to notice? Speed. We put a lot of work into the back-end code that powers all three of these features to make them more robust and much faster. Each website in our system can have hundreds of daily backups and each backup can contain hundreds of thousands or even millions of files! Getting the metadata for a single folder from a single backup so that we can populate this friendly, new interface for selective download and selective restore can be a time intensive and computationally expensive process. This data is generally used in the background by our powerful backup servers, not our smaller web servers. So, in order to avoid overwhelming our web servers or making our customers wait for an extended period of time, we had to get creative. Each backup version has a unique archive of metadata that is stored with gzip and AES-256 encryption in Amazon’s S3 service. To retrieve it as efficiently as possible we created a pipeline to simultaneously transfer, decrypt, decompress and serve the requested information as JSON to the browser. Each interaction by the customer initiates an AJAX request to the pipeline service so that the data is loaded lazily as needed and then the data is cached in the browser to avoid duplicate requests. We wanted this functionality to feel fast for customers and this process allows us to quickly identify and transfer the the proverbial needle in a haystack in a way that intelligently uses our existing resources rather than requiring us to add capacity.  If something happens to your website rest assured that your content will be restored quicker than ever, giving you that peace of mind that everything is OK much sooner as well.


After performing a restore with CodeGuard we hope you’ll be able to notice the changes that we made. Right now after a restore completes we send you an email letting you know it finished. We now also send an email asking if you want to give us feedback about our restore process. If you feel like sharing your experience with us, please feel free to answer our brief survey when your restore completes! While we are certain we made many improvements to these features, we are still always interested in improving them further. If you think of anything you would have liked to be different, let us know!


In the meantime, we hope you enjoy this final restore improvement. Whether you need to restore your entire website, your database, multiple databases, request an entire zip of your website, request a zip of only certain files and folders, or automatically restore select files and folders, CodeGuard has you covered!




A Day in the Life of a CodeGuardian

Twitter Facebook

At CodeGuard, we’ve been able to push a high quality product to market quickly and scale it reliably. Today, we would like to share what happens on a daily basis to make this type of rapid production possible.

Daily Routine

Everyone in the office has different schedules and different priorities. While each team member’s daily routine is different and changes from day to day, here’s what a typical day at CodeGuard for one of our employees might look like.

8:00 Wake up, eat, and get ready for work
9:00 Arrive at work, respond to emails, and plan for the day
9:30 Begin testing new selective restore features
10:00 Gather with the rest of the team for our daily scrum meeting
10:15 Modify the selective restore pipeline to address an unhandled case
10:45 Write an article for our weekly blog post
12:00 Review and implement suggestions made by another team member
12:30 Eat lunch
1:00 More testing for the new selective restore features
1:30 Monthly meeting with supervisor
2:00 Final round of testing for the new selective restore features
3:00 Deploy new selective restore features
3:15 Final testing for the new internal performance metrics dashboard
4:00 Deploy new internal dashboard
4:15 Celebrate two successful deploys by ringing our ceremonial CodeGuard gong
4:30 Leave early and enjoy the holiday weekend


Development Cycle

Now that you’ve seen what a typical day at CodeGuard looks like, let’s talk about our development process.

Our day begins with our daily morning scrum meeting. For those unfamiliar with Agile development practices a scrum meeting is a way for members of a team to share updates regarding ongoing projects. In our scrum meetings we form a circle and have each member share a high level overview of the tasks they completed yesterday, the tasks they plan to complete today and the tasks that need help with in order to move forward. These meetings generally last 10-15 minutes. The rest of the day involves completing the tasks covered during our morning scrum. Typical tasks include planning for new projects, developing current projects, or testing completed projects.


Planning begins at our conference table with each project participant expressing their own thoughts and concerns about project execution. Because our team is small, there is no designated project leader. Instead, one team member is asked to research the project before hand and help guide the discussion. Team members are encouraged to contribute, and sitting idly is not an option. One of the great things about working for a small company is that we have the freedom to try new things. For example, although our main application is written in Ruby, a few of our most recent projects have been written in Go. This level of flexibility would be hard to find at a larger company.


Once we have a plan, we break the project apart into manageable tasks and begin development. We are lucky enough to have access to top of the line tools for writing software. Each employee has their own workstation consisting of an adjustable height desk, 27 inch retina display, and the latest Macbook Pro. Although each team member is free to choose their own development environment, most of gravitate towards command line tools like vim and tmux. We use GitHub issues to keep track of what is being worked on and by whom.


After a task is completed, it must be submitted for review. Depending on the importance of the task, one or several other team members will test and review changes in our staging environment before submitting the final changes to our production servers. In addition to automated testing, the review process often involves analyzing code for uncaught syntactic and logical errors.


Although we spend most of our time working hard to improve our service, being a CodeGuardian isn’t all work and no play. To keep things lighthearted and fun, we have Happy Hour every Friday afternoon, and we routinely plan outings to nearby events. Our most recent adventure involved participating as extras in a big movie production being filmed in downtown Atlanta.


– Taylor

CodeGuard Honored at Georgia CIO of the Year Awards

Twitter Facebook

On October 31st, CodeGuard was honored at the Georgia CIO of the Year Awards ceremony, in the “Emerging” category. Attended by over a thousand technology leaders in the state, the event is one of the largest gatherings of its kind. Excellence was recognized across five categories of company type and size: Non-profit, Emerging (under 250 employees), Corporate (up to 1,000 employees), Enterprise (up to 10,000 employees), and Global (over 10,000 employees).


George Conrades, the Chairman and former CEO of Akamai, gave the keynote. George has been a leader in the technology industry for over 50 years, and his career began 30 years ago at IBM, rising to a senior leadership role under the legendary John Akers. He then joined internet pioneer Bolt, Beranek & Newman as CEO and led their transformation from ARPANET into today’s internet. Over the last 15 years at Akamai, George has helped lead the transformation from premises to cloud computing.


The event was held at the Cobb Galleria and featured a balanced mix of programming, with videos of the finalists, award presentations, and longer videos of the winners. CodeGuard was honored to be one of four finalists in the Emerging category, and though we did not win, were thrilled to have made it to the last stage. Finalists for the CIO Awards are selected by a distinguished panel of CIO judges, including prior Award winners, based on their contributions in innovation, leadership, business value, and community involvement.

The event was organized by the Georgia CIO Leadership Association (GCLA), Georgia’s preeminent professional association for senior technology leaders. Founded in 2003, its membership is comprised exclusively of chief information officers or individuals in equivalent positions from public and private companies, government, education and non-profit organizations throughout the state. The GCLA is a 501(c)(6) professional association led by a CIO Advisory Board from organizations including: Georgia-Pacific, GE Energy, American Cancer Society, NCR Corporation, and The Coca-Cola Company.




CodeGuard restore just got more powerful

Twitter Facebook
Many of our customers find themselves captivated with our Automatic Restore feature, and we don’t blame them! The ability to automatically restore your website back to any date in time with the click of a button is a powerful tool indeed. For some of our customers though, this tool is a little too powerful for their needs. That’s why we recognized the value in having multiple restore options available: Automatic Restore, Individual File Restore, Download Zip.
If you only wanted to restore one folder, out of the 40 folders in your website, our best recommendation to date was for you to download a zip file of the entire backup and restore that one directory manually via SFTP/FTP. Sounds quick and easy, right? Well our customers with larger websites helped us understand very quickly that downloading a 50 GB website was not an option for them!
We knew the time had come to upgrade our Download Zip restore. Today we are proud to announce an enhancement that dramatically improves this feature: Selective Download.

Selective Download

CodeGuard Download Zip Backup Restore
Now when you request a zip backup from your CodeGuard dashboard you are given the option to download the entire backup, or select specific files and folders to download into a zip file. For our customers who added their own websites to CodeGuard this interface will feel very familiar, and look  similar to our website addition process. You can expand folders and uncheck or check as many boxes as your heart desires. We will wrap it all up into a zip file and email you the download link.
CodeGuard Download Zip Backup
In addition to emailing you the link, we will make these zip files available to you in the dashboard for days after they were requested. So instead of hunting through your email inbox to find where that zip file went, you can simply log in to CodeGuard and re-download your zips right from the Restore tab.

Behind the scenes

The final set of improvements we made to this feature are ones that can’t be seen in the interface. Our engineering team put their heads together to create a new, much more efficient way of requesting zips from our system. Zip downloads complete much faster now, and you can also request as many zips as you want for any given website or backup.
Our old process for requesting zips was slightly inefficient, in that you could only request one zip at a time. You could not request another zip backup until the first zip was done being created. With new and improved logic driving this feature, you can now request as many zips as you want. So not only are our zips faster and more accessible with an improved UI, they are also much more accessible to you, and available for longer periods of time. That is quite the list of improvements!

What’s next?

In the next week or two we hope to extend this new logic to also include our Individual File Restore feature. This will include the improved UI for searching through your files and folders, and a faster back-end driving the restore once it’s started. The last few months our team has been extremely focused on improving our restore experience from every angle. Once we are done with our improvements to the Individual File Restore feature we guarantee that no matter what your restore needs are, CodeGuard will have a method that is perfect for you to get the job done.
So no matter what restore type you choose to initiate, we promise it will be intuitive, easy, and fast. Keep a look out on our blog for future updates!