Harvard CS50 Microsoft Azure
A Google search for a now-deleted Github page provides just enough information on a quiet collaboration between Harvard and Microsoft.

Microsoft Azure appears to have scored a high-profile customer: Harvard University’s prestigious CS50 computer science class, not that anybody wants to talk about it.

Harvard computer science professor David Malan. (By Chengfifty – Own work, CC BY-SA 4.0)

A now-deleted web page on Microsoft’s Github account, originally posted in April, outlined a recent collaboration effort between Microsoft’s Azure team and an unnamed “major US research university.” The project deployed to Azure some internal applications that were previously running on Amazon Web Services and the school’s hardware, with help from Github and Codeship.

Certainly, lots of major U.S. research universities are working on modern development practices and cloud computing, but when the name of a famous computer science class is included in the URL — CS50.html — it’s not that hard to figure out who was being talked about.

CS50 is an introductory level computer science class at Harvard that has hosted guest lecturers such as Mark Zuckerberg, a Harvard dropout who nonetheless managed to make a decent living for himself. Its lead professor, David Malan, is a well-known speaker who actually filed for a trademark on “CS50,” causing a stir in Cambridge last year.

After GeekWire emailed him Monday about the Github page describing the collaboration, Malan wrote, “We’re actually still on AWS, though most every summer we do tend to re-evaluate our apps’ architecture for the coming year, with AWS, Azure, Google, et al. always among the candidates. So no plans yet, but happy to reach out toward summer’s end if we’ve made any decisions!”

Microsoft’s Github post was a bit more definitive about the use of Azure — saying, for example:

The staff want the ability to expand the class without expanding IT infrastructure. They want to scale their current container environment to the cloud so they can grow without acquiring and laying down significant additional hardware or upfront capital. They also have applications currently running in AWS but want to reduce lock-in and risk associated with having only one provider. …

This project is a success. It streamlined the university’s deployment process and provided Codeship users with a well-documented solution to integrate Azure into their pipeline. By keeping detailed records of the steps taken to achieve our goals, Codeship was easily able to create new documentation on their site so that less work will need to be done in the future for any users wanting to use the same DevOps toolchain to automate their processes.

At some point after that email exchange Monday afternoon, the Github page was deleted, but the URL remains. And Google’s cache revealed the whole thing, excerpts of which you can read at the bottom of this post.

On Tuesday, Malan said he was out of the office, and referred inquiries to Senior Preceptor Doug Lloyd, who repeatedly called the Github post “overzealous” in its account of the work done between Harvard and Microsoft. However, Lloyd also said that he’s not involved in the day-to-day development process, and was not part of any discussions between Harvard and Microsoft.

Microsoft declined to comment in response to our inquiry.

It’s not entirely clear why Harvard would want to keep the project with Microsoft under wraps; it seems like a better topic of discussion than the widespread cheating scandal just uncovered in CS50. Sometimes companies and organizations have a policy of not talking about the tech vendors they use, but Malan and CS50 have been quite active on the conference circuit, speaking at DockerCon and AWS re:Invent last year.

Here are excerpts from the now-deleted post (the whole thing was over 3,000 words long):

How a major US research university used Azure and Codeship to apply CI/CD to pipeline
Apr 14, 2017

A major US research university partnered with Microsoft to learn and deploy Microsoft Azure infrastructure, Web Apps, and DevOps best practices to better address their need to quickly, easily, and consistently onboard classroom infrastructure apps to Azure Cloud Services. This included migrating existing apps running on local hardware to the cloud.

The project took place over the course of three weeks with the premise of standing up all infrastructure needed in Azure, and completely automating everything so that all applications could simply be plugged into a GitHub repo to deploy. In the professor’s words, “I need you to get GitHub, Codeship, and Azure working together, and wire it all up.”

Customer profile
This US university is world-class, well known for its research and its alumni. For now, they would prefer to remain anonymous, so this document will refer to them as “the university.”

One of their most attended courses is an introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development.

The class provides more than 40 different applications and services for their students. Some are hosted on-premises while others are offered on the Amazon Web Services (AWS) Cloud platform. A diverse selection of languages is used to deliver applications and services, so the class can use their own apps as real time examples of the principles they teach.

