While providing tech consulting to our clients we get asked the following questions –
- What is serverless technology?
- If there is no server then how does the software work?
- Is this serverless computing actually going to cost me more or less?
- Can my app be converted to a Serverless Application?
- What if I want to move to another cloud service?
- AWS or Azure or Google?
These are actually all very good questions, and each deserves a separate section in this article. Here are our thoughts on the matter.
What is Serverless technology?
Serverless Architecture of an application means that we leverage resources on our could in a dynamic fashion and we are charged based on the usage of the same. This gives way to another major concept that is proving to be a game changer – Managed Services. In very basic terms, managed services mean outsourcing a service and letting someone else manage it so that you improve your operations and hopefully cut your expenses. The same applied to IT can help you create applications that are loosely coupled in nature. The development paradigm is moving towards managed services and loosely coupled layers. Consider the example of AWS (Amazon Web Services). They have more than 100 managed services (S3, EC2, Route 53, RDS, Lex, Polly, Cloudfront, Lambda, API Gateway etc). These managed services are the loosely coupled layers for your architecture. For example, to store data, you can use Amazon RDS. In order to use that data and apply business logic in it, you can use Lambda functions and API Gateways. In essence, rather than maintaining these layers inside your server along with server maintained you literally outsource that work to AWS. Lambda function is one of the most important pieces of the puzzle which help these loosely coupled pieces to interact with each other. Currently, AWS Lambda – offered by Amazon is available for most of the programming languages. This opens a new concept called Function as a Service where you call a specific function only, rather than loading up the whole application. This concept has moved over to SAAS as well which we will discuss some other day.
If there is no server then how does the software work?
In all honesty, if you have a front-facing application i.e. one which has a UI you do need a thin layer for which you need an instance on EC2. In case you have a static website, you can actually get away by hosting it on S3. So, you have a thin UI layer talking to all these APIs, which in turn communicate internally using managed services and lambda functions (this terminology is very AWS centric, but the concept remains the same across all clouding platforms).
Is this serverless computing going to cost me more or less?
In the long term, as you have better control and analytics around each service, you can decide the vertical or the horizontal scaling to use. From a maintenance standpoint, you are relieved. There is no capital expenditure for hardware, which is translated to Operational expense. So, use your cash flow and time in a better way. Your development cost might be a little higher, but in the long term, you win as there is minimal CapEx and maintenance.
Can my app be converted to a Serverless Application? How much time will it take?
Image Credit: Dots and Brackets
The short answer is, it depends. For this, we have to classify the applications into 3 categories (after extensive application review as well code review)
- Easy migration
- Partial migration
- Difficult migration.
It all depends on the current structure of the application, its size as well as when the code of the application. In some legacy cases, it’s better to rewrite the application or use a hybrid approach. Time taken is also dependent on this.
What if I want to move to another cloud service?
This is a difficult task and hence you have to choose your cloud infrastructure provider very carefully. There are teams that specialize in AWS and then there are teams that specialize in Azure. It is difficult and expensive to find a team that is comfortable with both. This situation should be avoided. Yes, you are completely dependent on your service provider in this case but they are more than helpful in providing your support for the same. We would not recommend moving from one cloud service to another if you are using their managed services for business applications unless you have a very strong reason for it.
AWS or Azure or Google?
Are you using any of these currently for managing your servers? If yes, then it’s a good idea to continue using them. In terms of features, AWS is really good. For enterprises, Azure becomes a natural choice. But AWS being the pioneer in this game has a huge client base for enterprise level applications as well.
Hope we have been able to answer some of your questions around this space. You can get in touch with us if you would like us to support you in your current migration or building a serverless application.