Serverless isn’t exactly serverless!
The evolution of computing gained momentum when the size of computing machines started reducing from the size of a building to that of a human palm. Virtualization added fuel to the fire, and cloud computing has taken it to a higher level altogether. The rise of VMs and Containers is making it bigger and better… bigger in terms of output and better in terms of quality of output. System architectures are also evolving from monolithic to microservices-based and the adoption of DevOps practices with a much more refined CI/CD pipeline is making them more efficient, faster, and simpler.
This increased speed of development and delivery expects infrastructure to be equally agile. Your infrastructure needs to be self-manageable and self-scalable to cope with the demands for computing resources. Serverless is the next phase in this evolution of computing. All the major providers are introducing newer and better services around serverless architecture and serverless computing to speed up the process of application development and delivery so that you can focus on applications rather than the infrastructure. But, even today I find people that unsure about what serverless exactly is.
So, let’s see what is serverless, and I will also try to put some light on aspects such as its application areas and things you should consider before going serverless.
What is serverless computing?
In serverless computing, an organization need not have a dedicated server that is responsible for the allocation of resources and services to machines in a network. The cloud service provider runs a server that manages this task and is responsible for other network management activities. The API gateway acts as a mediator between users’ networks and the cloud provider’s server. It is responsible for the exchange that happens between them.
Function as a Service (FaaS) is a vertical of serverless technology that deals with running code functions rather than the complete application. AWS Lambda, Google Cloud Functions, Azure Functions, and Kubeless are some of the most popular FaaS services. Let’s not get into the details of FaaS here, as it can be a separate topic altogether. For now, let’s stick to serverless.
How is it different from traditional computing?
In traditional computing, having a network meant having a server on organizational premises. Organizations preferred servers with higher capabilities than what was actually required by the network for obvious reasons like accommodating more machines when needed and future network upgrades as per organizational requirements. This resulted in high network charges and underutilization of the available server space. It also pushed organizations to hire network support teams to manage the network infrastructure. The overall maintenance charges were also comparatively high.
To give you a practical example, imagine Netflix releasing a series that gains popularity overnight or PubG releasing a new map, drawing heavy traffic. How disappointing would it be for the users if their servers were incapable of handling such heavy traffic? Serverless networks, on the other hand, are known to handle network traffic more efficiently due to high service availability on demand. In serverless computing, the cloud service provider charges as per resource consumption. This eliminates overhead costs and adds flexibility and scalability to networks. These are the major advantages offered by the technology owing to which serverless computing is growing rapidly.
What are some of its application areas?
Now, let us have a look at which sectors of the technology landscape benefit from serverless:
- Websites and APIs: Serverless technology has made it possible to launch fully functional apps and websites in a couple of days. Yes, you heard it right! You only need to focus on the coding and content, and the cloud provider takes care of the rest. No need to worry about sudden traffic or servers crashing.
- Video & Image Processing: Using serverless technology, you can build high-performance image & video-based services for apps. You can change video transcoding and resize images to suit the devices that different users might be using, such as laptops, smartphones, tablets, etc. It also makes the processing and reformatting of videos easier for developers.
- Multi-language Support: Serverless technology facilitates multi-language support by eliminating the dependency on one particular language for development. Experts in different languages can build the code in the language that they are well-versed in and then collaborate to integrate different services into an application.
- CI/CD Pipelines: Using serverless technology CI/CD pipelines can fetch data in small chunks to simplify software updates and bug fixes. Moreover, automating such tasks also becomes easier.
- Events and SaaS: The serverless technology can be used to achieve effective scalability of event pipelines to facilitate better analytical capabilities. Moreover, different apps use the software of third-party SaaS providers. Serverless enables you to subscribe functions to events that are released by these providers. This is a particularly important application as SaaS providers won’t let you run functions on their systems.
- Hybrid Cloud Applications: An application may be dependent on different functionalities and features offered by different cloud providers. Development teams often follow this practice to choose from among the strongest feature that each provider can offer. Switching between cloud service providers becomes easy with the serverless technology, and developer can benefit greatly from this provision.
What are some of the things that you must consider before moving to serverless?
While serverless comes loaded with an array of advantages that are discussed in the preceding sections, we need to keep in mind that no technology is perfect. Some drawbacks of serverless technology are discussed below:
- Firstly, your dependence on a third-party provider of the serverless service will raise questions about full control over the application. Further, this may make it difficult to switch between serverless service providers.
- Since a third-party service provider has partial control over your application (howsoever little it may seem), you may face difficulties in some of your TestOps activities like penetration tests and vulnerability tests.
- Coming toward economic feasibility, you may have to pay to make functional calls even though the two applications are closely linked. In other words, it does not consider whether two functions are on the same server or a different one. And since you are charged as per resource utilization, you may not find it feasible enough for applications that need to be run for a longer duration of time.
According to Gartner’s April 2018 report, An I&O Leader's Guide to Serverless Computing, more than 20% of global enterprises will have deployed serverless computing technologies by 2020, which is an increase from fewer than 5% as of April. So that was a little overview of serverless technology. Thinking about migrating to serverless computing? We can help! Get in touch with Opcito Technologies to find out more.