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:
- Service Manager (SM): receives requests for new tenant service instances → Code
- Service Orchestrator (SO): manages the lifecycle of a tenant service instance → Sample code
- CloudController (CC): manages and abstracts underlying resources and SOs → Code
- Cloud Controller SDK: provides an easy interface to the facilities of the CC.
For more details, see:
- hurtle's Architecture for overall logical architecture.
- hurtle's Technical Architecture for details on the implementation of the support components.
- hurtle's How to write your Hurtle Service? for details on the components necessary to create a hurtle manageable service. Note that a lot of information can also be found directly in the examples provided here!
- hurtle Reference & Repolist for an overview of each component.
- 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
- Integration with ICCLab's Watchtower (Cloud Incident Management)
- Bill for your software and services
- Integration with ICCLab's Cyclops (Rating, charging & Billing)
- 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.
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 cd vagrant vagrant up # 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:
- The hurtle-discuss mailing list. Once you subscribe to the list, you can send mail to the list address: email@example.com The mailing list archives are also available on the web.
To report bugs or request features, submit issues here on GitHub.. 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 (subscribe).
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.