{"id":14487,"date":"2013-06-28T01:00:05","date_gmt":"2013-06-27T22:00:05","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=14487"},"modified":"2013-06-27T18:55:45","modified_gmt":"2013-06-27T15:55:45","slug":"distributed-system-development-considerations","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html","title":{"rendered":"Distributed System Development Considerations"},"content":{"rendered":"<p>There are a number of factors to take into account while developing distributed software systems. If you don\u2019t even know what I am talking about in the first\u00a0sentence\u00a0then let me give you some insight, examples and for instances of what distributed systems are.<\/p>\n<h2>Overview<\/h2>\n<p>A distributed system is when multiple\u00a0physical\u00a0hardware devices interact with\u00a0separate\u00a0and discrete users and collaborate together through these hardware devices to\u00a0accomplishes different and also similar\u00a0goals for these discrete and seperate users. \u00a0Sometimes these devices work in a pier-to-pier mode using servers as hubs for knowledge of connectivity\u00a0to each other while others collaborate and coordinate through a single or set of centralized servers e.g.<\/p>\n<p>An extranet like system where supply side users are reviewing documents through a web browser and click through a workflow in their browsers that ultimatly fax documents to another set of users that provide services that are\u00a0sufficiently\u00a0labeled\u2026 i.e. with a bar code. \u00a0This loop makes for a closed system to design and develop distributed software for. \u00a0The recipient of the faxes fill out and do whatever they need as part of their paper based world (including receiving many faxes over time and sending them all back in at once, which is another set of cases for another blog post on e-signing). \u00a0The receiving fax servers on receipt of the inbound original documents \u201chands\u201d the faxed images received over for collation and processing for yet another set of users (or even the same ones that originated the outbound fax) to review and work with them under an intake workflow again in their browser.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/06\/yo.png\"><img decoding=\"async\" class=\"aligncenter\" alt=\"\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2013\/06\/yo.png?w=595&amp;h=435\" width=\"595\" height=\"435\" \/><\/a><\/p>\n<p>Here you have many systems working together in the data center to\u00a0accomplish\u00a0different goals. You have some web servers for the user interface. Some data persistance layer for the workflow systems, analytics and reporting. \u00a0You have fax servers for management of the incoming\/outgoing fax transmissions (I like Dialogic Brooktrout Fax Boards myself\u00a0<a href=\"http:\/\/www.dialogic.com\/Products\/fax-boards-and-software\/fax-boards.aspx\" target=\"_blank\">http:\/\/www.dialogic.com\/Products\/fax-boards-and-software\/fax-boards.aspx<\/a>\u00a0). \u00a0You have the inbound and outbound labeling, stamping, collation, scanning and object character recognition components (usually a few different servers together depending on design likely not each a\u00a0separate\u00a0instance but likely a half dozen or so depending on scale).<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>The fabric underneath all of those components are what is consistent\u00a0across\u00a0all of them together. \u00a0 This starts at the OSI Layer because first and for most distributed systems are connected through\u00a0physical\u00a0layers of constraints so lets start there.<\/p>\n<h2>The Physical Layer Constraints<\/h2>\n<p>The <a href=\"http:\/\/en.wikipedia.org\/wiki\/OSI_model\" target=\"_blank\">OSI Layer<\/a> has either 7 or 9 layers depending on whom you speak with. \u00a0In some teams layers 8 and 9 are politics and religion (respectively) because social structures, methodologies and human behavior around all interactions to design, develop, deploy and maintain these systems have to be taken into account. \u00a0If you don\u2019t appreciate this then your application layer user experience is likely going to be wrong also. \u00a0Layers 1-7 (the more commonly known and often better understood layers) classify how computers move data through an interface for a user or computer and an interface to another computer for another computer or another user. \u00a0You can never do anything outside of the underlying layers without refactoring or creating new software in those layers. \u00a0So, its good to know how they work. You can do that some in your own software program writing works (please, please, pretty please) to better balance out processing constraints.<\/p>\n<p>Figure 30-1 of\u00a0<a href=\"http:\/\/fab.cba.mit.edu\/classes\/MIT\/961.04\/people\/neil\/ip.pdf\" target=\"_blank\">http:\/\/fab.cba.mit.edu\/classes\/MIT\/961.04\/people\/neil\/ip.pdf<\/a>\u00a0maps many of the protocols of\u00a0the Internet protocol suite and their corresponding OSI layers.<\/p>\n<h2>Where software continues within the hardware device<\/h2>\n<p>The operating system and its implementation for the local machine hardware is next and foremost. \u00a0I am hard pressed to pick many or any other layers or systems that are truelly part of the underly fabric depending on your hosting provider which\u00a0ultimately\u00a0is a vendor so thats a different story for another time too\u2026 unless they run software your wrote also via open source project work you have done but, I digress\u2026\u00a0<a href=\"http:\/\/www.amazon.com\/The-Linux-Programming-Interface-Handbook\/dp\/1593272200\" target=\"_blank\">The Linux Programming Interface: A Linux and UNIX System Programming Handbook<\/a>\u00a0is the resource I like for Linux.<\/p>\n<h2>Now What?<\/h2>\n<p>Over the last nine years a lot of classic computer concepts have been more readily achievable because of the inexpensive (sometimes cheep) commodity hardware that has become our foreshadowed\u00a0reality. \u00a0This has made\u00a0parallel\u00a0and distributed computing platforms, distributed document and key\/value stores, distributed pub\/sub broker, publisher and consumer systems and even actor\u00a0patterns\u00a0with\u00a0immutable\u00a0structures start to become part of this fabric. \u00a0The rub here is the competition and infancy of these market segments arguably yet to even have \u201c<a href=\"http:\/\/en.wikipedia.org\/wiki\/Crossing_the_Chasm\" target=\"_blank\">crossed the chasm<\/a>\u201c.<\/p>\n<p>Now, having said all of that \u2026 There is a stand out. \u201cZooKeeper provides key points of correctness and coordination that must have higher transactional guarantees than all of these types of system that want to build intrinsically into their own key logic\u201d. \u00a0<a href=\"https:\/\/twitter.com\/skamille\" target=\"_blank\">Camille Fournier<\/a>\u00a0made me see this in one of her blog posts \u00a0<a href=\"http:\/\/whilefalse.blogspot.com\/2013\/05\/zookeeper-and-distributed-operating.html?spref=tw\" target=\"_blank\">http:\/\/whilefalse.blogspot.com\/2013\/05\/zookeeper-and-distributed-operating.html?spref=tw<\/a>\u00a0because of how Zookeeper is tied into so many of these existing types of systems. \u00a0Since these systems have yet to mature in the marketplace (while having\u00a0sufficiently\u00a0matured with early adopters, by far) there are some consistencies within and\u00a0across\u00a0them we have to start to take a look at, support and commit to (literally).<\/p>\n<p>What is also nice now about Zookeeper is that there is an open source library that has been developed and (all things being equal) continuously\u00a0maintained to make developing the repeatable patterns of Zookeeper development easier\u00a0<a href=\"http:\/\/curator.incubator.apache.org\/\" target=\"_blank\">http:\/\/curator.incubator.apache.org\/<\/a>. \u00a0If you have never worked with Zookeeper I\u00a0recommend\u00a0starting here\u00a0<a href=\"http:\/\/zookeeper.apache.org\/doc\/trunk\/zookeeperStarted.html\" target=\"_blank\">http:\/\/zookeeper.apache.org\/doc\/trunk\/zookeeperStarted.html<\/a>.<br \/>\n&nbsp;<\/p>\n<div style=\"border: 1px solid #D8D8D8; background: #FAFAFA; width: 100%; padding-left: 5px;\"><b><i>Reference: <\/i><\/b><a href=\"http:\/\/allthingshadoop.com\/2013\/06\/16\/distributed-system-development-considerations\/\">Distributed System Development Considerations<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/jcg\">JCG partner<\/a> Joe Stein at the <a href=\"http:\/\/allthingshadoop.com\/\">All Things Hadoop<\/a> blog.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>There are a number of factors to take into account while developing distributed software systems. If you don\u2019t even know what I am talking about in the first\u00a0sentence\u00a0then let me give you some insight, examples and for instances of what distributed systems are. Overview A distributed system is when multiple\u00a0physical\u00a0hardware devices interact with\u00a0separate\u00a0and discrete users &hellip;<\/p>\n","protected":false},"author":455,"featured_media":62,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[184,372],"class_list":["post-14487","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-apache-hadoop","tag-big-data"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Distributed System Development Considerations<\/title>\n<meta name=\"description\" content=\"There are a number of factors to take into account while developing distributed software systems. If you don\u2019t even know what I am talking about in the\" \/>\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.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Distributed System Development Considerations\" \/>\n<meta property=\"og:description\" content=\"There are a number of factors to take into account while developing distributed software systems. If you don\u2019t even know what I am talking about in the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:author\" content=\"http:\/\/facebook.com\/joestein\" \/>\n<meta property=\"article:published_time\" content=\"2013-06-27T22:00:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joe Stein\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/allthingshadoop\/\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joe Stein\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html\"},\"author\":{\"name\":\"Joe Stein\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/b1f5a6be8bcfcea3f085aff252d6d406\"},\"headline\":\"Distributed System Development Considerations\",\"datePublished\":\"2013-06-27T22:00:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html\"},\"wordCount\":983,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-hadoop-logo.jpg\",\"keywords\":[\"Apache Hadoop\",\"Big Data\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html\",\"name\":\"Distributed System Development Considerations\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-hadoop-logo.jpg\",\"datePublished\":\"2013-06-27T22:00:05+00:00\",\"description\":\"There are a number of factors to take into account while developing distributed software systems. If you don\u2019t even know what I am talking about in the\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-hadoop-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/apache-hadoop-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2013\\\/06\\\/distributed-system-development-considerations.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Distributed System Development Considerations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/b1f5a6be8bcfcea3f085aff252d6d406\",\"name\":\"Joe Stein\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0d95bf7b08a1f2e3e104ecbdb9b19ad0daf788a27944ebcf5ee70e258a69ce0d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0d95bf7b08a1f2e3e104ecbdb9b19ad0daf788a27944ebcf5ee70e258a69ce0d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0d95bf7b08a1f2e3e104ecbdb9b19ad0daf788a27944ebcf5ee70e258a69ce0d?s=96&d=mm&r=g\",\"caption\":\"Joe Stein\"},\"sameAs\":[\"http:\\\/\\\/allthingshadoop.com\\\/\",\"http:\\\/\\\/facebook.com\\\/joestein\",\"http:\\\/\\\/www.linkedin.com\\\/in\\\/charmalloc\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/allthingshadoop\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/joe-stein\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Distributed System Development Considerations","description":"There are a number of factors to take into account while developing distributed software systems. If you don\u2019t even know what I am talking about in the","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.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html","og_locale":"en_US","og_type":"article","og_title":"Distributed System Development Considerations","og_description":"There are a number of factors to take into account while developing distributed software systems. If you don\u2019t even know what I am talking about in the","og_url":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_author":"http:\/\/facebook.com\/joestein","article_published_time":"2013-06-27T22:00:05+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-logo.jpg","type":"image\/jpeg"}],"author":"Joe Stein","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/allthingshadoop\/","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Joe Stein","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html"},"author":{"name":"Joe Stein","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/b1f5a6be8bcfcea3f085aff252d6d406"},"headline":"Distributed System Development Considerations","datePublished":"2013-06-27T22:00:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html"},"wordCount":983,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-logo.jpg","keywords":["Apache Hadoop","Big Data"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html","url":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html","name":"Distributed System Development Considerations","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-logo.jpg","datePublished":"2013-06-27T22:00:05+00:00","description":"There are a number of factors to take into account while developing distributed software systems. If you don\u2019t even know what I am talking about in the","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/apache-hadoop-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2013\/06\/distributed-system-development-considerations.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Distributed System Development Considerations"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/b1f5a6be8bcfcea3f085aff252d6d406","name":"Joe Stein","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0d95bf7b08a1f2e3e104ecbdb9b19ad0daf788a27944ebcf5ee70e258a69ce0d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0d95bf7b08a1f2e3e104ecbdb9b19ad0daf788a27944ebcf5ee70e258a69ce0d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0d95bf7b08a1f2e3e104ecbdb9b19ad0daf788a27944ebcf5ee70e258a69ce0d?s=96&d=mm&r=g","caption":"Joe Stein"},"sameAs":["http:\/\/allthingshadoop.com\/","http:\/\/facebook.com\/joestein","http:\/\/www.linkedin.com\/in\/charmalloc","https:\/\/x.com\/https:\/\/twitter.com\/allthingshadoop\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/joe-stein"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/14487","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/455"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=14487"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/14487\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/62"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=14487"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=14487"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=14487"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}