GithubHelp home page GithubHelp logo

isabella232 / mettle-1 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yougov/mettle

0.0 0.0 0.0 1.15 MB

License: MIT License

Makefile 0.99% Shell 3.18% Python 56.95% PLpgSQL 6.30% CSS 4.79% HTML 5.22% JavaScript 22.58%

mettle-1's Introduction

image

image

image

Mettle is a framework for managing extract/transform/load (ETL) jobs. ETL processes present a number of problems that Mettle is designed to solve:

Description

  • Jobs need to be run at specific times. Sometimes they need to be triggered by the completion of other jobs. Mettle supports scheduling both time-based and trigger-based jobs.
  • Various people in an organization need to be able to see job schedules and the state of recent runs. Naive scripts running on cron jobs, scattered amongst a large number of servers, create a serious problem with visibility. Mettle solves this by centralizing the job scheduling, state reporting, and log viewing.
  • Sometimes jobs fail because of temporary problems somewhere (a flaky network, a too-full disk). Mettle will automatically retry jobs to deal with this.
  • Sometimes jobs fail and will not be able to succeed until the job has been reconfigured (a changed password on a database, for example). Mettle makes it easy to manually re-launch a job after such issues have been resolved.
  • If you try to solve the above problems by centralizing all your ETL execution, you quickly run into a problem of proliferating dependencies. A centralized ETL service can become hard to develop and hard to deploy because all those dependencies (libraries, external APIs, external databases) introduce more instability. Mettle is designed to isolate those dependencies into separate ETL services, so instability in one ETL doesn't impact any others.

We picked the name "Mettle" because:

  • It's got the letters E, T, and L in it.
  • It means "ability to continue despite difficulties".
  • It sounds like "metal", which is solid.

Mettle is comprised of several components:

  • Web UI. Features:
    • Configure schedules for pipelines.
    • Display past jobs, both successful and failed.
    • Display currently-executing jobs, with live status updates and streaming logs.
    • Manually launch jobs.
  • Timer: Reads pipeline schedules from the database and sends out RabbitMQ messages when pipelines need to be kicked off.
  • Dispatcher: Records which jobs are being executed by which workers, and their eventual success or failure.
  • Logger: Receives log messages sent from ETL Services over RabbitMQ, and saves them to Postgres.
  • ETL Services: Implement the actual business logic and systems integration to move data between systems.

Mettle uses Postgres to store state, and RabbitMQ for inter-process communication.

mettle-1's People

Contributors

btubbs avatar jaraco avatar alejandro-rivera avatar dmonroy avatar dfdeshom avatar pawpro 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.