{"id":2032,"date":"2013-04-18T14:59:22","date_gmt":"2013-04-18T14:59:22","guid":{"rendered":"http:\/\/www.cloudcomp.ch\/?p=2032"},"modified":"2013-04-18T14:59:22","modified_gmt":"2013-04-18T14:59:22","slug":"dependability-modeling-testing-availability-from-an-end-users-perspective","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/","title":{"rendered":"Dependability Modeling: Testing Availability from an End User&#8217;s Perspective"},"content":{"rendered":"<p>In a former article we spoke about <a href=\"http:\/\/www.cloudcomp.ch\/2013\/04\/the-core-components-of-any-ha-strategy\/\">testing High Availability in OpenStack<\/a> with the <a href=\"https:\/\/github.com\/Netflix\/SimianArmy\/wiki\/Chaos-Home\">Chaos Monkey<\/a>. While the Chaos Monkey is a great tool to test what happens if some system components fail, it does not reveal anything about the general strengths and weaknesses of different system architectures.\u00a0 In order to determine if an architecture with 2 redundant controller nodes and 2 compute nodes offers a higher availability level than an architecture with 3 compute nodes and only 1 controller node, a framework for testing different architectures is required. The &#8220;<a href=\"http:\/\/homepages.laas.fr\/kaaniche\/documents\/Kaaniche-DSN2003\/Kaaniche-DSN2003.pdf\">Dependability Modeling Framework<\/a>&#8221; seems to be a great opportunity to evaluate different system architectures on their ability to achieve availability levels required by end users.<\/p>\n<p><strong>Overcome biased design decisions<\/strong><\/p>\n<p>The Dependability Modeling Framework is a hierarchical modeling framework for dependability evaluation of system architectures. Its purpose is to model different alternative architectural solutions for one IT system and then calculate the dependability characteristics of each different IT system realization. The calculated dependability values can help IT architects to rate system architectures before they are implemented and to choose the &#8220;best&#8221; approach from different possible alternatives. Design decisions which are based on Dependability Modeling Framework have the potential to be more reflective and less biased than purely intuitive design decisions, since no particular architectural design is preferred to others. The fit of a particular solution is tested versus previously defined criteria before any decision is taken.<\/p>\n<p><strong>Build models on different levels<\/strong><\/p>\n<div>The Dependability Models are built on four levels: the user level, the function level, the service level and the resource level. The levels reflect the method to first identify user interactions as well as system functions and services which are provided to users and then find resources which are contributing to accomplishment of the required functions. Once all user interactions, system functions, services and resources are identified, models are built (on each of the four levels) to assess the impact of component failures on the quality of the service delivered to end users. The models are connected in a dependency graph to show the different dependencies between user interactions, system functions, services and system resources. Once all dependencies are clear, the impact of a system resource outage to user functions can be calculated straightforward: if the failing resource was the only resource which delivered functions which were critical to the end user, the impact of the resource outage is very high. If there are redundant resources, services or functions, the impact is much less severe.<\/div>\n<div>The dependency graph below demonstrates how end user interactions depend on functions, services and resources.<\/div>\n<div>\n<figure id=\"attachment_2048\" aria-describedby=\"caption-attachment-2048\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2048\" alt=\"Dependability Graph\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg\" width=\"300\" height=\"81\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-500x136.jpeg 500w, https:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph.jpeg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2048\" class=\"wp-caption-text\">Fig. 1: Dependency Graph<\/figcaption><\/figure>\n<\/div>\n<p>The Dependability Model makes the impact of resource outages calculable. One could easily see that a Chaos Monkey test can verify such dependability graphs, since the Chaos Monkey effectively tests outage of system resources by randomly unplugging devices.\u00a0 The less obvious part of the Dependability Modelling Framework is the calculation of resource outage probabilities. The probability of an outage could only be obtained by regularly measuring unavailability of resources over a long time frame. Since there is no such data available, one must estimate the probabilities and use this estimation as a parameter to calculate the dependability characteristics of resources so far. A sensitivity analysis can reveal if the proposed architecture offers a reliable and highly available solution.<\/p>\n<p><strong><br \/>\nDependability Modeling on OpenStack HA Environment<\/strong><\/p>\n<p>Dependability Modeling could also be performed on the OpenStack HA Environment we use at ICCLab. It is obvious that we High Availability could be realized in many different ways: we could use e. g. a distributed <a href=\"http:\/\/www.drbd.org\/\">DRBD<\/a> device to store all data used in OpenStack and synchronize the DRBD device with <a href=\"http:\/\/clusterlabs.org\/\">Pacemaker<\/a>. Another possible solution is to build <a href=\"http:\/\/ceph.com\/\">Ceph<\/a> clusters and again use Pacemaker as synchronization tool. An alternative to Pacemaker is <a href=\"http:\/\/www.keepalived.org\/\">keepalived<\/a> which also offers synchronization and control mechanisms for Load Balancing and High Availability. And of course one could also think of using <a href=\"http:\/\/haproxy.1wt.eu\/\">HAProxy<\/a> for Load Balancing instead of Ceph or DRBD.<br \/>\nIn short: different architectures can be modelled. How this is done will be subject of a further blog post.<\/p>\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/architecture\/\">architecture<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/ceph\/\">Ceph<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/chaos-monkey\/\">Chaos Monkey<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/dependability\/\">dependability<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/dependability-modeling-framework\/\">dependability modeling framework<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/dependency-graph\/\">dependency graph<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/drbd\/\">DRBD<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/haproxy\/\">HAProxy<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/high-availability\/\">High Availability<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/keepalived\/\">keepalived<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/models\/\">models<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/openstack\/\">openstack<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/pacemaker\/\">pacemaker<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>In a former article we spoke about testing High Availability in OpenStack with the Chaos Monkey. While the Chaos Monkey is a great tool to test what happens if some system components fail, it does not reveal anything about the general strengths and weaknesses of different system architectures.  In order to determine if an architecture with 2 redundant controller nodes and 2 compute nodes offers a higher availability level than an architecture with 3 compute nodes and only 1 controller node, a framework for testing different architectures is required. The &#8220;Dependability Modeling Framework&#8221; seems to be a great opportunity to evaluate different system architectures on their ability to achieve availability levels required by end users.<\/p>\n","protected":false},"author":75,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[5,21],"tags":[45,70,74,106,108,109,117,174,179,204,222,240,246],"features":[],"class_list":["post-2032","post","type-post","status-publish","format-standard","hentry","category-articles","category-openstack-2","tag-architecture","tag-ceph","tag-chaos-monkey","tag-dependability","tag-dependability-modeling-framework","tag-dependency-graph","tag-drbd","tag-haproxy","tag-high-availability","tag-keepalived","tag-models","tag-openstack","tag-pacemaker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Dependability Modeling: Testing Availability from an End User&#039;s Perspective - Service Engineering (ICCLab &amp; SPLab)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dependability Modeling: Testing Availability from an End User&#039;s Perspective\" \/>\n<meta property=\"og:description\" content=\"In a former article we spoke about testing High Availability in OpenStack with the Chaos Monkey. While the Chaos Monkey is a great tool to test what happens if some system components fail, it does not reveal anything about the general strengths and weaknesses of different system architectures. In order to determine if an architecture with 2 redundant controller nodes and 2 compute nodes offers a higher availability level than an architecture with 3 compute nodes and only 1 controller node, a framework for testing different architectures is required. The &quot;Dependability Modeling Framework&quot; seems to be a great opportunity to evaluate different system architectures on their ability to achieve availability levels required by end users.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2013-04-18T14:59:22+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg\" \/>\n<meta name=\"author\" content=\"benn\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"benn\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/\"},\"author\":{\"name\":\"benn\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/7f2dc402a572b3fc950027b8b809c0d6\"},\"headline\":\"Dependability Modeling: Testing Availability from an End User&#8217;s Perspective\",\"datePublished\":\"2013-04-18T14:59:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/\"},\"wordCount\":693,\"commentCount\":2,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg\",\"keywords\":[\"architecture\",\"Ceph\",\"Chaos Monkey\",\"dependability\",\"dependability modeling framework\",\"dependency graph\",\"DRBD\",\"HAProxy\",\"High Availability\",\"keepalived\",\"models\",\"openstack\",\"pacemaker\"],\"articleSection\":[\"Articles\",\"OpenStack\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/\",\"name\":\"Dependability Modeling: Testing Availability from an End User's Perspective - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg\",\"datePublished\":\"2013-04-18T14:59:22+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/7f2dc402a572b3fc950027b8b809c0d6\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#primaryimage\",\"url\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg\",\"contentUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dependability Modeling: Testing Availability from an End User&#8217;s Perspective\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/7f2dc402a572b3fc950027b8b809c0d6\",\"name\":\"benn\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/432dd9c93af6d79a7b97feaee8c4bb7b88d9a3106b571ecc81ea2e7fecb0caf1?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/432dd9c93af6d79a7b97feaee8c4bb7b88d9a3106b571ecc81ea2e7fecb0caf1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/432dd9c93af6d79a7b97feaee8c4bb7b88d9a3106b571ecc81ea2e7fecb0caf1?s=96&d=mm&r=g\",\"caption\":\"benn\"},\"sameAs\":[\"http:\/\/blog.zhaw.ch\/icclab\"],\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/benn\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dependability Modeling: Testing Availability from an End User's Perspective - Service Engineering (ICCLab &amp; SPLab)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/","og_locale":"en_US","og_type":"article","og_title":"Dependability Modeling: Testing Availability from an End User's Perspective","og_description":"In a former article we spoke about testing High Availability in OpenStack with the Chaos Monkey. While the Chaos Monkey is a great tool to test what happens if some system components fail, it does not reveal anything about the general strengths and weaknesses of different system architectures. In order to determine if an architecture with 2 redundant controller nodes and 2 compute nodes offers a higher availability level than an architecture with 3 compute nodes and only 1 controller node, a framework for testing different architectures is required. The \"Dependability Modeling Framework\" seems to be a great opportunity to evaluate different system architectures on their ability to achieve availability levels required by end users.","og_url":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2013-04-18T14:59:22+00:00","og_image":[{"url":"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg","type":"","width":"","height":""}],"author":"benn","twitter_card":"summary_large_image","twitter_misc":{"Written by":"benn","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/"},"author":{"name":"benn","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/7f2dc402a572b3fc950027b8b809c0d6"},"headline":"Dependability Modeling: Testing Availability from an End User&#8217;s Perspective","datePublished":"2013-04-18T14:59:22+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/"},"wordCount":693,"commentCount":2,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg","keywords":["architecture","Ceph","Chaos Monkey","dependability","dependability modeling framework","dependency graph","DRBD","HAProxy","High Availability","keepalived","models","openstack","pacemaker"],"articleSection":["Articles","OpenStack"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/","url":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/","name":"Dependability Modeling: Testing Availability from an End User's Perspective - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg","datePublished":"2013-04-18T14:59:22+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/7f2dc402a572b3fc950027b8b809c0d6"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#primaryimage","url":"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg","contentUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/04\/Dependability_graph-300x81.jpeg"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/dependability-modeling-testing-availability-from-an-end-users-perspective\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Dependability Modeling: Testing Availability from an End User&#8217;s Perspective"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/7f2dc402a572b3fc950027b8b809c0d6","name":"benn","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/432dd9c93af6d79a7b97feaee8c4bb7b88d9a3106b571ecc81ea2e7fecb0caf1?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/432dd9c93af6d79a7b97feaee8c4bb7b88d9a3106b571ecc81ea2e7fecb0caf1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/432dd9c93af6d79a7b97feaee8c4bb7b88d9a3106b571ecc81ea2e7fecb0caf1?s=96&d=mm&r=g","caption":"benn"},"sameAs":["http:\/\/blog.zhaw.ch\/icclab"],"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/benn\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/2032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/75"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=2032"}],"version-history":[{"count":0,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/2032\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=2032"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=2032"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=2032"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=2032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}