Q: Why is it Called hurtle?
A: Cos we like turtles and recursion.
Q: What is your motto?
A: "Confusing name, simple orchestration".
hurtle lets you:
offer your software as a service i.e. "hurtle it!"
Hurtle lets you automate the life-cycle management of your service, from deployment of cloud resources all the way to configuration and runtime management (e.g., scaling).
*But here comes the best part: *
hurtle has been designed since its inception to support service composition, so that you can run complex services by (recursively!) composing simple ones. Welcome to truly modular cloud service composition! Microservices anyone?
hurtle enables service and infrastructure orchestration to easily compose, deploy, provision and manage distributed systems
Its functionality all revolves around this idea, so the service offered is also one that can be designed with the cloud in mind, based on the cloud-native application research of the ICCLab.
hurtle has two origins in:
- the ICCLab's Cloud Orchestration Initiative
- the telcom world and in particular Network Function Virtualisation (NFV). Here hurtle has been used to offer services that have been to date executed directly on or embedded in hardware.
And well, it's all powered upon another hurtle ;-)
Questions that Hurtle Aims to Address
- How to monetise your software?
- How to deliver your software as a service?
- How to compose existing services?
- How deliver and maintain reliability?
This repository provides documentation for hurtle and
pointers to the other repositories that make up a complete hurtle system.
See the repository list.
hurtle consists of the following components:
For more details, see:
- Complete orchestration of your software
- Resources it uses (e.g. virtual machines, networks)
- External services it needs
- Multi-dc/multi-region support
- including inter-DC connectivity
- Easy implementation of your service API - See how to write your Hurtle Service
- Guided implementation of your service instance manager
- Many languages supported including Python, Java, Perl, PHP
- Demo applications available
- Scalable runtime management
- Complete end-to-end logging of your software
- Integration with OpenStack, ICCLab's Joyent SDC contribs
- Handle potential incidents of your software
- Bill for your software and services
- Leverages Open Cloud Standards (OCCI, OpenStack)
How Does hurtle Work?
The easiest way to understand how hurtle works is through how its life cycle of an application is managed. There are 6 key phases to understand:
Design: where the topology and dependencies of each service component is specified. The model here typically takes the form of a graph.
Implementation: This is where the developer(s) needs to implement the actual software that will be provided as a service through hurtle
Deploy: the complete fleet of resources and services are deployed according to a plan executed by hurtle. At this stage they are not configured.
Provision: each resource and service is correctly provisioned and configured by hurtle. This must be done such that one service or resource is not without a required operational dependency (e.g. a php application without its database).
Runtime: once all components of an hurtle orchestration are running, the next key element is that they are managed. To manage means at the most basic level to monitor the components. Based on metrics extracted, performance indicators can be formulated using logic-based rules. These when notified where an indicator’s threshold is breached, an Orchestrator could take a remedial action ensuring reliability.
Disposal: Where a hurtle service instance is destroyed.
More details are in the logical and technical architecture documents.
A complete installation guide can be found here
Note: The Vagrant boxes are quiet demanding (6GB and 2GB of RAM) on your System.
The Vagrant boxes give you a complete environment to play around: OpenStack, OpenShift and the hurtle-sample-so are preinstalled.
# Clone this repo
git clone https://github.com/icclab/hurtle.git
# Spin up the Vagrant boxes
# Grab a coffee, this could take a while (~3GB download)
# Once the machines are booted up, check out the hurtle-sample-so README file
Hurtling along soon:
- More examples including the cloud native Zurmo implementation from ICCLab
- Enhanced workload placement, dynamic policy-based
- Support for docker-registry deployed containers
- Runtime updates to service and resource topologies
- CI and CD support
- safe monitored dynamic service updates
- TOSCA support
- Support for VMware and CloudStack
- User interface to visualise resource and services relationships
- Additional external service endpoint protocol support
Community & Support
Report bugs and request features using GitHub Issues. For additional resources, you can contact the maintainers directly. Community discussion about turtle happens in one main place:
You can follow @hurtle_it on
Twitter for updates and of course on the ICCLab blog
To report bugs or request features, submit issues here on
If you're contributing code, make pull requests to the appropriate
repositories (see the repo overview).
If you're contributing something substantial, you should first contact
developers on the hurtle-discuss mailing list
For urgent questions please contact the maintainers directly.
Hurtle repositories follow no written Guidelines to date.
hurtle is licensed under the
Apache License version 2.0.
See the file LICENSE.