Giter Club home page Giter Club logo

prevant's Introduction

PREvant In a Nutshell

PREvant is a small set of docker containers that serves as an abstraction layer between continuous integration pipelines and some container orchestration platform. This abstraction serves as a reviewing platform to ensure that developers have built the features that domain expert requested.

PREvant's name originates from this requirement: Preview servant (PREvant, prɪˈvɛnt, it's pronounced like prevent) serves developers to deploy previews of their application as simple as possible when their application consists of multiple microservices distributed across multiple source code repositories. These previews should PREvant to do mistakes in feature development because domain experts can review changes as soon as possible.

In a nutshell

Through PREvant's web interface domain experts, managers, developers, and sales experts can review and demonstrate the application development.

Access the application

Usage

Have a look at docker-compose.yml and use following command to start PREvant.

docker-compose up -d

Now, PREvant is running at http://localhost.

If you want to customize PREvant's behaviour, you can mount a TOML file into the container at the path /app/config.toml. You will find more information about the configuration here.

Requirements for Your Services

PREvant is able to show the version of your service (build time, version string, and git commit hash) and also to integrate your API specification into the frontend through Swagger UI. In order to show the information, PREvant tries to resolve it by using the web-based protocol proposed by RFC 6415.

When you request the list of apps and services running through the frontend, PREvant makes a request for each service to the URL .well-known/host-meta.json and expects that the resource provides a host-meta document serialized as JSON:

{
  "properties": {
    "https://schema.org/softwareVersion": "0.9",
    "https://schema.org/dateModified": "2019-04-09T15:31:01.363+0200",
    "https://git-scm.com/docs/git-commit": "43de4c6edf3c7ed93cdf8983f1ea7d73115176cc"
  },
  "links": [
    {
      "rel": "https://github.com/OAI/OpenAPI-Specification",
      "href": "https://example.com/master/service-name/swagger.json"
    }
  ]
}

This sample document contains the relevant information displayed in the frontend (each information is optional):

  • The software version of the service (see https://schema.org/softwareVersion)
  • The build time of the service (see https://schema.org/dateModified)
  • The git commit id of the service (see https://git-scm.com/docs/git-commit)
  • The link to the API specification (see https://github.com/OAI/OpenAPI-Specification)

In order to generate the correct link the API specification PREvant adds following headers to each of these requests:

Further Readings

PREvant's concept has been published at the conference Microservices 2019 in Dortmund. You can read the abstract here.

The talk is available on YouTube. Click on the image to start the playback:

Video “PREvant: Composing Microservices into Reviewable and Testable Applications” at Microservices 2019

prevant's People

Contributors

schrieveslaach avatar mkemmann avatar x1b 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.