<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Apache Aurora</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
    <link href="/assets/css/main.css" rel="stylesheet">
	<!-- Analytics -->
	<script type="text/javascript">
		  var _gaq = _gaq || [];
		  _gaq.push(['_setAccount', 'UA-45879646-1']);
		  _gaq.push(['_setDomainName', 'apache.org']);
		  _gaq.push(['_trackPageview']);

		  (function() {
		    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
		    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
		    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
		  })();
	</script>
  </head>
  <body>
    <div class="container-fluid section-homepage-header">
  <div class="container">
    <div class="nav nav-bar">
      <img src="/assets/img/aurora_logo_dkbkg.svg" width="300"
           alt="Transparent Apache Aurora logo with dark background"/>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="/documentation/latest/">Documentation</a></li>
        <li><a href="/community/">Community</a></li>
        <li><a href="/downloads/">Downloads</a></li>
        <li><a href="/blog/">Blog</a></li>
      </ul>
    </div>
  </div>
  <div class="container">
    <div class="row text-center">
      <div class="col-md-8 col-md-offset-2">
        <h1>Aurora is a Mesos framework for <br />long-running services and cron jobs.</h1>
      </div>
    </div>
  </div>
</div>

    <div class="container-fluid section-dark-flow buffer">
  <div class="container">
    <div class="row">
      <div class="col-md-5 col-md-offset-1">
        <h2>What does Aurora do?</h2>
        <p>
        Aurora runs applications and services across a shared pool of machines,
        and is responsible for keeping them running, forever. When machines experience
        failure, Aurora intelligently reschedules those jobs onto healthy machines.
        </p>
      </div>
      <div class="col-md-4 col-md-offset-1">
        <iframe width="420" height="236" src="https://www.youtube.com/embed/asd_h6VzaJc" frameborder="0" allowfullscreen></iframe>
      </div>
    </div>
  </div>
</div>

<div class="container-fluid buffer">
  <div class="container">
  <h2 class="text-center">Key Aurora Features</h2>
  <div class="row">
    <div class="col-md-2 text-center"><p><span class="glyphicon glyphicon-tasks"></span></p></div>
    <div class="col-md-4"><h3>Rolling Updates with Automatic Rollback</h3><p>When updating a job, Aurora will detect the health and status of a deployment and automatically rollback if necessary.</p></div>
    <div class="col-md-2 text-center"><p><span class="glyphicon glyphicon-th"></span></p></div>
    <div class="col-md-4"><h3>Resource Quota and Multi-User Support</h3><p>Aurora has a quota system to provide guaranteed resources for specific applications, and can support multiple users to deploy services.</p></div>
  </div>
  <div class="row">
    <div class="col-md-2 text-center"><p><span class="glyphicon glyphicon-list-alt"></span></p></div>
    <div class="col-md-4"><h3>Sophisticated DSL</h3><p>Services are highly-configurable via a <a href="/documentation/latest/reference/configuration-tutorial/">DSL</a> which supports templating, allowing you to establish common patterns and avoid redundant configurations.</p></div>
    <div class="col-md-2 text-center"><p><span class="glyphicon glyphicon-cloud-upload"></span></p></div>
    <div class="col-md-4"><h3>Service Registration</h3><p>Aurora <a href="/documentation/latest/features/service-discovery/">announces</a> services to Apache ZooKeeper for discovery by clients like Finagle.</p></div>
  </div>
 </div>
</div>

  	<div class="container-fluid section-footer buffer">
      <div class="container">
        <div class="row">
		  <div class="col-md-2 col-md-offset-1"><h3>Quick Links</h3>
		  <ul>
		    <li><a href="/downloads/">Downloads</a></li>
            <li><a href="/community/">Mailing Lists</a></li>
			<li><a href="http://issues.apache.org/jira/browse/AURORA">Issue Tracking</a></li>
			<li><a href="/documentation/latest/contributing/">How To Contribute</a></li>     
		  </ul>
	      </div>
		  <div class="col-md-2"><h3>The ASF</h3>
          <ul>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
            <li><a href="http://www.apache.org/security/">Security</a></li>
          </ul>
		  </div>
		  <div class="col-md-6">
			<p class="disclaimer">&copy; 2014-2017 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. The <a href="https://www.flickr.com/photos/trondk/12706051375/">Aurora Borealis IX photo</a> displayed on the homepage is available under a <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">Creative Commons BY-NC-ND 2.0 license</a>. Apache, Apache Aurora, and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
        </div>
      </div>
    </div>

  </body>
</html>
