CoWorks is a unified serverless microservices framework based on AWS technologies (API Gateway, AWS Lambda), the Flask framework (Flask/Click) and the Airflow platform.
The aim of this project is to offer a very simplified experience of microservices. For such purpose, we divided the CoWorks framework in two levels:
Small technical microservice
TechMicroservice
are each composed of simple python Flask application and deployed as a serverless Lambda. Each TechMicroService
is an atomic component
or atomic microservice. These microservices may be called synchronously or asynchronously.
Functional business service
biz
are composite business services, which are Airflow DAGs providing orchestration of atomic microservices or components (aka: TechMicroService
).
To get started with CoWorks, first follow the Installation Guide. Then you can get a quickstart on TechMicroService Quickstart.
Once familiar with TechMicroService
, you can continue with BizMicroService Quickstart.
Data model
The data model shared between those services may be structured with pydantic
and using the JSON:API specification.
You can install this data protocol for CoWorks with: pip install coworks[jsonapi-sqlalchemy].
- Setup and installation: Installation
- Complete reference guide: Documentation.
- Samples:
- layers : Get available CoWorks lambda layers: CoWorks layers.
- website : Very simple website done as a simple microservice: Website.
- Read FAQ for other information.
We work hard to provide a high-quality and useful framework, and we greatly value feedback and contributions from our community. Whether it's a new feature, correction, or additional documentation, we welcome your pull requests. Please submit any issues or pull requests through GitHub.
- Flask - Lightweight WSGI web application framework (Donate to Pallets).
- Airflow - A platform to programmatically author, schedule, and monitor workflows.
- Terraform - Infrastructure configuration management tool.
- Pydantic - Data validation using Python type hints.
Some ideas guiding this project were found in :