CoWorks is a unified compositional microservices framework using Flask/Airflow on AWS serverless technologies.


Keywords
python3, serverless, microservice, flask, airflow, aws-lambda, aws, serverless-framework
License
Other
Install
pip install coworks==0.2.5

Documentation

CoWorks Logo

Maintenance Build Status Documentation Status Codecov Python Versions Licence

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].

Documentation

  • 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.

Contributing

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.

Related Projects

  • 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 :