Cloud computing has become an essential part of our computing infrastructure. In this model, data and programs are hosted in (often third-party) data centers that provide APIs for data access and running large-scale computations. It is used in almost all major internet services companies and increasingly being considered by other organizations to host their data and run analytics. However several challenges lie in its full-scale adoption, chief among them being security, performance and correctness. Security is important as both client data and computations need to be sent to third-party data centers. Performance is important as cloud computing involves several development iterations, each running on large-scale data. Correctness is critical as cloud frameworks are complex distributed systems serving billions of users every day.
In this dissertation, I argue that program analysis techniques can help address the above key challenges of cloud computing. I describe three projects that illustrate different aspects of the solution space: MrCrypt is a system that uses static analysis to guarantee data confidentiality in cloud computations by using homomorphic encryption schemes. Vega is a library that significantly improves incremental performance by rewriting modified workflows to use previously computed results. Kuai is a distributed, enumerative model checker that verifies correctness in Software Defined Networks, the networking layer used by many data centers.