Problem statement
The staff want the ability to expand the class without expanding IT infrastructure. They want to scale their current container environment to the cloud so they can grow without acquiring and laying down significant additional hardware or upfront capital. They also have applications currently running in AWS but want to reduce lock-in and risk associated with having only one provider.

The project will be documented so additional TAs could be brought in with minimal training required. The university would like us to help them stand up a single simple app that they will then use as a base for porting their other applications. The deployment should be able to be done by deploying to Azure (any language) including CI/CD. The professor prefers Codeship for CI/CD but it was not required. Using GitHub for a code repository was a requirement.

The professor is already very familiar with DevOps tools and practices and knows how to apply them, which is why he wanted to engage Microsoft in this project (he did not care to share his current processes externally). To walk through the application development pipeline, we simply laid out what a fully optimized environment would look like. This gave the professor a great teaching tool for his TAs to create successful applications with the least amount of waste, lead time, and processing time. In this educational setting where there are no full-time employees working on code, there could be much waste and lead/lag time as TAs work through schedules. In the new, optimized environment, the individual TAs could work anytime they have time, which is often almost daily.

The project we defined and delivered was exactly what they were looking for.

It would be several months before the staff could put the new process in production. It is unfeasible to make major changes in the middle of a class this size, so full deployment and migration will wait until summer. After the solution is fully deployed, limitations on deploying apps and services in the middle of a class term will be minimized and in most cases even eliminated. This will offer tremendous value to the staff and the university. The professor was pleased with the process and practices we put together and delivered. They were also happy to have an easy migration path to Azure from AWS. They cannot start these moves right now because class is in session, but they will be using it extensively in the summer.

Solution, steps, and delivery

The professor opted to have Microsoft do all the work instead of having his TAs directly involved. He wanted us to teach him and his team how it all works through documentation. With this approach, the staff could vet out the documentation as they went through the first deployment. It was a perfect solution for an environment where your development staff turns over regularly as TAs advance and move on. This was also a great opportunity for Microsoft engineers working on this project to test their coding skills and their documentation skills in a single project. We found more great value by sharing documentation to the masses through open source and through a direct collaboration with Codeship.

The class had already converted some of their apps from on-premises to AWS and found some challenges and limitations in that solution. One such example was when using GitHub, Codeship, and AWS they got apps working but they observed quirks (such as “One container per VM”). Our mission was to do it right, without any of the “quirks” or limitations. This would allow the class to spend less money for their applications and provide a simple way to migrate between Azure and AWS.

Conclusion

This project is a success. It streamlined the university’s deployment process and provided Codeship users with a well-documented solution to integrate Azure into their pipeline. By keeping detailed records of the steps taken to achieve our goals, Codeship was easily able to create new documentation on their site so that less work will need to be done in the future for any users wanting to use the same DevOps toolchain to automate their processes.

Official Codeship Documentation

This project provided the university the ability to “move forward” in their DevOps journey by showing them that even though they were already applying DevOps practices (using containers), there was much value in drilling into those practices, looking for waste, and filling the holes that contributed to delays and waste. They now know that taking a quick look at what they are doing is not enough. It is much more important to look at what is possible by evaluating where waste exists and looking for ways to eliminate it. Simply “applying DevOps practices” is not enough. We showed how waste comes in many forms. We found and solved problems for waste in terms of time for new TAs to ramp up, applying consistency to current practices, and saving real money by optimizing deployment methods and tools.

A solution was delivered leveraging CI/CD through Codeship, Docker, Azure Container Service, and Linux VMs. These technologies and processes will save time and money.

Challenges and solutions

The following are the challenges we faced and how we solved them:

TAs time to ramp up was weeks or months; now it’s a few hours.

Running a single VM for each container was wasteful; now many containers can be run on a single VM.

Managing the infrastructure (VM) was challenging; running Azure Container Service completely eliminated this challenge.

Future enhancements to this project can be achieved by opening up the entire development pipeline to scrutiny. The university now knows how to look deeper into current processes to achieve better results. Next they will dive deeper into expanding the monitoring and alerting capabilities of the system running on Azure.

Like what you're reading? Subscribe to GeekWire's free newsletters to catch every headline

Job Listings on GeekWork

Find more jobs on GeekWork. Employers, post a job here.