Serverless computing or FaaS provides a platform which allows the developers to execute code upon call of events. The serverless platform separates infrastructure services from the applications running on top of the platform. Automatic scaling functionality of FaaS not reduces the compute cost but and operational management overheads.
In the serverless solution, we pay for the managed servers, databases and application logic. In this platform we can avoid the complexity of building and maintaining the infrastructure. Similar to IaaS and PaaS, cost behind infrastructure & other resources reduced is the advantage of the serverless architecture but it comes with some cost.
Drawbacks of Serverless Computing
Serverless has some use-cases (like a less used webpage), outside those it is actually costly. Servers at backend essentially running and provider will charge something in indirect manner. Serverless removes/reduces the common security problems of dynamic programming langugage like PHP, Python. Unless you allow, the function will not run or the call will return different thing.
The units of integration with Serverless are smaller compared to traditional architectures and thereby we need to rely on integration testing too more. Decisions about how granular the function will be, that part not easy to assess, implement and also test. It may get difficult to manage too many functions. The fragments complete logic gets divided into hundreds, thousands of discrete functions. How these will be together by events is not written down anywhere, the cloud provider may changes the event model making to collapse the total application. Just looking at the code it is difficult to guess the sequence of execution. Serverless is agile as long as the programmer is willing to conform to its model. Local development does not actually exist (except for IBM OpenWhisk).
Facing problems related to deployment, versioning and packaging are not uncommon. Debugging and monitoring in server less is vendor dependent. Debugging on serverless is difficult due to distributed nature. Serverless applications are commonly wired by an event-driven architecture (EDA). EDA-based programming is not intuitive leading to debug issues. Common Serverless IDE does not exist to enable users to create functions and test the fully composed application. Serverless essentially lacks local persistent state.
Problems out of third-party API system often visible. Vendor lock-in, multitenancy problems and security concerns are problems out of 3rd party APIs. Implementing new APIs may lead to system downtime, forced API upgrades, loss of functionality.
OpenWhisk is opensource but running on own server commonly not the question. IBM uses the same Open Source thing as cloud but AWS, Azure are popular due to various other minor factors. IBM costs higher but supports PHP, Python, Docker. IBM provides memory size up to 512MB, max code execution time of 10 minutes, 48 MB max code size. RightScale has good comparison of the serverless providers. You can understand that, first you need to try 1-2 vendors, compare functions, features. It is starting of the drawback. Your option for IBM to increase resource is using OpenWhisk on own server. Which are called “built-in triggers” they also varies from provider to provider. Outside IBM, we do not know if anyone if has open source software and also cloud service. OpenWhisk is an Apache project and better to rely despite having less feature. Azure, AWS really have some extra things but problem is lack of option to run on-premise/on own server.