{"action":"created","comment":{"url":"https://api.github.com/repos/ePages-de/epages-docs/pulls/comments/40192407","id":40192407,"diff_hunk":"@@ -0,0 +1,57 @@\n+---\n+layout: post\n+title: \"Service discovery with Consul, Registrator & HAProxy\"\n+date: \"2015-09-28 08:30:00\"\n+icon: search-plus\n+categories: tech-stories\n+authors: [\"Dirk Jablonski\"]\n+---\n+\n+As epages is heading for a new, microservice-based architecture, new challanges arise. In this kind of architecture, there are a lot of services, which are usually deployed redundantly for high availability. But from a client perspective, all these service instances should be transparent. The client should not need to care about multiple instances of a services, their different locations on the network or if they are operational, down for maintenance or in a failure state. A client should only need to deal with a single address of the service.\n+\n+The solution to this challange is *Service Discovery*. It is the means by which any service is able to find other services without the need to know about the actual location or other details. In our solution, Service Discovery means that you only need to know a generic URI to communicate with other REST-based services (or even some infrastructure components like message brokers).\n+\n+#How does it work?","path":"_posts/2015-09-28-service-discovery.md","position":14,"original_position":14,"commit_id":"4189ef6a87ecd1e33b112d227993149e8b108d62","original_commit_id":"4189ef6a87ecd1e33b112d227993149e8b108d62","user":{"login":"BirgitBader","id":10460958,"avatar_url":"https://avatars.githubusercontent.com/u/10460958?v=3","gravatar_id":"","url":"https://api.github.com/users/BirgitBader","html_url":"https://github.com/BirgitBader","followers_url":"https://api.github.com/users/BirgitBader/followers","following_url":"https://api.github.com/users/BirgitBader/following{/other_user}","gists_url":"https://api.github.com/users/BirgitBader/gists{/gist_id}","starred_url":"https://api.github.com/users/BirgitBader/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BirgitBader/subscriptions","organizations_url":"https://api.github.com/users/BirgitBader/orgs","repos_url":"https://api.github.com/users/BirgitBader/repos","events_url":"https://api.github.com/users/BirgitBader/events{/privacy}","received_events_url":"https://api.github.com/users/BirgitBader/received_events","type":"User","site_admin":false},"body":"Please use a blank line between headline and first sentence.","created_at":"2015-09-23T11:21:45Z","updated_at":"2015-09-23T11:21:45Z","html_url":"https://github.com/ePages-de/epages-docs/pull/227#discussion_r40192407","pull_request_url":"https://api.github.com/repos/ePages-de/epages-docs/pulls/227","_links":{"self":{"href":"https://api.github.com/repos/ePages-de/epages-docs/pulls/comments/40192407"},"html":{"href":"https://github.com/ePages-de/epages-docs/pull/227#discussion_r40192407"},"pull_request":{"href":"https://api.github.com/repos/ePages-de/epages-docs/pulls/227"}}},"pull_request":{"url":"https://api.github.com/repos/ePages-de/epages-docs/pulls/227","id":45757749,"html_url":"https://github.com/ePages-de/epages-docs/pull/227","diff_url":"https://github.com/ePages-de/epages-docs/pull/227.diff","patch_url":"https://github.com/ePages-de/epages-docs/pull/227.patch","issue_url":"https://api.github.com/repos/ePages-de/epages-docs/issues/227","number":227,"state":"open","locked":false,"title":"Service discovery","user":{"login":"djablonski","id":595747,"avatar_url":"https://avatars.githubusercontent.com/u/595747?v=3","gravatar_id":"","url":"https://api.github.com/users/djablonski","html_url":"https://github.com/djablonski","followers_url":"https://api.github.com/users/djablonski/followers","following_url":"https://api.github.com/users/djablonski/following{/other_user}","gists_url":"https://api.github.com/users/djablonski/gists{/gist_id}","starred_url":"https://api.github.com/users/djablonski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/djablonski/subscriptions","organizations_url":"https://api.github.com/users/djablonski/orgs","repos_url":"https://api.github.com/users/djablonski/repos","events_url":"https://api.github.com/users/djablonski/events{/privacy}","received_events_url":"https://api.github.com/users/djablonski/received_events","type":"User","site_admin":false},"body":"Its too long, and at least locally the image is not correctly shown, but please have a first look...","created_at":"2015-09-23T09:15:52Z","updated_at":"2015-09-23T11:21:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e4af8ea90a4731ed3740090c894cbd16559784ae","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ePages-de/epages-docs/pulls/227/commits","review_comments_url":"https://api.github.com/repos/ePages-de/epages-docs/pulls/227/comments","review_comment_url":"https://api.github.com/repos/ePages-de/epages-docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ePages-de/epages-docs/issues/227/comments","statuses_url":"https://api.github.com/repos/ePages-de/epages-docs/statuses/4189ef6a87ecd1e33b112d227993149e8b108d62","head":{"label":"djablonski:service-discovery","ref":"service-discovery","sha":"4189ef6a87ecd1e33b112d227993149e8b108d62","user":{"login":"djablonski","id":595747,"avatar_url":"https://avatars.githubusercontent.com/u/595747?v=3","gravatar_id":"","url":"https://api.github.com/users/djablonski","html_url":"https://github.com/djablonski","followers_url":"https://api.github.com/users/djablonski/followers","following_url":"https://api.github.com/users/djablonski/following{/other_user}","gists_url":"https://api.github.com/users/djablonski/gists{/gist_id}","starred_url":"https://api.github.com/users/djablonski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/djablonski/subscriptions","organizations_url":"https://api.github.com/users/djablonski/orgs","repos_url":"https://api.github.com/users/djablonski/repos","events_url":"https://api.github.com/users/djablonski/events{/privacy}","received_events_url":"https://api.github.com/users/djablonski/received_events","type":"User","site_admin":false},"repo":{"id":42983030,"name":"epages-docs","full_name":"djablonski/epages-docs","owner":{"login":"djablonski","id":595747,"avatar_url":"https://avatars.githubusercontent.com/u/595747?v=3","gravatar_id":"","url":"https://api.github.com/users/djablonski","html_url":"https://github.com/djablonski","followers_url":"https://api.github.com/users/djablonski/followers","following_url":"https://api.github.com/users/djablonski/following{/other_user}","gists_url":"https://api.github.com/users/djablonski/gists{/gist_id}","starred_url":"https://api.github.com/users/djablonski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/djablonski/subscriptions","organizations_url":"https://api.github.com/users/djablonski/orgs","repos_url":"https://api.github.com/users/djablonski/repos","events_url":"https://api.github.com/users/djablonski/events{/privacy}","received_events_url":"https://api.github.com/users/djablonski/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/djablonski/epages-docs","description":"Source of ePages Developer Portal","fork":true,"url":"https://api.github.com/repos/djablonski/epages-docs","forks_url":"https://api.github.com/repos/djablonski/epages-docs/forks","keys_url":"https://api.github.com/repos/djablonski/epages-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/djablonski/epages-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/djablonski/epages-docs/teams","hooks_url":"https://api.github.com/repos/djablonski/epages-docs/hooks","issue_events_url":"https://api.github.com/repos/djablonski/epages-docs/issues/events{/number}","events_url":"https://api.github.com/repos/djablonski/epages-docs/events","assignees_url":"https://api.github.com/repos/djablonski/epages-docs/assignees{/user}","branches_url":"https://api.github.com/repos/djablonski/epages-docs/branches{/branch}","tags_url":"https://api.github.com/repos/djablonski/epages-docs/tags","blobs_url":"https://api.github.com/repos/djablonski/epages-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/djablonski/epages-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/djablonski/epages-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/djablonski/epages-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/djablonski/epages-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/djablonski/epages-docs/languages","stargazers_url":"https://api.github.com/repos/djablonski/epages-docs/stargazers","contributors_url":"https://api.github.com/repos/djablonski/epages-docs/contributors","subscribers_url":"https://api.github.com/repos/djablonski/epages-docs/subscribers","subscription_url":"https://api.github.com/repos/djablonski/epages-docs/subscription","commits_url":"https://api.github.com/repos/djablonski/epages-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/djablonski/epages-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/djablonski/epages-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/djablonski/epages-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/djablonski/epages-docs/contents/{+path}","compare_url":"https://api.github.com/repos/djablonski/epages-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/djablonski/epages-docs/merges","archive_url":"https://api.github.com/repos/djablonski/epages-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/djablonski/epages-docs/downloads","issues_url":"https://api.github.com/repos/djablonski/epages-docs/issues{/number}","pulls_url":"https://api.github.com/repos/djablonski/epages-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/djablonski/epages-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/djablonski/epages-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/djablonski/epages-docs/labels{/name}","releases_url":"https://api.github.com/repos/djablonski/epages-docs/releases{/id}","created_at":"2015-09-23T06:38:59Z","updated_at":"2015-09-23T06:39:03Z","pushed_at":"2015-09-23T09:39:33Z","git_url":"git://github.com/djablonski/epages-docs.git","ssh_url":"git@github.com:djablonski/epages-docs.git","clone_url":"https://github.com/djablonski/epages-docs.git","svn_url":"https://github.com/djablonski/epages-docs","homepage":"https://developer.epages.com/","size":36632,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"ePages-de:develop","ref":"develop","sha":"b52cb0fb7899b04513d1a434bb884294c9418726","user":{"login":"ePages-de","id":1125854,"avatar_url":"https://avatars.githubusercontent.com/u/1125854?v=3","gravatar_id":"","url":"https://api.github.com/users/ePages-de","html_url":"https://github.com/ePages-de","followers_url":"https://api.github.com/users/ePages-de/followers","following_url":"https://api.github.com/users/ePages-de/following{/other_user}","gists_url":"https://api.github.com/users/ePages-de/gists{/gist_id}","starred_url":"https://api.github.com/users/ePages-de/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ePages-de/subscriptions","organizations_url":"https://api.github.com/users/ePages-de/orgs","repos_url":"https://api.github.com/users/ePages-de/repos","events_url":"https://api.github.com/users/ePages-de/events{/privacy}","received_events_url":"https://api.github.com/users/ePages-de/received_events","type":"Organization","site_admin":false},"repo":{"id":30595510,"name":"epages-docs","full_name":"ePages-de/epages-docs","owner":{"login":"ePages-de","id":1125854,"avatar_url":"https://avatars.githubusercontent.com/u/1125854?v=3","gravatar_id":"","url":"https://api.github.com/users/ePages-de","html_url":"https://github.com/ePages-de","followers_url":"https://api.github.com/users/ePages-de/followers","following_url":"https://api.github.com/users/ePages-de/following{/other_user}","gists_url":"https://api.github.com/users/ePages-de/gists{/gist_id}","starred_url":"https://api.github.com/users/ePages-de/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ePages-de/subscriptions","organizations_url":"https://api.github.com/users/ePages-de/orgs","repos_url":"https://api.github.com/users/ePages-de/repos","events_url":"https://api.github.com/users/ePages-de/events{/privacy}","received_events_url":"https://api.github.com/users/ePages-de/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ePages-de/epages-docs","description":"Source of ePages Developer Portal","fork":false,"url":"https://api.github.com/repos/ePages-de/epages-docs","forks_url":"https://api.github.com/repos/ePages-de/epages-docs/forks","keys_url":"https://api.github.com/repos/ePages-de/epages-docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ePages-de/epages-docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ePages-de/epages-docs/teams","hooks_url":"https://api.github.com/repos/ePages-de/epages-docs/hooks","issue_events_url":"https://api.github.com/repos/ePages-de/epages-docs/issues/events{/number}","events_url":"https://api.github.com/repos/ePages-de/epages-docs/events","assignees_url":"https://api.github.com/repos/ePages-de/epages-docs/assignees{/user}","branches_url":"https://api.github.com/repos/ePages-de/epages-docs/branches{/branch}","tags_url":"https://api.github.com/repos/ePages-de/epages-docs/tags","blobs_url":"https://api.github.com/repos/ePages-de/epages-docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ePages-de/epages-docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ePages-de/epages-docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/ePages-de/epages-docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ePages-de/epages-docs/statuses/{sha}","languages_url":"https://api.github.com/repos/ePages-de/epages-docs/languages","stargazers_url":"https://api.github.com/repos/ePages-de/epages-docs/stargazers","contributors_url":"https://api.github.com/repos/ePages-de/epages-docs/contributors","subscribers_url":"https://api.github.com/repos/ePages-de/epages-docs/subscribers","subscription_url":"https://api.github.com/repos/ePages-de/epages-docs/subscription","commits_url":"https://api.github.com/repos/ePages-de/epages-docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/ePages-de/epages-docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/ePages-de/epages-docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/ePages-de/epages-docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/ePages-de/epages-docs/contents/{+path}","compare_url":"https://api.github.com/repos/ePages-de/epages-docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ePages-de/epages-docs/merges","archive_url":"https://api.github.com/repos/ePages-de/epages-docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ePages-de/epages-docs/downloads","issues_url":"https://api.github.com/repos/ePages-de/epages-docs/issues{/number}","pulls_url":"https://api.github.com/repos/ePages-de/epages-docs/pulls{/number}","milestones_url":"https://api.github.com/repos/ePages-de/epages-docs/milestones{/number}","notifications_url":"https://api.github.com/repos/ePages-de/epages-docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ePages-de/epages-docs/labels{/name}","releases_url":"https://api.github.com/repos/ePages-de/epages-docs/releases{/id}","created_at":"2015-02-10T14:20:56Z","updated_at":"2015-09-19T09:46:31Z","pushed_at":"2015-09-23T09:39:33Z","git_url":"git://github.com/ePages-de/epages-docs.git","ssh_url":"git@github.com:ePages-de/epages-docs.git","clone_url":"https://github.com/ePages-de/epages-docs.git","svn_url":"https://github.com/ePages-de/epages-docs","homepage":"https://developer.epages.com/","size":36632,"stargazers_count":2,"watchers_count":2,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":17,"mirror_url":null,"open_issues_count":6,"forks":17,"open_issues":6,"watchers":2,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/ePages-de/epages-docs/pulls/227"},"html":{"href":"https://github.com/ePages-de/epages-docs/pull/227"},"issue":{"href":"https://api.github.com/repos/ePages-de/epages-docs/issues/227"},"comments":{"href":"https://api.github.com/repos/ePages-de/epages-docs/issues/227/comments"},"review_comments":{"href":"https://api.github.com/repos/ePages-de/epages-docs/pulls/227/comments"},"review_comment":{"href":"https://api.github.com/repos/ePages-de/epages-docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ePages-de/epages-docs/pulls/227/commits"},"statuses":{"href":"https://api.github.com/repos/ePages-de/epages-docs/statuses/4189ef6a87ecd1e33b112d227993149e8b108d62"}}}}