{"id":10842,"date":"2016-11-07T15:49:49","date_gmt":"2016-11-07T13:49:49","guid":{"rendered":"https:\/\/blog.zhaw.ch\/icclab\/?p=10842"},"modified":"2019-08-05T13:54:59","modified_gmt":"2019-08-05T11:54:59","slug":"container-management-with-vamp-practical-example","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/","title":{"rendered":"Container Management with Vamp: Practical Example"},"content":{"rendered":"\n<p>by <a href=\"https:\/\/blog.zhaw.ch\/icclab\/josef-spillner\/\">Josef Spillner<\/a><\/p>\n\n\n<p>In the world of containerized architectures, there are different and new container deployment and orchestration tools which help turning monolithic applications into running <a href=\"https:\/\/www.infoq.com\/presentations\/domain-service-aggregator\/\">composite microservices<\/a>. Some of them are intended to be used in a development environment like Docker-Compose or in a production environment like Kubernetes, Docker-Swarm or Marathon. Also, we can observe some tools executing atop other container schedulers, like Rancher or Vamp. In this blog post, we take a look at the latter while at the same time we continue to inspect the alternatives in order to compare all solutions eventually.<\/p>\n<p><!--more--><\/p>\n<p><a href=\"http:\/\/vamp.io\/\">Vamp<\/a> is an open source microservice platform that in this competitive new environment is focused on making canary releases possible and easy, and enable autoscaling among others advantages. The current version of Vamp is 0.9.1 with quite active changes in its <a href=\"https:\/\/github.com\/magneticio\/vamp\/graphs\/contributors\">Git repository<\/a>.<\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10852 size-large aligncenter\" title=\"topology-vamp\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-1024x471.png\" alt=\"topology-vamp\" width=\"584\" height=\"269\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-1024x471.png 1024w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-300x138.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-768x353.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-500x230.png 500w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a>In the previous&nbsp;image (from the Vamp <a href=\"http:\/\/vamp.io\/documentation\/how-vamp-works\/architecture-and-components\/\">documentation<\/a>),&nbsp;we can see the topology of Vamp. The requirements that Vamp needs for its work are:<\/p>\n<ul>\n<li>Container scheduler (one of: marathon, dc\/os, kubernetes, rancher, docker swarm)<\/li>\n<li>Key value store (one of: etcd, consul, zookeeper)<\/li>\n<li>Load balancer (haproxy)<\/li>\n<li>Search engine (elasticsearch)<\/li>\n<\/ul>\n<p>To create a blueprint for describing the (micro)services, connections and dependencies between them, gateways, environment variables or the properties for scaling these services, Vamp provides its own domain-specific language (<a href=\"http:\/\/vamp.io\/documentation\/using-vamp\/references\/\">DSL<\/a>) in a YAML format.<\/p>\n<p>We demonstrate how to deploy a simple three-tier architecture that we are running in a development environment with docker-compose into a production environment using Vamp. The application is a prototype mimicking the functionality of an actual industry use case, a document management application, in the context of our research on <a href=\"https:\/\/blog.zhaw.ch\/icclab\/category\/research-approach\/themes\/cloud-native-applications\/\">cloud-native applications<\/a>. All containers of the prototype can be found in the <a href=\"https:\/\/hub.docker.com\/u\/chumbo\/\">public Docker Hub<\/a> for reproducing our results. Interestingly, there is no community site yet for sharing <a href=\"http:\/\/vamp.io\/documentation\/using-vamp\/blueprints\/\">blueprints<\/a> or other composition artefacts to speed up deploying more complex application parts spanning multiple containers; we expect such a facility to become available soon nevertheless.<\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/3layer.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10853 size-full aligncenter\" title=\"3-layer\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/3layer.png\" alt=\"3-layer\" width=\"643\" height=\"133\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/3layer.png 643w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/3layer-300x62.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/3layer-500x103.png 500w\" sizes=\"auto, (max-width: 643px) 100vw, 643px\" \/><\/a>The first step was to install Vamp following the tutorial using Rancher in <a href=\"http:\/\/vamp.io\/\">Vamp.io<\/a>. Subsequently we could find the graphical dashboard of Vamp running on port 9090, and several backend systems on other ports.&nbsp;The blueprints that describe our architecture are as follows:<\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/blueprint-vamp.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10846 alignleft\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/blueprint-vamp-545x1024.png\" alt=\"blueprint-vamp\" width=\"285\" height=\"526\"><\/a><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/blueprint-docker-compose.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-10845\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/blueprint-docker-compose.png\" alt=\"blueprint-docker-compose\" width=\"236\" height=\"312\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/blueprint-docker-compose.png 548w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/blueprint-docker-compose-227x300.png 227w\" sizes=\"auto, (max-width: 236px) 100vw, 236px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: left\">In both images we can see how to translate the docker-compose DSL to the Vamp DSL.&nbsp;After deploying the Vamp blueprint using the dashboard, we can find our gateways and deployments.<\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/gateways-vamp.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10843\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/gateways-vamp-1024x232.png\" alt=\"gateways-vamp\" width=\"584\" height=\"132\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/gateways-vamp-1024x232.png 1024w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/gateways-vamp-300x68.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/gateways-vamp-768x174.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/gateways-vamp-500x113.png 500w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/deployment.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10848\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/deployment-1024x416.png\" alt=\"deployment\" width=\"584\" height=\"237\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/deployment-1024x416.png 1024w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/deployment-300x122.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/deployment-768x312.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/deployment-500x203.png 500w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/p>\n<p>Using the two main advantages that Vamp provides is very easy.&nbsp;For example we can scale the number of instances by changing a simple number.<\/p>\n<p><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Vamp-scale.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-10849\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Vamp-scale-1024x153.png\" alt=\"vamp-scale\" width=\"584\" height=\"87\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Vamp-scale-1024x153.png 1024w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Vamp-scale-300x45.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Vamp-scale-768x115.png 768w, https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/Vamp-scale-500x75.png 500w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><a href=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/canary-realease.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-10847 alignnone\" src=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/canary-realease.png\" alt=\"canary-realease\" width=\"327\" height=\"64\"><\/a><\/p>\n<p>Or, we can do a canary release by just changing the weight or the conditions of the cluster and hence routing requests to only old, only new or mixed deployments of our microservices.<\/p>\n<p>Among the limitations that we can find using Vamp are that one must learn a new DSL and its dependencies. For example, we can\u2019t use some of the features or advantages that usually reside in the orchestration scheduler (Kubernetes, Marathon, Rancher, &#8230;) or we can\u2019t update easily to the new version of this tool. Some of those disadvantages are however an industry-wide problem (i.e. lack of standardisation for microservice compositions, even though individual <a href=\"https:\/\/github.com\/kubernetes-incubator\/kompose\">transcoders<\/a> exist). Among the advantages of using Vamp is that the team behind it is approachable and reacts quickly; for instance, we identified a mistake in one of the tutorials and it was corrected soon after.<\/p>\n<p>Our future work encompasses the evaluation of a more fine-grained application structure with more microservices, the evaluation of more container management tools, and an extended analysis of stateful and stateless microservices.<\/p><div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/cloud-native-applications\/\">cloud-native applications<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/composition\/\">composition<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/containers\/\">containers<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/microservices\/\">microservices<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/runtime\/\">runtime<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>In the world of containerized architectures, there are different and new container deployment and orchestration tools which help turning monolithic applications into running composite microservices. Some of them are intended to be used in a development environment like Docker-Compose or in a production environment like Kubernetes, Docker-Swarm or Marathon. Also, we can observe some tools [&hellip;]<\/p>\n","protected":false},"author":486,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[551,622,609,566,821],"features":[],"class_list":["post-10842","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-cloud-native-applications","tag-composition","tag-containers","tag-microservices","tag-runtime"],"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>Container Management with Vamp: Practical Example - 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\/container-management-with-vamp-practical-example\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Container Management with Vamp: Practical Example\" \/>\n<meta property=\"og:description\" content=\"In the world of containerized architectures, there are different and new container deployment and orchestration tools which help turning monolithic applications into running composite microservices. Some of them are intended to be used in a development environment like Docker-Compose or in a production environment like Kubernetes, Docker-Swarm or Marathon. Also, we can observe some tools [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2016-11-07T13:49:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-05T11:54:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-1024x471.png\" \/>\n<meta name=\"author\" content=\"icclab\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"icclab\" \/>\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\/container-management-with-vamp-practical-example\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/\"},\"author\":{\"name\":\"icclab\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\"},\"headline\":\"Container Management with Vamp: Practical Example\",\"datePublished\":\"2016-11-07T13:49:49+00:00\",\"dateModified\":\"2019-08-05T11:54:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/\"},\"wordCount\":612,\"commentCount\":2,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-1024x471.png\",\"keywords\":[\"cloud-native applications\",\"composition\",\"containers\",\"microservices\",\"runtime\"],\"articleSection\":[\"*.*\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/\",\"name\":\"Container Management with Vamp: Practical Example - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-1024x471.png\",\"datePublished\":\"2016-11-07T13:49:49+00:00\",\"dateModified\":\"2019-08-05T11:54:59+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1.png\",\"width\":3308,\"height\":1520},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Container Management with Vamp: Practical Example\"}]},{\"@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\/045c6bde7e681e689e4fc051d8932563\",\"name\":\"icclab\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g\",\"caption\":\"icclab\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/icclab\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Container Management with Vamp: Practical Example - 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\/container-management-with-vamp-practical-example\/","og_locale":"en_US","og_type":"article","og_title":"Container Management with Vamp: Practical Example","og_description":"In the world of containerized architectures, there are different and new container deployment and orchestration tools which help turning monolithic applications into running composite microservices. Some of them are intended to be used in a development environment like Docker-Compose or in a production environment like Kubernetes, Docker-Swarm or Marathon. Also, we can observe some tools [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2016-11-07T13:49:49+00:00","article_modified_time":"2019-08-05T11:54:59+00:00","og_image":[{"url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-1024x471.png","type":"","width":"","height":""}],"author":"icclab","twitter_card":"summary_large_image","twitter_misc":{"Written by":"icclab","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/"},"author":{"name":"icclab","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563"},"headline":"Container Management with Vamp: Practical Example","datePublished":"2016-11-07T13:49:49+00:00","dateModified":"2019-08-05T11:54:59+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/"},"wordCount":612,"commentCount":2,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-1024x471.png","keywords":["cloud-native applications","composition","containers","microservices","runtime"],"articleSection":["*.*"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/","url":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/","name":"Container Management with Vamp: Practical Example - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1-1024x471.png","datePublished":"2016-11-07T13:49:49+00:00","dateModified":"2019-08-05T11:54:59+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/045c6bde7e681e689e4fc051d8932563"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1.png","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2016\/11\/topology-vamp-1.png","width":3308,"height":1520},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/container-management-with-vamp-practical-example\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"Container Management with Vamp: Practical Example"}]},{"@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\/045c6bde7e681e689e4fc051d8932563","name":"icclab","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7b13169e03783f50e96b96fa2ff222b9c530d13c3125f077c7c44f729b857a51?s=96&d=mm&r=g","caption":"icclab"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/icclab\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10842","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\/486"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=10842"}],"version-history":[{"count":6,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10842\/revisions"}],"predecessor-version":[{"id":12489,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/10842\/revisions\/12489"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=10842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=10842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=10842"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=10842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}