Coder Social home page Coder Social logo

christopherthielen / front50 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from spinnaker/front50

0.0 1.0 0.0 2.27 MB

Cross-Application Persistence Service

License: Apache License 2.0

HTML 0.04% Java 64.31% Groovy 27.32% Shell 0.26% Kotlin 8.07%

front50's Introduction

Front50

Build Status

Front50 is the system of record for all Spinnaker metadata, including: application, pipeline and service account configurations.

All metadata is durably stored and served out of an in-memory cache.

Internals

Persistence

The following storage backends are supported:

  • Amazon S3
  • Google Cloud Storage
  • Redis
  • SQL - recommended

SQL is a cloud agnostic storage backend that offers strong read-after-write consistency and metadata versioning.

Metadata

The following types are represented in Front50 (data models):

Type Description
Application Defines a set of commonly named resources managed by Spinnaker (metadata includes name, ownership, description, source code repository, etc.).
Application Permission Defines the group memberships required to read/write any application resource.
Entity Tags Provides a general purpose and cloud agnostic tagging mechanism.
Notification Defines application-wide notification schemes (email, slack and sms).
Pipeline Defines a reusable delivery workflow (exists within the context of a specific application).
Pipeline Strategy Defines a custom deployment strategy (exists within the context of a specific application).
Project Provides a (many-to-many) grouping mechanism for multiple applications.
Service Account Defines a system identity (with group memberships) that can be associated with one or more pipeline triggers.

Domain

We strive to make it easy to introduce additional metadata attributes; models are simple objects and serialized to JSON at persistence time.

Migrators for non-trivial attribute changes are supported via implementations of the Migration interface.

The StorageServiceSupport class maintains an in-memory cache for each metadata type and delegates read/write operations to a storage backend-specific StorageService implementation.

Relevant Metrics

The following metrics are relevant to overall Front50 health:

| Metric | Description | Grouping | | controller.invocations (count) | Invocation counts. | controller | | controller.invocations (average) | Invocation times. | controller, statusCode and method | | controller.invocations (count) | All 5xx responses. | controller, statusCode and status = 5xx |

Debugging

To start the JVM in debug mode, set the Java system property DEBUG=true:

./gradlew -DDEBUG=true

The JVM will then listen for a debugger to be attached on port 8180. The JVM will not wait for the debugger to be attached before starting Front50; the relevant JVM arguments can be seen and modified as needed in build.gradle.

Modular builds

By default, Front50 is built with all storage providers included. To build only a subset of providers, use the includeProviders flag:

./gradlew -PincludeProviders=s3,gcs clean build

You can view the list of all providers in gradle.properties.

Working Locally

The tests are setup to only run if needed services are available.

S3

S3 TCK only run if there is a s3 proxy available at 127.0.0.1:9999

This can be provided with the following command:

docker run -d -p9999:80 \
  --env S3PROXY_AUTHORIZATION="none" \
  --env JCLOUDS_PROVIDER="filesystem" \
  --env JCLOUDS_IDENTITY="remote-identity" \
  --env JCLOUDS_CREDENTIAL="remote-credential" \
  andrewgaul/s3proxy

When running the S3 TCK via an IDE make sure to have env AWS_ACCESS_KEY_ID and AWS_SECRET_KEY set to null otherwise the tests will timeout, the gradle test task is already configured this way.

front50's People

Contributors

ajordens avatar anotherchrisberry avatar asher avatar beckje01 avatar brandonnelson3 avatar cfieber avatar christopherthielen avatar danielpeach avatar danveloper avatar dibyom avatar dzapata avatar ejizba avatar emjburns avatar ezimanyi avatar gregturn avatar guoyongzhang avatar jervi avatar jeyrschabu avatar jonsie avatar jtk54 avatar lwander avatar maggieneterval avatar marchello2000 avatar nwwebb avatar plumpy avatar robfletcher avatar robzienert avatar spinnakerbot avatar srekapalli avatar tomaslin 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.