As more and more developers embrace Serverless technologies, there are confusions about picking the right platform for their needs. Every since AWS Lambda became a success among developers, there are many other services that are made available in the market including Azure Functions, Google Cloud Functions, Zoho Catalyst, Nimbella Platform, etc.. Each service offers different set of features and it is critical for the developers to understand what to look in a Serverless computing service. In this post, we will talk about top considerations for developers as they pick their deployment platform. Keep in mind that everyone’s needs are unique and there is no straightforward template which developers can use to select their platform.
Key Considerations for Developers
- Programming Language Support: Of course, the first consideration is the support for the programming language the developer wants to use. Not all Functions as a Service (FaaS) providers support all programming languages out of box. Also the programming language version is another factor that needs consideration. While the support for programming languages and different versions may be limited, some FaaS providers offer custom options where developers can upload the programming language of their choice using containers. Check if the FaaS provider support the programming language and version needed for your application, either out of the box or through containers
- Payloads: When developers deploy their code for execution by FaaS, different cloud providers offer different ways to package the code. Some support deploying the code directly from Github or using a Zip file, few cloud providers allow deployment of binary code and some also offer support for uploading Docker containers. Developers use different ways to package their applications for deployment and, in some cases, the applications demand specific kinds of payload support (eg: support for binary or containers). It is important to evaluate the payload support before picking a FaaS provider
- Event Sources: FaaS, by its very definition, is invoked either by a trigger or at specific times like a cron job. It is important to ensure that the FaaS provider supports the event source your application needs. This is as important as picking a provider based on programming language support
- Environment Variables: Another key aspect to look for is the support for Environment Variables. Your application needs may not fit with what is offered in the platform for the programming language of your choice. Some FaaS platforms do support Environment Variables and it can come handy in your deployment
- Data Stores: Depending on your application needs, you need to pick a cloud provider that offers support for the data store of your choice. It may be a relational database or NoSQL database or object storage, make sure it is available with the FaaS and meets your needs. Some FaaS providers support databases out of the box and, in others, there is an operational overhead. Depending on the application needs and the expertise of the developers, it is critical to pick a FaaS offering with right developer experience. Any friction in the developer experience will slow down application deployment, impacting the speed
- Supplementary Cloud Services: For a functioning application, there are other dependencies like Identity and Authentication Management, Message Bus, Push and email notifications, big data support, etc.. Developers should evaluate if the FaaS platform offer integrations with various cloud services needed to meet these dependency needs
- Documentation: Any good cloud service should provide comprehensive documentation about their platform and the APIs along with How-tos and other examples. Without a good documentation, developers waste their time finding the relevant information considerably slowing down the deployment process. Even though most people consider good documentation to be an afterthought, it should be part of any evaluation process
- Browser based IDE and Workflow: Even though this is not as critical as some of the above mentioned considerations, support for browser based IDE and a visual workflow editor is a good to have feature. Even though developers have their own choice of IDE, a good visual editor removes the friction in their development process and accelerates deploument
These are some of the key aspects which every developer should consider as they evaluate different FaaS providers. As we mentioned in the beginning of the article, the needs of every developer and the application are different and this article only highlights some of the key considerations for developers. In the next blog post, we will talk about some of the key DevOps considerations in selecting a FaaS platform.