{'fraction_non_alphanumeric': 0.03220433092726263, 'fraction_numerical': 0.00555247084952804, 'mean_word_length': 5.3674911660777385, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
GoDeploy: Portable Deployment of Serverless Functions in Federated FaaS

Federated Function-as-a-Service (FaaS) offers higher scalability, better resilience and cost-performance trade-off than running serverless applications in a single cloud region. However, existing Infrastructure-as-Code (IaC) tools are mainly focused on the FaaS provider, rather than on applications, which increases developer effort to code multiple times the same data in order to deploy a serverless function on various cloud regions in federated FaaS. To bridge this gap, this paper introduces GoDeploy, a framework that simplifies coding the deployment of serverless functions in Federated FaaS. Using the design principle “code once, deploy everywhere”, GoDeploy offers developers a domain-specific language, which introduces a three-levels hierarchy serverless function → FaaS providers →cloud regions of FaaS provider, rather than existing either the two-levels hierarchy FaaS provider → serverless functions or flat horizontal structure. Moreover, GoDeploy hides the complexity and requirements of each FaaS provider to store deployment packages (zip) of serverless functions on their storages. With this approach, GoDeploy reduces deployment script length measured in lines of code (LoC) compared to the recent FaaSifier M2FaaS by up to 33.33% for deployment on three cloud regions of AWS. When deploying a single function on three cloud regions of each of three FaaS providers AWS, IBM, Google, LoC are reduced by up to 72.34% compared to the state-of-the-art IaC tool Terraform. The improvement is higher when a serverless function needs to be deployed on multiple cloud regions because GoDeploy's three-level hierarchy requires a single LoC per cloud region, compared to multiple LoC in Terraform's and M2FaaS DSLs.