https://github.com/gdoumenc/coworks
CoWorks is a unified compositional serverless microservices framework over AWS, Flask and Airflow technologies.
https://github.com/gdoumenc/coworks
airflow aws-lambda flask microservice python3 serverless serverless-framework
Last synced: 12 months ago
JSON representation
CoWorks is a unified compositional serverless microservices framework over AWS, Flask and Airflow technologies.
- Host: GitHub
- URL: https://github.com/gdoumenc/coworks
- Owner: gdoumenc
- License: mit
- Created: 2019-12-07T18:04:16.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-03-12T15:23:25.000Z (about 1 year ago)
- Last Synced: 2025-03-26T18:11:15.670Z (12 months ago)
- Topics: airflow, aws-lambda, flask, microservice, python3, serverless, serverless-framework
- Language: Python
- Homepage:
- Size: 9.91 MB
- Stars: 17
- Watchers: 5
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- Contributing: docs/contributing.rst
- License: LICENSE.txt
- Code of conduct: docs/code_of_conduct.md
Awesome Lists containing this project
README
.. image:: https://github.com/gdoumenc/coworks/raw/dev/docs/img/coworks.png
:height: 80px
:alt: CoWorks Logo
|Maintenance| |Build Status| |Documentation Status| |Coverage| |Python versions| |Licence|
.. |Maintenance| image:: https://img.shields.io/badge/Maintained%3F-yes-green.svg?style=plastic
:alt: Maintenance
.. |Build Status| image:: https://img.shields.io/travis/com/gdoumenc/coworks?style=plastic
:alt: Build Status
.. |Documentation Status| image:: https://readthedocs.org/projects/coworks/badge/?version=master&style=plastic
:alt: Documentation Status
.. |Coverage| image:: https://img.shields.io/codecov/c/github/gdoumenc/coworks?style=plastic
:alt: Codecov
.. |Python versions| image:: https://img.shields.io/pypi/pyversions/coworks?style=plastic
:alt: Python Versions
.. |Licence| image:: https://img.shields.io/github/license/gdoumenc/coworks?style=plastic
:alt: 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 :
* `Flask-Classy `_
* `PyDANJA `_