Martin Blöchlinger is a researcher at the ICCLab.
After an IT apprenticeship and an additional year of programming experience he decided to study at the ZHAW. In summer 2014 he graduated (Bachelor of Science ZFH in Informatics) and a few weeks later started to work at the InIT in the focus area ‘Distributed Software Systems’. He is currently working on a project in the ‘Cloud-Native Applications‘ initiative.
Arcus is an internally funded project which focuses on correlating energy consumption with cloud usage information to enable a cloud provider to understand in detail how her energy is consumed – as energy continues to account for an increasing amount of a cloud provider’s operating costs, this issue is increasing in importance.
The work focuses on correlating cloud usage information obtained from Openstack (primarily via Ceilometer) with energy consumption information obtained from the devices, using a mix of internal readings and wireless metering infrastructure. It involves determining which users of the cloud stack are consuming energy at any point in time by fine-grained monitoring of the energy consumption in the system coupled with information on how the systems will be used.
The output of the project will be a tool which will enable an Openstack provider to see this relationship: it could be used by a public cloud provider to help them understand how their tariffing structure relates to their costs or for a private cloud operator to understand which internal applications or departments may be most responsible for energy consumption.
The project started in January 2014.
The primary focus of the Energy Theme is on reducing the energy consumption of cloud computing resources. As compute nodes consume most of the energy in cloud computing systems, work to date has been focused on reducing the energy consumed by compute loads, particularly within the Openstack context. Although, as servers get increasingly instrumented, it is clear that there is potential in understanding the energy consumption with finer granularity and ultimately this can lead to energy efficiencies and cost savings.
In the current work, the primary mechanism to achieve energy efficiencies is load consolidation combined with power control of servers. This could be augmented with managing server CPU power states, but it remains to be seen if this will lead to significant power savings. Another tool to achieve energy efficiencies is to add elastic load when the resources are underutilized – this does not reduce the overall energy consumption per se, but rather enables providers to get more bang for their energy buck.
The current architecture of the Cloud Energy Efficiency Subsystem is shown above with the components performing the following functions:
The specific interactions between these components is evolving as this is a work in progress.
At present, the theme comprises of two initiatives. These are
Since Amazon started offering cloud services (AWS) in 2006, cloud computing in all its forms became evermore popular and has steadily matured since. A lot of experience has been collected and today a high number of companies are running their applications in the cloud either for themselves or to offer services to their customers. The basic characteristics of this paradigm1 offer capabilities and possibilities to software applications that were unthinkable before and are the reason why cloud computing was able to establish itself the way it did.
In a nutshell, a cloud-native application (CNA) is a distributed application that runs on a cloud infrastructure (irrespective of infrastructure or platform level) and is in its core scalable and resilient as well as adapted to its dynamic and volatile environment. These core requirements are derived from the essential characteristics that every cloud infrastructure must by definition possess, and from user expectations. It is of course possible to run an application in the cloud that doesn’t meet all those criteria. In that case it would be described as a cloud-aware or cloud-ready application instead of a cloud-native application. Through a carefully cloud-native application design based on composed stateful and stateless microservices, the hosting characteristics can be exploited so that scalability and elasticity do not translate into significantly higher cost.
The Cloud-Native Computing Foundation (CNCF.io) and other industry groups are formed to shape the evolution of technologies that are container packaged, dynamically scheduled and microservices oriented.
Cloud-native applications are typically designed as distributed applications with a shared-nothing architecture composed of autonomous and stateless services that can horizontally scale and communicate asynchronously via message queues. The focus lies on the scalability and resilience of an application. The architecture style and current state of the art of how to design such applications is described with the term Microservices. While this is in no way the only way to architect cloud-native applications it is the current state of the art.
The following architecture has been initially analysed, refined and realised by the SPLab CNA initiative team with a business application (Zurmo CRM) based on the CoreOS/fleet stack as well as on Kubernetes.
More recent works include a cloud-native document management architecture with stateful and stateless microservices implemented as composed containers with Docker-Compose, Vamp and Kubernetes.
G. Toffetti, S. Brunner, M. Blöchlinger, J. Spillner, T. M. Bohnert: Self-managing cloud-native applications: design, implementation and experience. FGCS special issue on Cloud Incident Management, 2016.
S. Brunner, M. Blöchlinger, G. Toffetti, J. Spillner, T. M. Bohnert, “Experimental Evaluation of the Cloud-Native Application Design”, 4th International Workshop on Clouds and (eScience) Application Management (CloudAM), Limassol, Cyprus, December 2015. (slides; author version; IEEExplore/ACM DL: to appear)
Note: Latest posts are at the bottom.
Open Source Software
Josef Spillner: josef.spillner(at)zhaw.ch
1. On-Demand Self-Service, Broad Network Access, Resource Pooling, Rapid Elasticity and Measured Service as defined in NIST Definition of Cloud Computing