\r\n\r\n

John’s talk covered the pain of working with multiple different external APIs – both at development time and at run-time. Each API fails in different ways and at different times – making even gaining insights as to what might be wrong hard to glean, particular with systems that need to run 24/7. Andy dug right in on the kind of testing needed to really validate that a distributed system such as the deployments Basho – “Concurrency is no longer enough – We are distributed Systems people now”.

\r\n\r\n

The theme also came out in Talks from Netflix, Google and Parse – not only do internal systems (which may be distributed) need to be managed closely: there are now external systems which depend on these and others on these.

\r\n\r\n

In a “distributed” world many things become harder: remote nodes cannot always be relied upon, clocks are not synchronized, small latencies between locations make many algorithms invalid or impossibly slow, many of the endpoints are managed by different organisations – meaning changes are often not coordinated or orchestrated.

\r\n\r\n

All this warms ours hearts as an “old time” distributed systems folks – Internet Applications are becoming genuinely distributed across organisations. This creates growing pains – but also makes new types of application possible. People often ask “what’s the fundamental difference between SOA and APIs? The essence of the answer is, not technical – it is organisational:

\r\n\r\n
\r\n

APIs are typically designed for inter-organizational integration, SOA typically for intra-organizational.

\r\n
\r\n\r\n

Even though SOA solutions do get used for the former, this has almost always happened with strong assumptions on the human collaboration around the integration and sense of “shared ownership” of the resulting app – control of the resources involved. With the rapidly increasing number of API integration, this assumption is simply not there. Apps in an API world need to handle being truly distributed.

\r\n\r\n

Vendors like ourselves and new companies such as Runscope, will hopefully start to make it easier for both sides of the API equation to take some of the pain out of providing and consuming APIs. Building genuinely functioning, stable apps across clouds is very hard and we have a long way to go – but we’re starting to recognize and address the pain points!

\r\n\r\n

Huge congrats to Eric, Kim and the team for another great event!

","bodyAsHTML":"This year’s Gluecon as always was a mix ideas and memes (a great event as always!). Reflecting on the talks and conversations on the flight back, there seemed to be one to us which stood our more than any other, which was nicely captured by Michael Rose‘s Tweet: \r\n
\r\n

\"We're all distributed systems people now.\" #gluecon @argv0

\r\n — Michael Rose (@Xorlev) May 22, 2013
\r\n\r\n

In fact, we always were, but conveniently forget that fact most of the time. Specifically, APIs, Cloud deployments, SAAS and “remote access to everything” make building systems incredibly hard because they are distributedacross organisations. The fact that building systems in which multiple components that we depend on are hosted in remote infrastructure owned and operated by others has been a reality for a good long while. However, the increasing adoption of APIs in particular, simply makes the issues that arise more acute – and we don’t talk about the enough. The theme came out strongly both in John Sheehan‘s Keynote on Runscope:

\r\n\r\n
\r\n

\"Distributed is the new Default\" for modern applications - \"we're building distributed systems by not acting like it\" @johnsheehan#gluecon

\r\n — Steven Willmott (@njyx) May 22, 2013
\r\n and in Andy Gross‘s:

GlueCon 2013 Notes: The Free Lunch Is Over, Again – Andy Gross, Chief Architect at Basho bit.ly/16Rt7vg

— Tony Karrer (@StartUpRoar) May 23, 2013
\r\n\r\n\r\n

John’s talk covered the pain of working with multiple different external APIs – both at development time and at run-time. Each API fails in different ways and at different times – making even gaining insights as to what might be wrong hard to glean, particular with systems that need to run 24/7. Andy dug right in on the kind of testing needed to really validate that a distributed system such as the deployments Basho – “Concurrency is no longer enough – We are distributed Systems people now”.

\r\n\r\n

The theme also came out in Talks from Netflix, Google and Parse – not only do internal systems (which may be distributed) need to be managed closely: there are now external systems which depend on these and others on these.

\r\n\r\n

In a “distributed” world many things become harder: remote nodes cannot always be relied upon, clocks are not synchronized, small latencies between locations make many algorithms invalid or impossibly slow, many of the endpoints are managed by different organisations – meaning changes are often not coordinated or orchestrated.

