App development has evolved rapidly in recent years. With new demands and expectations from businesses and users, trends like cloud have helped developers to be more productive and to build faster, more reliable and secure applications. But, there’s no end to evolution – and serverless is arguably the next step for application development.
But is a serverless architecture the right choice?
What is a Serverless Architecture?
When you hear the word sever-less, you might assume that it means no servers. In actual fact it really refers to the elimination of the need to manage the servers. Instead, it shifts that responsibility to your cloud provider.
Simply, it means that the constituent parts of an application are divided between multiple servers, with no need for the application owner/manager to create or manage the infrastructure that supports it.
Instead of running off a server, with a serverless architecture, it runs off functions. These are essentially actions that are fired off to ensure things happen within the application. This is where the phrase ‘function-as-a-service’, or FaaS, (another way of describing serverless) comes from. A recent report claims that the FaaS market is projected to grow up to 32.7% by 2021, by 7.72 billion US dollars.
Is Serverless Architecture a Good Choice for App Development?
Now that we’ve established what the serverless actually means, we must get to business. Is serverless architecture the right choice for app development?
Well, it can work either way. It can be positive as well as negative. Here are some reasons:
Using serverless for app development: the positives
There are many reasons because of which serverless architecture can be good for app development and should be used.
Some of them are discussed below:
- Decreasing costs
- Easier for service
- Third-party services
The most effective use of a serverless architecture in an app development process is that it reduces the costs of the work.It’s typically less expensive a ‘traditional’ server architecture.
The reason is that on hardware servers, you have to pay for many different things that might not be required. For example, you won’t have to pay for regular maintenance, the grounds, the electricity, and staff maintenance. Hence, you can save a considerable amount of money and use that for app quality as well.
Easier for service
It is a rational thought that when the owner or the app manager will not have to manage the server themselves, and a machine can do this job, then it won’t be as challenging to make the service accessible. As it will make the job more comfortable because it will not require supervision.
Second, you will not have to spend time on it. Instead, you can use this time for productive work such as product development. Third, the service by this technology is reliable, and hence you can easily use it without much fear.
Now another interestingly useful advantage of serverless architecture in app development is scalability. So, what is scalability? Well, it is the phenomenon by which a system handles an extra amount of work by adding resources to the system.
It is the capability of an app or product to continue to work appropriately without disturbance when it is reformed in size or volume to meet any users need. So, serverless architecture act as the resource that is added to the system to handle any work that has piled up.
Another essential and useful feature of the serverless architecture is that, going this way you can use third-party services. Hence, your app can use any third-party service it requires other than what you already have. This way, the struggle needed to create the backend architecture of the app reduces.
Additionally the third-party might provide us with better services than we already have. Hence, eventually, serverless architecture proves to be better as it provides the extent of a third-party.
Serverless for app development: negatives
Now we know all the advantages of a serverless architecture, it’s important to note that it can also it bring some limitations and disadvantages.
- Time restrictions
- Vendor lock-in
- Debugging is not possible
As mentioned before, serverless architecture works on FaaS rules and has a time limit for running a function. This time limit is 300 seconds exactly. So, when this limit is reached, the function is stopped. Therefore, for more complex functions that require more time to execute, FaaS approach may not be a good choice.
Although this problem can be tackled in a way that the problem is solved easily, to do this, we can split a task into several simpler functions if the task allows it. Otherwise, time restrictions like these can cause great difficulty.
We have discussed that by using serverless architecture, we can utilize with third party services. Well, it can also go in the wrong way and cause vendor lock-in.
If, for any reason, you decide to shift to a new service provider, in most cases services will be fulfilled in a different way. That means the productivity gains you expected from serverless will be lost as you will have to adjust and reconfigure the infrastructure to accept the new service.
Multi-tenancy is an increasing problem in serverless architecture. The data of many tenants are kept quite near to each other. This can create confusion. Some data might be exchanged, distributed, or probably lost.
In turn, this can cause security and reliability issues. A customer could, for example, suddenly produce an extraordinarily high load which would affect other customers’ applications.
Debugging is not possible
Debugging isn’t possible with serverless. As Serverless Architecture is a place where the data is being stored, it doesn’t have a debugging facility where the uploaded code can be debugged.
If you want to know the function, run or perform it and wait for the result. The result can crash in the function and you cannot do anything about this.
However, there is a way to resolve this problem, as well. You can use extensive logging which with every step being logged, decreases the chances of errors that cause debugging issues.
Serverless architecture certainly seems impressive in spite of having some limitations. There is no doubt that the viability and success of architectures depend on the business requirements and of course on the technology used. In the same way, serverless can sparkle bright if used in the appropriate case.
I hope this blog might have helped you in the understanding of Serverless architecture for mobile apps and might be able to see it’s both bright and dark sides.
Mehul Rajput is a CEO and co-founder of Mindinventory which specializes in Android and iOS app development and provide web and mobile app solutions from startup to enterprise level businesses. He is an avid blogger and writes on mobile technologies, mobile app, app marketing, app development, startup and business.
What is serverless architecture and why should I be interested?
Introducing numpywren, a system for linear algebra built on a serverless architecture
Modern Cloud Native architectures: Microservices, Containers, and Serverless – Part 1
Modern Cloud Native architectures: Microservices, Containers, and Serverless – Part 2