Deploying Serverless into Different Stages and Regions
# Deploying Serverless into Different Stages and Regions
# What are the stages and regions
Most of the companies deploy their software into multiple environments for different purposes. A development environment can be used for development and a staging environment can be used for pre-production testing as an example. Serverless Framework provides two mechanisms for deploying your Serverless Infrastructure into different environments. They are stages and regions.
# Deploying into Different Regions
The easiest solution to keep your environments separate is to deploy each environment into a different region. The advantage of this approach is that it's simple. All you need to do is to switch your region and hit deploy. You can apply some additional IAM rules based on the regions that isolate one environment from another.
On another hand, deploying into a different region is limited. There are only so many regions available. In addition to it, if your region is located far from your users, you can introduce some unnecessary latency that can hurt some user experience.
# Setting Up the Project
Let's deploy our sample project with just one tankHandler
lambda into multiple regions. Download or clone our Open Source repo. Run yarn install
or npm install
in sample-apps/serverless-lambda
to install the necessary plugins. Next, open Commandeer, choose Serverless -> Runner from the side navigation and choose your serverless.yml
file under the folder sample-apps/serverless-lambda
.
# Deploying to the West Side or the East Side
If you haven't done so yet, you'll need to set up your AWS connection by following our getting started guide. If you already have your AWS connection set up, let's dive in straight into the deployment action.
Choose N. Virginia (aka us-east-1) from the region dropdown. Doing so will set our deployment to go to the East. Also, feel free to choose the region you like, we're just using us-east-1
as an example here. Next, click deploy, which deploys your Serverless function to the Eastside.
Once the deployment is finished, you can switch your region to the west (for instance us-west-1
) and hit deploy. Now you have your lambda on the West too.
Feel free to navigate to the Lambda section to verify the lambdas in each region you deployed it to.
Tips
Join our email Newsletter to receive some amazing Cloud Development articles in your inbox.
# Using Different Stages
Deploying your lambdas using different stages is far more flexible. As long as you're using a different name for your stage, you can deploy as many variations of your lambdas as you like. Using stages will also put the name of your stage into the name of the lambda itself. It helps you to avoid some naming collisions in the same region or account.
# Setting Up Your Stage
Setting up your stage is quite straightforward. Open Commandeer, go to Serverless -> Runner using the side navigation. Click on the gear icon to bring up Serverless settings. Scroll down to the stage
text field and enter the name of your stage. For this tutorial, we'll choose the stage named dev
.
# Deploying to the dev Stage
Next, just click the Deploy
button to deploy your lambda using the dev stage. Once the deployment is over, go to the Lambda page from the side navigation and see your newly deployed lambda. As you can see, Serverless also put the stage name into the Lambda name itself to avoid some naming collisions.
# Conclusion
Serverless Framework provides you with the ability to deploy your Serverless infrastructure into different regions and using different stages. Deploying into multiple regions is a great solution for some simple use-cases. Stage based deployment is more flexible which fits perfectly for more complicated use-cases. You can also combine both approaches by using different stages and different regions to maximize environment isolation and to avoid some naming collisions. Commandeer supports both of the deployment options making you more productive at developing for the cloud. Go ahead and give it a shot for your Serverless project.