\r\n\r\n

All this warms ours hearts as an “old time” distributed systems folks – Internet Applications are becoming genuinely distributed across organisations. This creates growing pains – but also makes new types of application possible. People often ask “what’s the fundamental difference between SOA and APIs? The essence of the answer is, not technical – it is organisational:

\r\n\r\n
\r\n

APIs are typically designed for inter-organizational integration, SOA typically for intra-organizational.

\r\n
\r\n\r\n

Even though SOA solutions do get used for the former, this has almost always happened with strong assumptions on the human collaboration around the integration and sense of “shared ownership” of the resulting app – control of the resources involved. With the rapidly increasing number of API integration, this assumption is simply not there. Apps in an API world need to handle being truly distributed.

\r\n\r\n

Vendors like ourselves and new companies such as Runscope, will hopefully start to make it easier for both sides of the API equation to take some of the pain out of providing and consuming APIs. Building genuinely functioning, stable apps across clouds is very hard and we have a long way to go – but we’re starting to recognize and address the pain points!

\r\n\r\n

Huge congrats to Eric, Kim and the team for another great event!

","author":{"id":1029559,"username":"stevenwillmott","realname":null,"emailHash":"945e92465a14e73104ec9975d2ad3e0e","avatar":"https://secure.gravatar.com/avatar/945e92465a14e73104ec9975d2ad3e0e?d=identicon&r=PG","reputation":0},"activeRevisionId":565855,"revisionIds":[565855,565854,565853],"lastActiveUserId":1029559,"lastActiveDate":1369700656000,"parentId":null,"parentAuthor":null,"originalParentId":null,"childrenIds":[],"commentIds":[],"marked":true,"topics":["news","architects","enterprise-integration","api","events"],"primaryContainerId":8,"containerIds":[7,8],"plug":"welcome-distributed","wiki":false,"score":0,"depth":0},"enableThreadedComments":true,"portal":{"topic":{"id":"1138","type":"topic","creationDate":1434655028000,"creationDateFormatted":"06/18/2015 07:17 PM","name":"integration","createdBy":{"id":2,"username":"matt"},"parentTopics":[],"childTopics":[],"usedCount":3087},"blurb":"Enterprise Integration news, design patterns and training resources from DZone, the trusted source for advanced software design and devops best practices.","code":"integration","id":7,"creationDate":1434673891000,"creationDateFormatted":"06/19/2015 12:31 AM","displayTitle":"Integration Zone: Enterprise Integration news, tutorials & tools","title":"Integration","new":false,"order":6,"shortTitle":"enterprise-integration-training-tools-news","color":"green","pageTitle":"Enterprise Integration Training, Tools & News - DZone","active":true,"modificationDate":1437509749000,"modificationDateFormatted":"07/21/2015 08:15 PM"},"contentType":"article"}],"loadedStyles":[["/lib/bootstrap/bootstrap.less","/lib/font-awesome/font-awesome.less","/lib/fontello/css/fontello.css","/lib/fontello/css/animation.css","/lib/angular-ui/select.css","/lib/ngDialog/css/ngDialog.css","/less/ngDialog-theme.less","/lib/bootstrap-switch/bootstrap-switch.css","/less/dzone20.less","/less/fonts.less","/less/directives.less","/lib/slick/slick.css","/lib/bootstrap-slider/bootstrap-slider.css","/less/layout.less","/widgets/article/content/article-content.less","/widgets/article/infoBar/widget.less","/widgets/components/slider/widget.less","/widgets/content/commentsSlider/widget.less","/widgets/header/blackBar/widget.less","/widgets/header/main/header-common.less","/widgets/header/main/widget.less","/widgets/sidebar/content/list/list.less","/widgets/sidebar/tapBar/sidebar-list.less","/widgets/sidebar/tapBar/widget.less","/widgets/users/UserHomeMiniProfile/widget.less"]],"loadedScripts":[["/lib/jquery/jquery.js","/lib/lodash/lodash.js","/lib/moment/moment.js","/scripts/utils.js","/lib/angular/angular.js","/lib/angular/angular-sanitize.js","/lib/local-storage/angular-local-storage.js","/lib/bootstrap/bootstrap.js","/lib/angular-ui/bootstrap.js","/lib/angular-ui/select.js","/lib/bootstrap-switch/bootstrap-switch.js","/lib/ngDialog/js/ngDialog.js","/lib/angular-moment/angular-moment.js","/scripts/app.js","/scripts/socket.js","/scripts/services.js","/scripts/ui-services.js","/scripts/directives.js","/scripts/filters.js","/lib/angulartics/angulartics.js","/lib/angulartics/angulartics-ga.js","/lib/angular-touch/angular-touch.min.js","/lib/elastic/elastic.js","/lib/ng-file-upload/angular-file-upload-all.js","/lib/angular-deckgrid/angular-deckgrid.js","/scripts/dzone.js","/scripts/ads.js","/scripts/head.js","/scripts/links.js","/scripts/utilities/directives.js","/scripts/utilities/services.js","/scripts/utilities/image-editor.js","/lib/bootstrap-slider/bootstrap-slider.js","/lib/bootstrap-slider/directive.js","/lib/angular-draganddrop/draganddrop.js","/widgets/article/content/utils.js","/widgets/article/infoBar/services.js","/widgets/components/slider/service.js","/widgets/header/main/resize.js","/widgets/sidebar/content/list/service.js","/widgets/sidebar/tapBar/directive.js","/widgets/sidebar/tapBar/service.js"]],"TH_CSRF":"752473465097317401","botInfo":[{"isRenderBot":false}],"request":[{"site":{"id":7,"title":"DZone: Programming & DevOps news, tutorials & tools","keywords":"programming, software development, devops, java, agile, web, iot, database, mobile, big data, cloud","description":"Programming, Web Development, and DevOps news, tutorials and tools for beginners to experts. Hundreds of free publications, over 1M members, totally free.","name":"DZone.com"},"dev":false,"cdn":["dz2cdn1.dzone.com","dz2cdn2.dzone.com","dz2cdn3.dzone.com","dz2cdn4.dzone.com"],"theme":"dz20","context":"","user":{"id":2500002,"authenticated":false,"name":"Anonymous","realName":null,"avatar":"https://secure.gravatar.com/avatar/?d=identicon&r=PG","profile":"/users/2500002/anon-user.html"}}],"portals":[[{"topic":8,"id":2,"shortTitle":"agile-methodology-training-tools-news","color":"red","name":"Agile","code":"agile","url":"/agile-methodology-training-tools-news"},{"topic":6129,"id":3,"shortTitle":"big-data-analytics-tutorials-tools-news","color":"green","name":"Big Data","code":"big-data","url":"/big-data-analytics-tutorials-tools-news"},{"topic":30,"id":4,"shortTitle":"cloud-computing-tutorials-tools-news","color":"orange","name":"Cloud","code":"cloud","url":"/cloud-computing-tutorials-tools-news"},{"topic":59,"id":5,"shortTitle":"database-sql-nosql-tutorials-tools-news","color":"purple","name":"Database","code":"database","url":"/database-sql-nosql-tutorials-tools-news"},{"topic":31,"id":6,"shortTitle":"devops-tutorials-tools-news","color":"yellow","name":"DevOps","code":"devops","url":"/devops-tutorials-tools-news"},{"topic":1138,"id":7,"shortTitle":"enterprise-integration-training-tools-news","color":"green","name":"Integration","code":"integration","url":"/enterprise-integration-training-tools-news"},{"topic":48,"id":8,"shortTitle":"iot-developer-tutorials-tools-news-reviews","color":"orange","name":"IoT","code":"iot","url":"/iot-developer-tutorials-tools-news-reviews"},{"topic":1,"id":1,"shortTitle":"java-jdk-development-tutorials-tools-news","color":"purple","name":"Java","code":"java","url":"/java-jdk-development-tutorials-tools-news"},{"topic":29,"id":9,"shortTitle":"mobile-app-developer-tutorials-tools-news","color":"yellow","name":"Mobile","code":"mobile","url":"/mobile-app-developer-tutorials-tools-news"},{"topic":653,"id":10,"shortTitle":"apm-tools-performance-monitoring-optimization","color":"red","name":"Performance","code":"performance","url":"/apm-tools-performance-monitoring-optimization"},{"topic":35,"id":11,"shortTitle":"web-development-programming-tutorials-tools-news","color":"orange","name":"Web Dev","code":"webdev","url":"/web-development-programming-tutorials-tools-news"}]],"matchedUrl":{"name":"dzone:articles:view","mapping":"/articles/**","mappingPatterns":{}},"requiresModule":["dndLists","generalDirectives","monospaced.elastic","angularFileUpload","akoenig.deckgrid","ui.bootstrap-slider","angulartics","angulartics.google.analytics","ngSanitize","ui.select","ui.bootstrap","angularMoment","ngTouch","ngDialog","LocalStorageModule"]}; } catch(e) { console.error(e); }
4
Notification
  • Adam Van Grack started following you

  • Jessica Conaghan, Gumption Scott and 6 commented on a link you posted

    T-Mobile Unvells Cheaper, More Basic 'Simple Prepaid' Phone Plans

  • Jessica Conaghan replied on a comment you posted

    CSS counters are one of those "oh neat, didn't know CSS could do that" features with a lot of Xubuntu 14.10 Utopic Unicorn is the latest release of xubuntu based on Ubuntu 14.10

  • Jessica Conaghan started following you

