As you know, I’ve been talking and developing production-ready solutions in a Serverless fashion since 2018, which sounds “forever” in this IT world. In the beginning, I used the amazing tool called
fun developed by Alibaba to deploy them, and this made my life easier since then.
Apparently, Alibaba deprecated
fun in favour of another tool called
serverless-devs, which has a more “multi-cloud” approach and is gaining a lot of attention in GitHub.
According to them, Serverless Devs is an open source serverless platform aimed to provide developers with a powerful framework. Through this platform, developers can not only experience multi-cloud serverless products with one click, deploy serverless projects at an extreme speed, but also manage the entire lifecycle of serverless projects. Also, combining Serverless Devs with other tools is very simple and quick and helps further improve R&D, operation and maintenance efficiency.
The tool itself follows the principles of SDM (Serverless Devs Model), which is a vector-agnostic, serverless architecture. It defines common usage standards, allowing developers to focus more on business logic and improving serverless application development, deployment, operation and maintenance. Through this model, developers can use different cloud vendors and open source serverless products in a more flexible and general way, and then implement serverless application management more efficiently, concisely, and conveniently.
Supported Resources by Serverless Devs
At this moment, the FaaS platforms/products currently supported by the Serverless Devs project are:
- Alibaba Cloud Function Compute (FC)
- AWS Lambda
- Baidu Cloud Function Compute (CFC)
- HUAWEI CLOUD Function Graph (FG)
- Tencent Serverless Cloud Function (SCF)
Ok, lets go with the “Hello World”
This is supposed to be a “Hello World”, so I’ll try to make this example as little as possible. Remember, this is available in my GitHub for free so you can download it.
The folder structure is:
serverless-devs-helloworld ├── code │ ├── index.py └── s.yml
As you can see, there is a main
s.yml file with the definition of the project. Then, a folder called
code holds the source code of our example in a file named
index.py because our example will be made in Python.
edition: 1.0.0 name: sdevs-helloworld access: default services: helloworld-service: component: fc props: region: cn-shanghai service: name: helloworld-service description: 'Python Hello World Service' function: name: helloworld-function description: 'Python Hello World Function' codeUri: './code' timeout: 60 memorySize: 256 runtime: python3 triggers: - name: httpTrigger type: http config: authType: anonymous methods: - GET
import logging HELLO_WORLD = b'Hola Mundo!\n' def handler(environ, start_response): context = environ['fc.context'] request_uri = environ['fc.request_uri'] for k, v in environ.items(): if k.startswith('HTTP_'): pass status = '200 OK' response_headers = [('Content-type', 'text/html')] start_response(status, response_headers) return [HELLO_WORLD]
Installing Serverless Devs
Once we have the above project structure ready, follow the next steps:
- Install Node.js (>=10.8.0) and NPM package management tools
- Install Serverless Devs by running
npm install @serverless-devs/s -g
- Check if Serverless Devs is working properly by running
After installing, you should run
s config add to start the setup, choose “Alibaba Cloud (alibaba)” and follow the instructions to put your Alibaba Cloud credentials.
Once we have everything ready, let’s rock. This, as the last step, is the easiest of all of them.
We just need to run
s deploy and focus on the output, as we will have all the information we need in order to test if our code is running successfully.
Thank you for reading all the way to this point, enjoy serverlessing!