“I want to help people automate boring tasks”
Former Amazon applied science intern Margarida Ferreira conducts research to make complex cloud resources easier to manage.
Amazon Web Services (AWS) helps automate and facilitate much of what people do online, from managing customer data to scientific research. So it’s only fitting that managers of AWS cloud resources (eg DevOps engineers) should get an assist from machine learning on some of their most common tasks. In her role as an applied science intern on the AWS Cloud Operations team, Margarida Ferreira explored program generation methods to streamline the work done by DevOps engineers.
DevOps engineers provision, operate, and manage applications on AWS. They deploy upgrades, monitor security, and make sure cloud resources are always operating optimally. As with any job, their day might involve some repetitive work, whether the AWS application involves hundreds of or even more than 10,000 machines.
The AWS Cloud Operations team owns tools that allow DevOps engineers to safely operate large and complex applications. With the help of a team of applied science interns like Ferreira, AWS Cloud Operations are using various automation techniques to find time-saving opportunities in cloud management.
Constraint programming for automating repetitive tasks
Ferreira employed a novel approach to simplify AWS systems management, combining program synthesis and constraint programming to automate common tasks. It’s an approach she and others believe might be the right one given its ability to guarantee a desired outcome or goal.
“Program synthesis is the task of automatically generating a computer program in a programming language from a description of the desired behavior, without requiring manual coding by a programmer,” Ferreira explains. “It aims to bring the power of computation to a wider audience, by bridging the gap between a problem's description in human-readable terms and the actual computer code that implements the solution. It’s useful for skilled programmers too, by allowing them to automate the implementation of repetitive, uninteresting snippets of code.
“I love the concept of synthesis — the idea that you can help people automate boring tasks that people don't want to do manually.”
As a PhD candidate at Carnegie Mellon University (CMU), Ferreira specializes in automated reasoning and program synthesis. Part of her research involves constraint programming, which can automatically generate program scripts given a specific set of restrictions.
These scripts — often based on the analysis of log files from common, manual tasks — can then be used to automate future tasks, such as creating and setting up an Elastic Compute Cloud (EC2) instance. The process essentially teaches the computer to program itself using an example or demonstration.
From physics to computers
Born and raised in Portugal, Ferreira began her higher education as a physics major at the Instituto Superior Técnico in Lisbon. However, after enrolling in a computer programming class, she quickly switched majors to computer science and engineering.
She loved the challenge of thinking about problems in a structured way, and how an algorithm or sequence of steps could help her solve them. Ferreira earned both a bachelor’s and master’s in computer science and engineering from the Instituto Superior Técnico.
After graduation, Ferreira took the advice of a mentor to move to the U.S., enrolling in a dual-PhD program in computer science and engineering at CMU and the Instituto Superior Técnico. She splits her time and coursework between the U.S. and Lisbon and is due to complete her dual PhDs in 2026.
At CMU, Ferreira developed an early interest in program synthesis and constraint programming. Her thesis goal is to use formal methods, theoretical guarantees, and proofs to improve and optimize networks in ways that make them more efficient.
Early in 2023, Ferreira realized she wanted to balance her academic pursuits with industry experience. After consulting with her advisor, Ruben Martins, an assistant professor at CMU, Ferreira was connected to Daniel Kroening, a senior principal scientist with Amazon’s AWS Cloud Operations Team and the internship program lead. Kroening and the AWS Cloud Operations team were looking to apply constraint programming to automate management of AWS cloud resources, and Ferreira was a natural fit.
“Amazon wants to make computing available to an audience that’s as large as possible and make the computing products as easy to use as possible,” Kroening says. “Our goal with the cloud ops internship program is to enable customers to use AWS products without programming by teaching computers to program themselves.”
Ferreira interviewed with other companies besides Amazon, but said the conversation with Kroening stood out.
“Daniel was very good at letting me know what’s special about AWS: the impact,” Ferreira says. “Millions of people use AWS every day. That’s what made me chose to work at Amazon. The research I did can impact the lives of so many people.”
Program synthesis: accuracy guaranteed
DevOps engineers can benefit from automation, but they also need to be able to trust in how a task is expedited behind the scenes. A manager might use the AWS interface to open an S3 bucket, for example, and verify whether a piece of data is stored correctly. But if there are hundreds of those buckets, checking each one can quickly become a laborious task.
Using the log files of the manual tasks as constraints, Ferreira was able to use program synthesis to create an “automation runbook”, a script that can create a program to automate a cloud management task with a guarantee of accuracy.
“Program synthesis gives you a formal guarantee in the form of a mathematical proof that goes step by step in showing that the program that it's creating is doing what you asked,” Ferreira says.
The method adds an essential level of confidence for managers who need to ensure their cloud systems are running optimally.
“The whole value prop is that the customer can take an automation runbook as is without having to double, triple, or quadruple check it. With constraint programming, the runbook is guaranteed to give you an answer, but only one that satisfies the constraints,” adds Kroening.
Pure research, palpable impact
Ferreira says she thoroughly enjoyed her experience at Amazon, in part because she found it was somewhat freer than she expected. She said she saw the research process at Amazon more like that of academia, where research is driven more by problem statements, hypotheses, and general curiosity.
“I expected I would have to justify my research decisions in some way with Amazon products,” Ferreira says. “That was definitely not the case, and that was pleasantly surprising to me.”
Kroening says science interns at Amazon are encouraged to do research that can be published. “This is very much a science internship as opposed to, say, a software engineering internship,” he points out.
Regarding her longer-term plans, Ferreira emphasized her desire to be a role model for others from her home country who may be intimidated by moving to a large country to pursue their careers.
“Some people who come from a small country like Portugal don’t always feel they can come to a country like the United States and have a bigger impact,” she says. “Maybe they’re afraid or just unsure that they would be successful here. I want to appeal to people like that and say, hey, you should try it. It might be very rewarding, like it was for me.”