<script type="IN/MemberProfile" data-id="https://www.linkedin.com/in/mattstine" data-format="inline"  data-related="false"></script><script type="IN/MemberProfile" data-id="https://www.linkedin.com/in/mattstine" data-format="inline"  data-related="false"></script><script type="IN/MemberProfile" data-id="https://www.linkedin.com/in/mattstine" data-format="inline"  data-related="false"></script>{"id":3352,"date":"2015-08-27T15:10:52","date_gmt":"2015-08-27T12:10:52","guid":{"rendered":"http:\/\/www.altoros.com\/blog\/?p=3352"},"modified":"2018-06-22T14:48:40","modified_gmt":"2018-06-22T11:48:40","slug":"microservices-building-a-distributed-app-with-cf-and-spring","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/","title":{"rendered":"Microservices: Building a Distributed App with Cloud Foundry and Spring"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#How_does_it_all_come_together\" >How does it all come together?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#Splitting_a_monoliths_into_microservices\" >Splitting a monoliths into microservices<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#Using_a_PaaS_to_manage_microservices\" >Using a PaaS to manage microservices<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#Getting_business_questions_answered\" >Getting business questions answered<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#About_the_speaker\" >About the speaker<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#Related_slides\" >Related slides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#Related_video\" >Related video<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"How_does_it_all_come_together\"><\/span>How does it all come together?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In his talk delivered at SpringOne2GX 2014, Matt Stine goes over some strategies for building and managing a distributed microservices architecture. He also shares advice on how to succeed in building microservices and avoid overloading your operations team with unnecessary work. The main three take-aways are that:<\/p>\n<ol>\n<li>Business capabilities and the data model need to be separated into small meaningful units.<\/li>\n<li>It is better to use a Platform-as-a-Service, such as Cloud Foundry.<\/li>\n<li>There are many ways to query data that is spread across several locations\u2014e.g., you can use Lambda architecture.<\/li>\n<\/ol>\n<p><img decoding=\"async\" class=\"aligncenter size-large wp-image-3391\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/04\/appsdatacloud-141105114922-conversion-gate01-1024x622.jpg\" alt=\"Microservices 2 Matt Stine\" width=\"600\" \/><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Splitting_a_monoliths_into_microservices\"><\/span>Splitting a monoliths into microservices<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The first one might be the hardest. Dividing data that has always been stored in a single database can be a challenge. However, this step is critical to overall success. Matt Stine offers a plain strategy that can be employed by many businesses. He suggests using contexts to single out business capabilities and underline the data models associated with them. Once you know what activities and data belong to what context, you can build microservices around them. Then you can use a different data store with each microservice to get the features you need in terms of writing\/reading speed, transactions, etc.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Using_a_PaaS_to_manage_microservices\"><\/span>Using a PaaS to manage microservices<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The second point is running and managing all the services. If your system is large, this may be a potential nightmare for your operations team. In addition, how do the people working with your system know how to use each and every datastore type you employ?<\/p>\n<p>Fortunately, there is a kill-two-birds-with-one-stone way to solve both of these issues\u2014a platform, such as Cloud Foundry. A PaaS not only simplifies deployment, monitoring, and management of services, but also creates a level of abstraction between your operators\/developers and the underlying technology stack, automating the maintenance and mangement tasks associatied with it. E.g., you can provision a database for your service in minutes.<\/p>\n<p>There are quite some Cloud Foundry-based PaaSes available today. These include public cloud deployments, such as Pivotal Web Services and IBM Bluemix, complete with a selection of pre-installed managed services. On the other side of the spectrum are some options that can be deployed to a private data center\u2014e.g., Pivotal CF and the open source version of Cloud Foundry. Note that if you choose a private deployment, you may need to take care of service provisioning on your own.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Getting_business_questions_answered\"><\/span>Getting business questions answered<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Finally, a lot of those who are considering microservices wonder: &#8220;How do I get answers to my business questions if all the data and business logic are separated into dozens of small pieces?&#8221; or &#8220;How do I make queries that span several data stores associated with different microservices?&#8221; According to Matt Stine, there are many ways to accomplish this. For instance, you can use Lambda architecture. This approach makes it possible to process data both in real time and in batches, so you can even employ Hadoop and work with big data.<\/p>\n<p>Matt illustrates his points with a live demo of a distributed application for a movie rental service, based on SpringBox Microservices running on Pivotal Cloud Foundry. What&#8217;s cool about the app is that it was created in as little as 48 hours. This is a great demonstration of how automation tools, such as CF and the Spring framework, help to save time when building and managing software.<\/p>\n<p>&nbsp;<br \/>\n<div id=\"\" class=\"clearfix padded-panel\"><div class=\"details-box-wrapper\" style=\"\/* background-image:url(http:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/04\/cf-after-dark-apache-brooklyn.gif); *\/\"><div class=\"details-box-overlay details-box-overlay-a\"><\/div><div class=\"details-box\"><div class=\"section-title\">Altoros Take<\/div><div class=\"details-wrapper\"><div class=\"detail-item\"><div class=\"take\"><span>\n<p>As noted in Matt Stines talk, along with advantages, such as scalability and tighter release cycles, microservices also have a number of downsides, including implicit interfaces, significant operational overhead due to redundancy, and operational complexity. As a result, managing microservices-based systems can become a nightmare, unless you use a PaaS\u2014e.g., Cloud Foundry.<\/p>\n<p>Cloud Foundry takes away a lot of the headache associated with running distributed systems. Here is how it helps to solve the most common issues:<\/p>\n<ul>\n<li>\n<p><strong>Implicit interfaces.<\/strong> In Cloud Foundry, microservices are deployed as applications and communicate through CF Router. When a service is published, it gets a unique URL in the Cloud Foundry domain. URLs and application routes are created automatically when an application is deployed. Router handles communication between applications in CF in the same way as if they were accessed from outside CF. However, the traffic does not leave the private network. In general, communication between apps in CF is not standardized\u2014there are many different options with various trade-offs.<\/p>\n<\/li>\n<li>\n<p><strong>Significant operational overhead.<\/strong> With Cloud Foundry, application development is simplified considerably. It is just a part of application release life cycle. The PaaS handles development and staging, as well as production applications. There is no need to separate them into different IaaS deployments.<\/p>\n<\/li>\n<li>\n<p><strong>Operational complexity.<\/strong> Cloud Foundry automates scaling and deployment of applications, as well as health monitoring and load balancing. You will not have to create additional scripts to automate monitoring and scaling in your IaaS. In a PaaS, Router serves as a load balancer, so you do not have to add it as a separate component (like when you are using an IaaS).<\/p>\n<\/li>\n<li>\n<p><strong>Lack of DevOps skills.<\/strong> The high level of automation implemented in Cloud Foundry enables developers to concentrate on building and releasing applications. The development, testing, and production release processes are identical in terms of how you deploy. Additionally, the PaaS hides the complexity of the underlying IaaS solution.<\/p>\n<\/li>\n<\/ul>\n<p>You can find more details on how Cloud Foundry helps to address the challenges brought by microservices in <a href='https:\/\/www.altoros.com\/research-papers\/microservices-vs-monolithic-architectures-the-pros-cons-and-cloud-foundry-examples\/'>our guide<\/a>.<\/p>\n<\/span><\/div><\/div><\/div><\/div><\/div><\/div> <\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table width=\"100%\">\n<tbody>\n<tr>\n<td class=\"video-details-td\">\n<div style=\"float: right; width: 45%; padding-left: 15px; font-size: 14px;\"><strong>Table of contents<\/strong><\/p>\n<ol>\n<li>Why microservices? (1:05)<\/li>\n<li>How to modularize your data (2:33)<\/li>\n<li>Getting business questions answered (16:41)<\/li>\n<li>What is Lambda architecture? (17:32)<\/li>\n<li>Managing microservices with a PaaS (23:17)<\/li>\n<li>Sample microservices architecture (28:33)<\/li>\n<li>Lambda architecture with Spring XD (31:22)<\/li>\n<li>A sample app deployed to Pivotal Web Services (33:52)<\/li>\n<li>A live demo of the sample app (35:15)<\/li>\n<li>Gauging movie preferences (49:20)<\/li>\n<li>The master dataset (56:40)<\/li>\n<li>How to create reporting views (1:00:15)<\/li>\n<li>Event sourcing and microservices (1:07:44)<\/li>\n<li>Is the master dataset a single point of failure (1:09:06)<\/li>\n<li>Why is it better to have raw data in your master dataset? (1:14:03)<\/li>\n<li>Do you need to calculate batch view in the serving layer all the time? (1:16:23)<\/li>\n<li>Is Spring XD the new Greenplum? (1:18:09)<\/li>\n<\/ol>\n<\/div>\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"Apps + Data + Cloud: What Does It All Mean?\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/ObKGl0f5a7I?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_speaker\"><\/span>About the speaker<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><!-- Linkedin Profile Badge: http:\/\/3doordigital.com\/wordpress\/plugins\/linkedin-profile-badge\/ -->\r\n<script type=\"IN\/MemberProfile\" data-id=\"https:\/\/www.linkedin.com\/in\/mattstine\" data-format=\"inline\"  data-related=\"false\"><\/script><\/div>\n<div style=\"width: 450px;\"><small><a href=\"https:\/\/www.linkedin.com\/in\/mattstine\" target=\"_blank\">Matt Stine<\/a> is Senior Product Manager, Spring Cloud Services for Pivotal CF. His extensive experience embraces healthcare, biomedical research, e-commerce, and retail store domains. He is also a technical editor of the NFJS magazine and a recognized conference speaker who delivers sessions on project automation, continuous delivery, Lean and Agile software development, modern Web app testing, etc.<\/small><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<hr \/>\n<h3><span class=\"ez-toc-section\" id=\"Related_slides\"><\/span>Related slides<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" style=\"border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/41167694\" width=\"425\" height=\"355\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_video\"><\/span>Related video<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/iMvCOEsSuAc\" width=\"640\" height=\"360\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How does it all come together?<\/p>\n<p>In his talk delivered at SpringOne2GX 2014, Matt Stine goes over some strategies for building and managing a distributed microservices architecture. He also shares advice on how to succeed in building microservices and avoid overloading your operations team with unnecessary work. The main three take-aways [&#8230;]<\/p>\n","protected":false},"author":4,"featured_media":9947,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,146,206,28],"class_list":["post-3352","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-cloud-native","tag-microservices","tag-oss-cloud-foundry","tag-pivotal-cf"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Microservices: Building a Distributed App with Cloud Foundry and Spring | Altoros<\/title>\n<meta name=\"description\" content=\"This talk by Matt Stine of Pivotal includes a live demo that shows how to assemble and manage scalable microservices systems using Spring and Cloud Foundry.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Microservices: Building a Distributed App with Cloud Foundry and Spring | Altoros\" \/>\n<meta property=\"og:description\" content=\"This talk by Matt Stine of Pivotal includes a live demo that shows how to assemble and manage scalable microservices systems using Spring and Cloud Foundry.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2015-08-27T12:10:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-06-22T11:48:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Apps-Data-Cloud-What-Does-It-All-Mean3_2.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"393\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Volha Kurylionak\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Volha Kurylionak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/\",\"name\":\"Microservices: Building a Distributed App with Cloud Foundry and Spring | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Apps-Data-Cloud-What-Does-It-All-Mean3_2.gif\",\"datePublished\":\"2015-08-27T12:10:52+00:00\",\"dateModified\":\"2018-06-22T11:48:40+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/06996f567847f38d58a226481dac00d8\"},\"description\":\"This talk by Matt Stine of Pivotal includes a live demo that shows how to assemble and manage scalable microservices systems using Spring and Cloud Foundry.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Apps-Data-Cloud-What-Does-It-All-Mean3_2.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Apps-Data-Cloud-What-Does-It-All-Mean3_2.gif\",\"width\":700,\"height\":393,\"caption\":\"Apps-Data-Cloud-What-Does-It-All-Mean3_2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Microservices: Building a Distributed App with Cloud Foundry and Spring\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/06996f567847f38d58a226481dac00d8\",\"name\":\"Volha Kurylionak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/olga-kurilyonok-140x140.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/olga-kurilyonok-140x140.jpg\",\"caption\":\"Volha Kurylionak\"},\"description\":\"Volha Kurylionak is Technical Writer at Altoros, a Cloud Foundry activist, a technical blogger with 4+ years of experience, and a big fan of open source.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/volha-kurylionak\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Microservices: Building a Distributed App with Cloud Foundry and Spring | Altoros","description":"This talk by Matt Stine of Pivotal includes a live demo that shows how to assemble and manage scalable microservices systems using Spring and Cloud Foundry.","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:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/","og_locale":"en_US","og_type":"article","og_title":"Microservices: Building a Distributed App with Cloud Foundry and Spring | Altoros","og_description":"This talk by Matt Stine of Pivotal includes a live demo that shows how to assemble and manage scalable microservices systems using Spring and Cloud Foundry.","og_url":"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/","og_site_name":"Altoros","article_published_time":"2015-08-27T12:10:52+00:00","article_modified_time":"2018-06-22T11:48:40+00:00","og_image":[{"width":700,"height":393,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Apps-Data-Cloud-What-Does-It-All-Mean3_2.gif","type":"image\/gif"}],"author":"Volha Kurylionak","twitter_misc":{"Written by":"Volha Kurylionak","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/","url":"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/","name":"Microservices: Building a Distributed App with Cloud Foundry and Spring | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Apps-Data-Cloud-What-Does-It-All-Mean3_2.gif","datePublished":"2015-08-27T12:10:52+00:00","dateModified":"2018-06-22T11:48:40+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/06996f567847f38d58a226481dac00d8"},"description":"This talk by Matt Stine of Pivotal includes a live demo that shows how to assemble and manage scalable microservices systems using Spring and Cloud Foundry.","breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Apps-Data-Cloud-What-Does-It-All-Mean3_2.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Apps-Data-Cloud-What-Does-It-All-Mean3_2.gif","width":700,"height":393,"caption":"Apps-Data-Cloud-What-Does-It-All-Mean3_2"},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/microservices-building-a-distributed-app-with-cf-and-spring\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Microservices: Building a Distributed App with Cloud Foundry and Spring"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/06996f567847f38d58a226481dac00d8","name":"Volha Kurylionak","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/olga-kurilyonok-140x140.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/olga-kurilyonok-140x140.jpg","caption":"Volha Kurylionak"},"description":"Volha Kurylionak is Technical Writer at Altoros, a Cloud Foundry activist, a technical blogger with 4+ years of experience, and a big fan of open source.","url":"https:\/\/www.altoros.com\/blog\/author\/volha-kurylionak\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/3352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=3352"}],"version-history":[{"count":11,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/3352\/revisions"}],"predecessor-version":[{"id":34294,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/3352\/revisions\/34294"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/9947"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=3352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=3352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=3352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}