See All
POWERED BY DZone TeamHub
{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks
Tweet

{{parent.nComments}}

\r\n\r\n

John’s talk covered the pain of working with multiple different external APIs – both at development time and at run-time. Each API fails in different ways and at different times – making even gaining insights as to what might be wrong hard to glean, particular with systems that need to run 24/7. Andy dug right in on the kind of testing needed to really validate that a distributed system such as the deployments Basho – “Concurrency is no longer enough – We are distributed Systems people now”.

\r\n\r\n

The theme also came out in Talks from Netflix, Google and Parse – not only do internal systems (which may be distributed) need to be managed closely: there are now external systems which depend on these and others on these.

\r\n\r\n

In a “distributed” world many things become harder: remote nodes cannot always be relied upon, clocks are not synchronized, small latencies between locations make many algorithms invalid or impossibly slow, many of the endpoints are managed by different organisations – meaning changes are often not coordinated or orchestrated.

\r\n\r\n

All this warms ours hearts as an “old time” distributed systems folks – Internet Applications are becoming genuinely distributed across organisations. This creates growing pains – but also makes new types of application possible. People often ask “what’s the fundamental difference between SOA and APIs? The essence of the answer is, not technical – it is organisational:

\r\n\r\n
\r\n

APIs are typically designed for inter-organizational integration, SOA typically for intra-organizational.

\r\n
\r\n\r\n

Even though SOA solutions do get used for the former, this has almost always happened with strong assumptions on the human collaboration around the integration and sense of “shared ownership” of the resulting app – control of the resources involved. With the rapidly increasing number of API integration, this assumption is simply not there. Apps in an API world need to handle being truly distributed.

\r\n\r\n

Vendors like ourselves and new companies such as Runscope, will hopefully start to make it easier for both sides of the API equation to take some of the pain out of providing and consuming APIs. Building genuinely functioning, stable apps across clouds is very hard and we have a long way to go – but we’re starting to recognize and address the pain points!

\r\n\r\n

Huge congrats to Eric, Kim and the team for another great event!

","source":"http://www.3scale.net/2013/05/welcome-to-distributed/","views":2818,"articleDate":1369700656000,"tldr":null,"originalSource":"http://www.3scale.net/2013/05/welcome-to-distributed/","published":true,"nComments":0,"articleType":""}]; WMODEL_DATA.perms = {"canDecidePick":false,"canPublish":false}; WMODEL_DATA.isPreview = false; WMODEL_DATA.OPTIONS = {}; TH.installWidgetController('article.content', 'articleContent7', WMODEL_DATA, typeof controller == 'function' ? controller : null, [{name: 'partners', data: true},{name: 'DEFAULT', data: true}], ' oUhbblYOaqbcblYOaqbcC', null); })(); (function() { function controller($scope, $service, $location, SideBarService, TH$Request) { SideBarService.ctx.pageSize = $scope.pageSize; SideBarService.ctx.isPreview = $scope.isPreview; SideBarService.ctx.mode = $scope.mode; SideBarService.fn.loader = $service; SideBarService.fn.scrollCheck = function() { $scope.$emit('thIfScrollCheck'); }; var currentFilter; $scope.$on('$locationChangeSuccess', function() { if (!$location.search().filter) { $scope.filter = 'latest'; } else { $scope.filter = $location.search().filter; if ($scope.filter == 'latest') { $location.search('filter', null); } } if (currentFilter == $scope.filter) { return; } currentFilter = $scope.filter; SideBarService.ctx.filter = $scope.filter; }); $scope.display = SideBarService.getList(); $scope.$watchCollection(function() { return SideBarService.getList(); }, function (n) { $scope.display = n; }); $scope.isActive = SideBarService.isActive; $scope.isExcluded = SideBarService.isExcluded; $scope.loadMore = SideBarService.load; $scope.loading = function() { return SideBarService.ctx.loading; } } var WMODEL_DATA = {}; WMODEL_DATA.pageSize = 20; WMODEL_DATA.isPreview = false; WMODEL_DATA.OPTIONS = {}; WMODEL_DATA.mode = null; TH.installWidgetController('sidebar.content.list', 'sidebarContentList10', WMODEL_DATA, typeof controller == 'function' ? controller : null, [{name: 'DEFAULT', data: true}], ' oUhbkSMaaqbcdvVkcC', null); })(); (function() { var WMODEL_DATA = {}; WMODEL_DATA.OPTIONS = {}; TH.installWidgetController('sidebar.tapBar', 'sidebar', WMODEL_DATA, typeof controller == 'function' ? controller : null, null, ' oUhbkSMadabfWVcC oUhbkSMadabbWQbVkcC', null); })(); (function() { function controller($scope, shareThis, TH$Dialog, TH$Service, $location) { $scope.getEditUrl = function(id, type) { if (!type || type == 'article') { return '/content/' + id + '/edit.html'; } else { return '/dzone/staff/' + type + (type == 'refcard' ? 'z' : 's') + '/' + id + '/edit.html'; } }; $scope.share = function(socialNet, url, title){ shareThis.shareThis(socialNet, url, title); }; $scope.canDelete = function(article) { return article.canDelete; }; $scope.shareTwitter = function($event, title, url){ $event.preventDefault(); $event.stopPropagation(); var twitter = 'https://twitter.com/intent/tweet'; var link = $location.protocol() + '://' + location.host + url; var ref = location.host; var params = '?text='+title+'&url='+link+'&ref=dzone.com&via=DZone'; var win = window.open(twitter+params, '_blank'); win.focus(); }; $scope.edit = function(link) { TH$Dialog.open({ loadWidget: 'links.postPreview', widgetArgs: { edit: link.id }, size: 'xbig' }).then(function (result) { $scope.link.title = result.title; $scope.link.linkDescription = result.content; $scope.link.thumb = result.thumb; $scope.link.tags = result.topics; }); }; $scope.deleteLink = function(article) { var title = article.title; var type = 'link'; if(article.header){ title = (article.header.type == 'article') ? article.header.title : article.title; type = (article.header.type == 'article') ? 'article' : 'link'; } TH$Dialog.confirm('Do you want to delete "' + title + '"?').then(function() { return TH$Service.action('delete', {type: type, id: article.id}); }).then(function() { article.deleted = true; }); }; } var WMODEL_DATA = {}; WMODEL_DATA.OPTIONS = {}; TH.installWidgetController('content.commentsSlider', 'contentCommentsSlider9', WMODEL_DATA, typeof controller == 'function' ? controller : null, null, ' oUhbaqbcaibvnWffWVcC', null); })(); (function() { var WMODEL_DATA = {}; WMODEL_DATA.name = "commentsSlider"; WMODEL_DATA.slot = null; WMODEL_DATA.OPTIONS = {"name":"commentsSlider"}; TH.installWidgetController('components.slider', 'componentsSlider8', WMODEL_DATA, typeof controller == 'function' ? controller : null, null, ' oUhballbvbdSaoUhM', null); })();