Implications of Programming Language Selection for Serverless Data Processing Pipelines

Serverless computing platforms have emerged offering software engineers an option for application hosting without the need to configure servers or manage scaling while guaranteeing high availability and fault tolerance. In the ideal scenario, a developer should be able to create a microservice, deploy it to a serverless platform, and never have to manage or configure anything; a truly serverless platform. The current implementation of serverless computing platforms is known as Function-as-a-Service or FaaS. Adoption of FaaS platforms, however, requires developers to address a major question- what programming language should functions be written in? To investigate this question, we implemented identical multi-function data processing pipelines in Java, Python, Go, and Node.js. Using these pipelines as a case study, we ran experiments tailored to investigate FaaS data processing performance. Specifically, we investigate data processing performance implications: for data payloads of varying size, with cold and warm serverless infrastructure, over scaling workloads, and when varying the available function memory. We found that Node.js had up to 94% slower runtime vs. Java for the same workload. In other scenarios, Java had 20% slower runtime than Go resulting from differences in how the cloud provider orchestrates infrastructure for each language with respect to the serverless freeze/thaw lifecycle. We found that no single language provided the best performance for every stage of a data processing pipeline and the fastest pipeline could be derived by combining a hybrid mix of languages to optimize performance.

[1]  Shrideep Pallickara,et al.  Serverless Computing: An Investigation of Factors Influencing Microservice Performance , 2018, 2018 IEEE International Conference on Cloud Engineering (IC2E).

[2]  Cristina L. Abad,et al.  Reserved, on demand or serverless: Model-based simulations for cloud budget planning , 2017, 2017 IEEE Second Ecuador Technical Chapters Meeting (ETCM).

[3]  Gabor Karsai,et al.  BARISTA: Efficient and Scalable Serverless Serving System for Deep Learning Prediction Services , 2019, 2019 IEEE International Conference on Cloud Engineering (IC2E).

[4]  Satyam Shukla,et al.  Performance evaluation of programming languages , 2017, 2017 International Conference on Innovations in Information, Embedded and Communication Systems (ICIIECS).

[5]  Olaf David,et al.  Improving Application Migration to Serverless Computing Platforms: Latency Mitigation with Keep-Alive Workloads , 2018, 2018 IEEE/ACM International Conference on Utility and Cloud Computing Companion (UCC Companion).

[6]  Olaf David,et al.  Demystifying the Clouds: Harnessing Resource Utilization Models for Cost Effective Infrastructure Alternatives , 2017, IEEE Transactions on Cloud Computing.

[7]  Sachin Shrestha Comparing Programming Languages used in AWS Lambda for Serverless Architecture , 2019 .

[8]  Rubby Casallas,et al.  Infrastructure Cost Comparison of Running Web Applications in the Cloud Using AWS Lambda and Monolithic and Microservice Architectures , 2016, 2016 16th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid).

[9]  Alfonso Pérez,et al.  Serverless computing for container-based architectures , 2018, Future Gener. Comput. Syst..

[10]  Mengyuan Li,et al.  Peeking Behind the Curtains of Serverless Platforms , 2018, USENIX Annual Technical Conference.

[11]  Andrea C. Arpaci-Dusseau,et al.  Serverless Computation with OpenLambda , 2016, HotCloud.

[12]  Andrea C. Arpaci-Dusseau,et al.  Pipsqueak: Lean Lambdas with Large Libraries , 2017, 2017 IEEE 37th International Conference on Distributed Computing Systems Workshops (ICDCSW).

[13]  Alan Sill,et al.  The Design and Architecture of Microservices , 2016, IEEE Cloud Computing.

[14]  Lutz Prechelt,et al.  An Empirical Comparison of Seven Programming Languages , 2000, Computer.

[15]  Perry Cheng,et al.  Serverless Computing: Current Trends and Open Problems , 2017, Research Advances in Cloud Computing.

[16]  Josef Spillner,et al.  FaaSter, Better, Cheaper: The Prospect of Serverless Scientific Computing and HPC , 2017, CARLA.

[17]  Perry Cheng,et al.  Building a Chatbot with Serverless Computing , 2016, MOTA@Middleware.

[18]  David A. Patterson,et al.  Cloud Programming Simplified: A Berkeley View on Serverless Computing , 2019, ArXiv.

[19]  Adam Eivy,et al.  Be Wary of the Economics of "Serverless" Cloud Computing , 2017, IEEE Cloud Computing.

[20]  Vatche Ishakian,et al.  Serving Deep Learning Models in a Serverless Platform , 2017, 2018 IEEE International Conference on Cloud Engineering (IC2E).

[21]  Perry Cheng,et al.  The serverless trilemma: function composition for serverless computing , 2017, Onward!.

[22]  Bartosz Balis,et al.  Serverless execution of scientific workflows: Experiments with HyperFlow, AWS Lambda and Google Cloud Functions , 2017, Future Gener. Comput. Syst..

[23]  Gojko Adzic,et al.  Serverless computing: economic and architectural impact , 2017, ESEC/SIGSOFT FSE.

[24]  Dilma Da Silva,et al.  Exploring Serverless Computing for Neural Network Training , 2018, 2018 IEEE 11th International Conference on Cloud Computing (CLOUD).

[25]  David Jackson,et al.  An Investigation of the Impact of Language Runtime on the Performance and Cost of Serverless Functions , 2018, 2018 IEEE/ACM International Conference on Utility and Cloud Computing Companion (UCC Companion).

[26]  Maciej Malawski,et al.  Benchmarking Heterogeneous Cloud Functions , 2017, Euro-Par Workshops.

[27]  Albert Y. Zomaya,et al.  Serverless Execution of Scientific Workflows , 2017, ICSOC.