The popularity of cloud technologies has led to the development of a new type of applications that specifically target cloud environments. Such applications require a lot of cloud infrastructure to run, which brought about the Infrastructure as Code approach, where the infrastructure is also coded using a separate language in parallel to the main application. In this paper, we propose a new concept of Infrastructure in Code, where the infrastructure is deduced from the application code itself, without the need for separate specifications. We describe this concept, discuss existing solutions that can be classified as Infrastructure in Code and their limitations, and then present our own framework called Kotless - an extendable cloud-agnostic serverless framework for Kotlin that supports two cloud providers, three DSLs, and two runtimes. Finally, we showcase the usefulness of Kotless by demonstrating its efficiency in migrating an existing application to a serverless environment.
翻译:云层技术的普及导致了专门针对云层环境的新型应用的开发,这些应用需要大量的云层基础设施运行,从而产生了基础设施作为代码方法,基础设施也使用与主要应用平行的单独语言进行编码。在本文中,我们提出了一个新的代码基础设施概念,基础设施从应用代码本身中推导出来,不需要另外的规格。我们描述了这一概念,讨论了在代码中可归类为基础设施的现有解决方案及其局限性,然后提出了我们自己的框架,称为“无云”――一个支持两个云源提供商(三个DSL和两个运行时间)的可扩展的无云服务器框架。最后,我们展示了Kotles在将现有应用程序迁移到一个没有服务器的环境方面的效率。