Giter Site home page Giter Site logo

amieka / priority-operation-processing Goto Github PK

View Code? Open in Web Editor NEW

This project forked from comcast/priority-operation-processing

0.0 1.0 0.0 7.31 MB

A workflow orchestration system where the workflow is scheduled as a unit giving resource priority once selected. Priority queuing and customizable scheduling algorithms. Customer aware for multi-tenant. A JSON DAG based blueprint defines the execution flow. Executes operations within a workflow by spinning up on-demand Kubernetes Pods (dynamic resource allocation)

License: Apache License 2.0

Java 88.39% Dockerfile 0.15% Shell 0.08% HTML 2.31% CSS 6.07% JavaScript 2.99%

priority-operation-processing's Introduction

Priority Operation Processing (POP)

What is Priority Operation Processing?

  • A workflow orchestration system where the workflow is scheduled as a unit giving resource priority once selected

  • Priority queuing and customizable scheduling algorithms

  • Customer aware for multi-tenant

  • Authentication via AWS Authorizer

  • Data object visibility for allowed customers

  • A JSON DAG based blueprint defines the execution flow

  • Executes operations within a workflow by spinning up on-demand Kubernetes Pods (dynamic resource allocation)

images/pop-design.png

Technologies

  • API Gateway

  • AWS Authorizer

  • Lambda

  • SQS

  • Dynamo

  • CloudFormation

  • CloudWatch

  • Kubernetes

  • Kubernetes Annotations

  • Docker

  • Graphite

Components

Step 1: Submission

Workflow (Agenda) POP's workflow data model is called an Agenda.

Features

  • Simple list of operations

  • Node Graph / DAG model

  • Variable referencing between operations

  • Non-strict API for inputs / outputs of each operation

  • Agenda decoupling from underlying execution technologies / APIs. Each operation has a JSON payload that adheres to the API of the POP Handler that will perform the op.

  • The Agenda Executor will immediately run an operation as long as dependency variables are met

  • The Agenda Executor will look up Docker image by operation type and spin up a new Kubernetes Pod for the operation

Step 2: Scheduling

Scheduling

Step 3: Execution

Execution

Technology Solutions

Scheduling

  • Supports different scheduling algorithms for work queues (FIFO, Fairness, Priority)

  • Queues are scheduled asynchronously, no more heavy calculations at the time work is requested

  • Queues are defined by Insights (key words / identifiers / key-value pairs)

  • Queue sizes are configurable

Pluggable support for new technologies

  • Dynamic spinning up of Pods with Docker Images

  • No strict schema registration for new POP Handlers

  • No zoning hassles

  • No account permissions per handler

  • Simple Docker image configuration for new Handlers

Scalability / Cloud / Bare-metal

  • Kubernetes

  • Each POP Handler does one job

  • Handlers are spun up dynamically and control their CPU requirements for dependent Pods

Multiple centers for processing content

  • Support for centers behind firewalls to have their own Kubernetes cluster do the content processing

  • Namespace segregation for customers wanting isolated resources within the same cluster

Parallel processing

  • Able to parallel process operations with no waiting dependencies.

For more information visit the wiki.

priority-operation-processing's People

Contributors

brittanyistenes avatar rotnella avatar nhmkdev avatar

Watchers

James Cloos 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.