Giter Club home page Giter Club logo

squbs's Introduction

image

Join the chat at https://gitter.im/paypal/squbs Build Status Codacy Badge Codacy Coverage Maven Central License

squbs (pronounced "skewbs")is a software container and a suite of components enabling standardization and operationalization of Akka and Spray applications/services in a large scale, managed, cloud environment. It standardizes how Akka/Spray applications are deployed in different environments and how they are hooked up to the operational environments of large, internet-scale organizations.

##squbs Components

  1. Unicomplex: The micro-container that bootstraps and standardizes the deployment of Akka/Spray applications and how they are configured, allowing teams other than PD to understand the configuration and tweak the configuration of applications, partly at runtime, as needed. In addition, the Unicomplex encourages coexistence of different modules, called cubes, and/or operational tooling in a flexible, loosely-coupled fashion that will not incur any code change in order to include new ops tooling or drop out/change some ops tooling. For instance, in cases where we have mixed cloud environments such as private and public cloud needing different operational tools, the same codebase will work with both allowing deployment-time addition of environment-specific tooling.

  2. TestKit: Used to help test applications written for squbs, or even Akka applications altogether. It provides unit test and small scale load testing facilities that can be run as part of CI.

  3. ZKCluster: A ZooKeeper-based, datacenter-aware clustering library allowing clustered applications or services to span datacenter and hold the availability characteristics across data centers. This is needed for applications that need intra-cluster communications.

  4. HttpClient: An operationalized, simplified client that supports both environment and endpoint resolution to fit into different operational environments (QA, Prod) as well as organizational requirements (Topo, direct).

  5. Pattern: A set of programming patterns and DSLs provided to users.

  6. Orchestration DSL allowing developers to describe their orchestration sequence in an extremely concise manner while running the whole orchestration asynchronously, thus largely simplifying code and reduces latency for the application.

  7. Asynchronous systems depend heavily on timeouts and fixed timeouts are never right. TimeoutPolicy allows users to set policy (like 2.5 sigma) instead of fixed timeout values and takes care of the heuristics by itself allowing systems to adapt to their operating conditions.

  8. Spray doesn't have friendly API for Java, the spray.japi package provides a few of Helpers and Factories to help Java developers to construct spray entities easily.

  9. Validation provides a Spray directive for data validation by using Accord Validation Library.

  10. PersistentBuffer provides a high-performance Akka Streams flow buffer component that persists its content to a memory-mapped file and recovers the content after failure and restart.

  11. ActorRegistry: A core lookup facility allowing actors of loosely-coupled modules to find each others, or even to model different services as actors.

  12. ActorMonitor: An add-on operational module that uses JMX to report the stats and behavior of actors in the system. These stats can be seen by any JMX tooling

  13. Pipeline: An infrastructure allowing sequencing and plugging in of request/response filters. These are used, for instance, for security, rate limiting, logging, etc. Each of the components have virtually no dependency on each others. They are truly loosely coupled. Developers and organizations are free to pick and choose the components needed for their environment.

  14. Console: A drop-in module allowing web access to system and application stats through a simple web and service interface returning pretty-printed JSON.

###Experimental Support for Akka HTTP The following components are based on Akka HTTP and are considered experimental at this time. These are documented in greater detail under Experimental Support for Akka HTTP.

  1. StreamingPipeline: Akka streams version of the Pipeline, based upon Akka Streams' BidiFlow. It allows users or infrastructure teams to implement request/response filters as BidiFlow elements and registering them to the pipeline. This module may only be used if Akka HTTP experimental mode is enabled.

  2. Console for Akka HTTP: The squbs-admin-exp module replaces squbs-admin in Akka HTTP experimental mode. It uses the Akka HTTP interfaces instead of the Spray interfaces. In experimental mode, users have to modify their build.sbt and use this dependency instead of squbs-admin.

##Getting Started

The easiest way to getting started is to create a project from one of the squbs templates. The followings are currently available Activator templates:

Also check out these slightly more advanced samples.

##Documentation

##Contributing to squbs Thank you very much for contributing to squbs. Please read the contribution guidelines for the process.

##License squbs is licensed under the Apache License, v2.0

squbs's People

Contributors

akara avatar anilgursel avatar az-qbradley avatar dmartyanov avatar domdorn avatar elong408 avatar epd-alacarte avatar gitter-badger avatar harikiranvuyyuru avatar jamesluoau avatar keshin avatar mdathrika avatar phoenixsbk avatar pulukenata avatar sandrawolf avatar sarathchandran avatar tutufool avatar wleng avatar zhuchenwang avatar

Watchers

 avatar  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.