Code Monkey home page Code Monkey logo

dcos-commons's Introduction

Quick Start | Developer Guide | FAQ | Javadocs | Contributing | Slack

========= DC/OS SDK is a collection of tools, libraries, and documentation for easy integration and automation of stateful services, such as databases, message brokers, and caching services.

Status

DC/OS SDK is currently in alpha stage: it can run services, but APIs change regularly, and features are under active development.

Benefits

  • Simple and Flexible: The SDK provides the simplicity of a declarative YAML API as well as the flexibility to use the full Java programming language.

  • Automate Maintenance: Stateful services need to be maintained. With the SDK, you can automate maintenance routines, such as backup and restore, to simplify operations.

  • Production-Proven: Building reliable services is hard. Uber and Bing platform teams use the SDK for mission-critical databases and message brokers.

===============

Quick Start

From a workstation with 8G Memory, Git, VirtualBox 5.0.x, and Vagrant 1.8.4, run:

  1. Download the DC/OS SDK.
git clone https://github.com/mesosphere/dcos-commons.git
  1. Create your local development environment.
cd dcos-commons/ && ./get-dcos-docker.sh
  • Visit the DC/OS cluster dashboard to verify your development environment is running.
  1. Enter your development environment.
cd tools/vagrant/ && vagrant ssh
  1. Build your hello-world example project.
cd /dcos-commons/frameworks/helloworld/ && ./build.sh local
  1. Start your hello-world DC/OS service.
dcos package install hello-world
  1. Explore your hello-world service.
  • Visit the dashboard to see your hello-world service running.
  • Click through to one of your tasks (e.g. world-server-1-<uuid>), select the Files tab, select world-container-path, and finally select the output file.

===============

Understanding the Hello World Service Specification

The service specification declaratively defines the helloworld service:

name: "helloworld"
pods:
  helloworld:
    count: {{COUNT}}
    tasks:
      server:
        goal: RUNNING
        cmd: "echo 'Hello World!' >> helloworld-container-volume/output && sleep 10"
        cpus: {{SERVER_CPU}}
        memory: 32
        volume:
          path: "helloworld-container-volume"
          type: ROOT
          size: 64

In above yaml file, we have:

  • Defined a service with the name helloworld
  • Configured the service to use ZooKeeper at master.mesos:2181 for storing framework state and configuration.
  • Configured the API port using api-port: 8080. By default, each service comes with a default set of useful APIs to enable operationalization.
  • Defined a pod specification for our helloworld pod using:
pods:
  helloworld:
    count: {{COUNT}}
    tasks:
      ...
  • Declared that we need atleast {{COUNT}} instances of the helloworld pod running at all times, where COUNT is the environment variable that is injected into the scheduler process at launch time via Marathon. It defaults to 1 for this example.
  • Defined a task specification for our server task using:
tasks:
  server:
    goal: RUNNING
    cmd: "echo 'Hello World!' >> helloworld-container-volume/output && sleep 10"
    cpus: {{SERVER_CPU}}
    memory: 32

We have configured it to use {{SERVER_CPU}} CPUs (which defaults to 0.5 for this example) and 32 MB of memory.

  • And finally, configured a 64 MB persistent volume for our server task where the task data can be persisted using:
volume:
  path: "helloworld-container-volume"
  type: ROOT
  size: 64

===============

References

===============

Contributions

Contributions are welcome! See CONTRIBUTING.

===============

License

DC/OS SDK is licensed under the Apache License, Version 2.0.

dcos-commons's People

Contributors

activatedgeek avatar adragomir avatar benclarkwood avatar dgrnbrg avatar dylanwilder avatar gabrielhartmann avatar jsrodman avatar karya0 avatar keithchambers avatar kow3ns avatar loren avatar mbdcos avatar mgummelt avatar mohitsoni avatar mrbrowning avatar nickbp avatar nimavaziri avatar nlsun avatar sascala avatar ssk2 avatar susanxhuynh avatar timcharper avatar triclambert avatar varungup90 avatar verma7 avatar xtenzo avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

ddragosd pjdayton

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.