Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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: 30 days ago
JSON representation

CoWorks is a unified compositional serverless microservices framework over AWS, Flask and Airflow technologies.

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 `_