Skip to main content

Herbie is a central data store for business data in a distributed service architecture.

Project description

Herbie

CI Build

What is Herbie?

Herbie is an abstract data layer that makes it easier to exchange data across distributed systems. You define business entities such as “customer” or “order” as JSON schemas which you store in a central schema registry. Herbie can listen for data updates in one system and publish new data to other systems based on your business rules.

Why should you use Herbie

It simplifies the process of building integrations and connectors for all your systems. Maybe you want to build a connector between MailChimp and Salesforce, but also between MailChimp and Shopify, and maybe also between Salesforce and Shopify. Each time, you have to customize your connector to the requirements of the two systems. What if all your systems connected to one central data layer? - that’s Herbie.

Once all your systems are connected to Herbie, they can then talk to one another. Once the system can subscribe to changes in another system. Just updated your contacts in Salesforce? Your MailChimp connector can listen for the changes and update the Mailchimp database accordingly.

Overview

Herbie uses a schema registry combined with a central data store for business entities.

  • It's built with Django and comes with a simple API to create business entities.

  • The json-schema integration allows you to define custom schema definitions which Herbie uses to validate the entities.

  • By default, we provide support for Google Pub/Sub or AWS SNS/SQS to provide event streams — your services can subscribe to these event streams and find out when a certain entity-type is updated.

    However, you don't have to use Google Pub/Sub - you can also update Herbie to use your preferred messaging system.

The philosophy behind Herbie is to avoid behavior that seems like a "black box" and is instead built in very straightforward way, following Django best practices. It is also meant to be extendable and easy to adapt.

Further reading:

Getting started

Quick Start

The easiest and recommended way to start a new project is to clone the sandbox repository and follow the instructions.

Step by step guide

  1. Herbie is based on the Django framework, so the first step is to start a new Django project using postgres as database technology.

  2. After the Django-skeleton is set up, Herbie can be installed using a common package manager like pip.

    python -m pip install herbie
    

    You can also add Herbie to your requirements.txt.

  3. The next step is to configure the settings accordingly:

    a) Register Herbie and the django rest-framework in your installed apps.

    INSTALLED_APPS = [
        # ...
        'rest_framework',
        'rest_framework.authtoken',
        'herbie_core.apps.HerbieCoreConfig',
    ]
    

    b) Setup the token-authentication for the provided Herbie-API:

    REST_FRAMEWORK = {
       'DEFAULT_AUTHENTICATION_CLASSES': (
           'rest_framework.authentication.TokenAuthentication',
       ),
    }
    

    c) Define Schema package

    d) Select a Queueing technology (AWS SNS/SQS vs. Google Pubsub)

    e) Register herbie urls in your urls.py:

    from herbie_core import urls as herbie_urls
    
    urlpatterns = [
    # ...
        path('api/', include(herbie_urls)),
    ]
    
  4. Add schemas by either adding them to the remote repository or to a local package.

  5. Run the Django-App in preferred way-> link

  6. When app is running execute the following commands:

    1. Generate model classes for the sample business objects that are included in the Herbie schemas package.

      python manage.py generatemodels
      
    2. Create and execute migration files to initialize your database

      python manage.py makemigrations
      python manage.py migrate
      
    3. Load the schemas to the database:

      python manage.py import_json_schemas
      
    4. Create an admin user so that you can log in to the admin dashboard.

      python manage.py createsuperuser --username "username" --email "email@email-address.com"
      

Changing the messaging system

By default Herbie sandbox setup uses Google Pubsub for distributing the business entity messages in a JSON format. But it should be easy to use any other messaging system:

The different messaging systems are distributed as Python packages and are also based on Django. To use or add a new one it is as easy as registering a new Django app.

Check Google Pubsub adapter repository for detailed instructions.

Admin Panel

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

herbie-1.0b2.tar.gz (54.3 kB view details)

Uploaded Source

Built Distribution

herbie-1.0b2-py3-none-any.whl (59.8 kB view details)

Uploaded Python 3

File details

Details for the file herbie-1.0b2.tar.gz.

File metadata

  • Download URL: herbie-1.0b2.tar.gz
  • Upload date:
  • Size: 54.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for herbie-1.0b2.tar.gz
Algorithm Hash digest
SHA256 b4ce036cc1e0e81b236e614403682338eba606c35a8548b36902a0620cf31eb9
MD5 62085cbdf9bef415ee3521847ae08033
BLAKE2b-256 f9ea353bd65837960dba0349789c2a3097f338d9896f6fe2317772004f4bb3ec

See more details on using hashes here.

File details

Details for the file herbie-1.0b2-py3-none-any.whl.

File metadata

  • Download URL: herbie-1.0b2-py3-none-any.whl
  • Upload date:
  • Size: 59.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for herbie-1.0b2-py3-none-any.whl
Algorithm Hash digest
SHA256 830bc3f3367d586423fb81d654faeeb48675d551477e339097ee32faa2e1da0f
MD5 7fead4c635b2d4191ad73b676070fa8e
BLAKE2b-256 4f71b8dc4c0f0969fe76f716ddd1baa5ec1a822e863f40473af35ef04e4fe04e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page