Code Monkey home page Code Monkey logo

metadata's Introduction

Incremental Metadata Updates

Metadata is a service which updates our metadata storage. It relies on couple hosted services, but each of the following components should be scalable, fault tollerant and locally testable.

Git Version Control Service

Any git hosting service (like github, bitbucket, gitlab, ...) which exposes webhooks API (so far we only support github webhooks).

Webhook

Can be a Cloud Function or generally HTTP Service which can handle Metadata Events. The main responsibility of Webhook is to receive and publish the event to PubSub Service

PubSub Service

Real-time messaging service. PubSub supports pull and push mechanism to deliver messages.

Subscriber

Can be a Cloud Function or HTTP Service (like webhook). It will be triggered by PubSub Service when the new event arrives (FIFO order is not guaranteed). The main responsibility of Subscriber is to decode and deserialize the event, extract useful metadata, optionally go to the Git Version Control Service for more detailed metadata. This last step (depends on complexity) can be realized either by internal process or by another service. The last step is to update our Metadata Database. Subscriber may additionally backup events in Raw Events Storage.

Metadata Database

Schema based database where all repositories' metadata are stored. It's the main source of data for Metrics API.

Raw Events Storage

Can be Distributted File System or any Storage Service where we can backup raw events (just in case, if we want to re-publish them).

Local testing

Current implementation requires running PostgreSQL database (see docker-compose.yml file) with pre-created schema (see schema.sql file):

$ POSTGRES_DB=test POSTGRES_USER=user POSTGRES_PASSWORD=password  docker-compose up --no-deps postgres
$ psql -h localhost -U user -W  -d test < schema.sql

$ make test-all

metadata's People

Contributors

dennwc avatar kuba-- avatar vmarkovtsev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.