Computing is • Understand the benefits of cloud computing for software developers • Be aware of (selected) challenges of software development in the cloud • … and know how to address them 1/15
• Software and data is access over the Internet • From a software developer perspective: • Developer “rents” computing resources • Application is running on the cloud provider’s machines 3/15
PaaS SaaS Managed by Client Managed by Cloud Vendor Higher Abstraction Less Restrictions Hardware Virtualization Database App Server Application Runtime Data Application Hardware Virtualization Database App Server Application Runtime Data Application Cloud Computing Models 4/15
H. C. Gall, “The Making of Cloud Applications – An Empirical Study on Software Development for the Cloud,” in Proceedings of the 10th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE), 2015. To appear. Percentages 0 5 10 15 20 25 30 Focus on Product, Productivity Faster Delivery, Time-to-market Lower Costs/TCO (Total Cost of Ownership) Automation, Deployment Pipelines Easier Infrastructure Setup and Maintenance Scalability / Elasiticity 31% 30% 22% 11% 10% 9% (survey responses of 294 cloud developers) Cost- and Product-Related Technology Related 5/15
code • Allows you to evolve program code and operating environment together Yuyuan Jiang and Bram Adams. (2015). Co-evolution of Infrastructure and Source Code - An Empirical Study, in Proceedings of the 12th Working Conference on Mining Software Repositories, MSR (Florence, Italy), to appear. 7/15
H. C. Gall, “The Making of Cloud Applications – An Empirical Study on Software Development for the Cloud,” in Proceedings of the 10th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE), 2015. To appear. 8/15
Patterns in the Chaos - a Study of Performance Variation and Predictability in Public IaaS Clouds. ArXiv e-prints, 2014. Under revision. Relative standard deviations of various benchmark results over ~500 identical repetitions. 9/15
Patterns in the Chaos - a Study of Performance Variation and Predictability in Public IaaS Clouds. ArXiv e-prints, 2014. Under revision. 20 30 40 0 20 40 60 Measurement Runtime [h] IO Bandwidth [Mb/s] Instance 9097 Instance 14704 10/15
and H. C. Gall, “The Making of Cloud Applications – An Empirical Study on Software Development for the Cloud,” in Proceedings of the 10th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE), 2015. To appear. 11/15
small instances over single large instances • See: Microservices • Anticipate runtime problems. • Define and store operational metrics off-instance • E.g., Logstash • Use best-practices • 12-Factor-App • Reactive Manifesto 12/15
Allows us • … to scale out applications (elasticity) • … to maintain application code along with infrastructure config • … to focus on the product • But: • Cloud instances are unreliable and volatile • Make use of best-practices 14/15
Erl, R. Puttini, Z. Mahmood. Cloud Computing: Concepts, Technology & Architecture. Prentice Hall Service Technology Series. 2013 Challenges and Opportunities in Cloud-Based SE: J. Cito, P. Leitner, T. Fritz, and H. C. Gall, “The Making of Cloud Applications – An Empirical Study on Software Development for the Cloud,” in Proceedings of the 10th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE), 2015. To appear. Cloud Performance P. Leitner and J. Cito. Patterns in the Chaos - a Study of Performance Variation and Predictability in Public IaaS Clouds. ArXiv e-prints, 2014. Under revision. 15/15 Dror G. Feitelson, Eitan Frachtenberg, Kent L. Beck, "Development and Deployment at Facebook," IEEE Internet Computing, vol. 17, no. 4, pp. 8-17, July-Aug., 2013 Cloud Development and Deployment in Practice