Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Cloud-Based Software Development - Some Opportu...

Cloud-Based Software Development - Some Opportunities and Challenges

Cloud-Based Software Development - Some Opportunities and Challenges

xLeitix

June 16, 2015
Tweet

More Decks by xLeitix

Other Decks in Technology

Transcript

  1. software evolution & architecture lab Dr. Philipp Leitner University of

    Zurich, Switzerland Software Development for the Cloud Challenges and Opportunities
  2. Learning Goals • Have a high-level understanding of what Cloud

    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
  3. What is Cloud Computing? (1) • From a user perspective:

    • Software and data is access over the Internet 2/15
  4. What is Cloud Computing? (2) • From a user perspective:

    • 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
  5. Hardware Virtualization Database App Server Application Runtime Data Application IaaS

    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
  6. Opportunities / Benefits 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. 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
  7. Infrastructure Traceability Infrastructure-as-Code: • Define virtualized hard- and software as

    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
  8. Infrastructure Traceability (2) 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. 8/15
  9. Cloud instance performance is unpredictable 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. Relative standard deviations of various benchmark results over ~500 identical repetitions. 9/15
  10. Cloud instance performance is unstable 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. 20 30 40 0 20 40 60 Measurement Runtime [h] IO Bandwidth [Mb/s] Instance 9097 Instance 14704 10/15
  11. Cloud instances are volatile 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. 11/15
  12. Solution approaches • Hedge the risk • Prefer clusters of

    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
  13. Quick Recap • Cloud computing: IT resources provided “as-a-Service” •

    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
  14. Recommended Additional Reading Introduction to Cloud Computing in general: T.

    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