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.

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.