Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mesosphere/chaos
A lightweight framework for writing REST services in Scala.
https://github.com/mesosphere/chaos
dcos dcos-orchestration-guild
Last synced: 3 months ago
JSON representation
A lightweight framework for writing REST services in Scala.
- Host: GitHub
- URL: https://github.com/mesosphere/chaos
- Owner: mesosphere
- License: apache-2.0
- Created: 2013-06-25T14:53:40.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2019-04-15T12:17:35.000Z (over 5 years ago)
- Last Synced: 2024-06-19T03:03:54.060Z (5 months ago)
- Topics: dcos, dcos-orchestration-guild
- Language: Scala
- Homepage:
- Size: 227 KB
- Stars: 249
- Watchers: 151
- Forks: 36
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rest - Chaos - A lightweight framework for writing REST services in Scala. (Servers / Scala)
- awesome-scala - chaos - activity/y/mesosphere/chaos) (Table of Contents / Web Frameworks)
README
# Chaos
A lightweight framework for writing REST services in Scala.
[Chaos](https://en.wikipedia.org/wiki/Chaos_%28cosmogony%29) (Greek χάος, khaos) refers to the formless or void state preceding the creation of the universe or cosmos in the Greek creation myths. Chaos (the framework) precedes creation of a universe of services.
## Why yet another framework?
At [Mesosphere](https://mesosphere.com/) we're building REST services in Scala, and we wanted a solid foundation. We had experience with [Dropwizard](https://github.com/dropwizard/dropwizard) and [Twitter Commons](https://github.com/twitter/commons), which are both great Java frameworks, but are a bit hard to use from Scala.
We also experimented with [Play!](https://github.com/playframework/playframework), but it does many things besides REST, which adds unnecessary baggage.### Design Goals
We wanted a framework that
* is easy to use
* does one thing really well (REST)
* feels good in Scala
* is built on battle-tested and well-supported libraries
* doesn't try to reinvent the wheel### Building Blocks
There are great JVM libraries for every part of a REST stack. Chaos just glues these together.
* [Jersey](https://jersey.java.net/) for REST via annotations
* [Guava](https://code.google.com/p/guava-libraries/) for lifecycle management and various utilities
* [Jetty](http://www.eclipse.org/jetty/) as the web server and servlet container
* [Jackson](http://wiki.fasterxml.com/JacksonHome) for JSON support
* [Coda Hale's Metrics](https://github.com/dropwizard/metrics) for JVM and application metrics## Getting Started
### Requirements
* JDK 1.8+
* SBT 0.13.x+### Example App
There is an example app in [src/main/scala/mesosphere/chaos-examples/]
(https://github.com/mesosphere/chaos/blob/master/chaos-examples/src/main/scala/mesosphere/chaos/examples/Main.scala). To run the example:sbt run
Make requests to the example endpoints with [HTTPie](https://github.com/jkbrzt/httpie):
http localhost:8080/persons
http localhost:8080/persons name=Bunny age=42### Built in Endpoints
* `/ping` - health check.
* `/metrics` - metrics as JSON
* `/logging` - configure log levels at runtime### Using Chaos in your Project
Chaos releases are available from Mesosphere's Maven repository.
#### Maven
To add Chaos to a Maven project, add this to your `pom.xml`:
0.5.2
...
mesosphere-public-repo
Mesosphere Public Repo
http://downloads.mesosphere.io/maven
...
mesosphere
chaos
${chaos.version}
#### SBT
To add Chaos to an SBT project, add this to your `build.sbt`:
resolvers += "Mesosphere Public Repo" at "http://downloads.mesosphere.io/maven"
libraryDependencies ++= Seq(
"mesosphere" % "chaos" % "0.5.2",
"com.sun.jersey" % "jersey-bundle" % "1.17.1"
)## Getting Help
If you have questions, please post on the [Chaos Users Group](https://groups.google.com/forum/?hl=en#!forum/chaos-users) email list.
The team at [Mesosphere](https://mesosphere.com/) is also happy to answer any questions.## Authors
* [Tobias Knaup](https://github.com/guenter)
* [Florian Leibert](https://github.com/florianleibert)## Current Users
* [Chronos](https://github.com/mesos/chronos), a fault tolerant job scheduler that handles dependencies and ISO8601 based schedules.