Services and deployment

A service is a project where we define the functions, the events that trigger them, and any infrastructure resources that are required for the function to perform. They are collected together into one file, which is called serverless.yml

eg. 
myServerlessService/
serverless.yml

When we start using Serverless Framework for deployment, we will be using one single service. But as the application grows, it is recommended that you have multiple services as shown in the following code: 

 users/
serverless.yml # Contains 4 functions
posts/
serverless.yml # Contains 4 functions

Having multiple services can isolate the infrastructure resources that are to be used. But it also has a drawback, as currently each service creates a separate REST API on API Gateway. This is a limitation with API Gateway. But there is a workaround to resolve this, which we will look into in future chapters. 

To create the service, we have to use the create command, and we must pass the runtime language in which you would like to write the service. We can also provide the path, as shown in the following example: 

$ serverless create --template <runtimes> --path myService

The main purpose of Serverless Framework is to deploy functions, events, and infrastructure resources into the remote cloud without much hassle, and that is done through the deploy plugin. There are various features that this deploy plugin provides. Let us look at a few of them: 

This deploy plugin works in the following ways: