{"id":12433,"date":"2018-03-11T11:56:59","date_gmt":"2018-03-11T10:56:59","guid":{"rendered":"https:\/\/www.sysbus.eu\/?p=12433"},"modified":"2018-03-07T12:02:19","modified_gmt":"2018-03-07T11:02:19","slug":"routing-machts-moeglich","status":"publish","type":"post","link":"https:\/\/www.sysbus.eu\/?p=12433","title":{"rendered":"Routing macht\u2019s m\u00f6glich"},"content":{"rendered":"<p><a href=\"https:\/\/www.sysbus.eu\/?attachment_id=12431\" rel=\"attachment wp-att-12431\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-12431\" src=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2018\/03\/Constantin-Gonzalez-Principal-Solutions-Architect-AWS-300x200.jpg\" alt=\"\" width=\"300\" height=\"200\" srcset=\"https:\/\/www.sysbus.eu\/wp-content\/uploads\/2018\/03\/Constantin-Gonzalez-Principal-Solutions-Architect-AWS-300x200.jpg 300w, https:\/\/www.sysbus.eu\/wp-content\/uploads\/2018\/03\/Constantin-Gonzalez-Principal-Solutions-Architect-AWS.jpg 750w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Autor\/Redakteur: <a href=\"https:\/\/aws.amazon.com\/de\/\">Constantin Gonzalez, Principal Solutions Architekt bei AWS<\/a>\/gg<\/p>\n<p>Die Zeiten, in denen eine einzige Applikation alle Funktionen abbildete, neigen sich dem Ende zu: Microservices treten in die Fu\u00dfstapfen monolithischer IT-Strukturen und umfassen eine Gesamtl\u00f6sung, bestehend aus kleinen, modularen Prozessen. Das neue Architekturmuster st\u00f6\u00dft besonders im E-Commerce auf positive Resonanz.<\/p>\n<p><!--more--><\/p>\n<p>Microservices kommen immer h\u00e4ufiger in modernen und fortschrittlichen Entwicklungsmethoden zum Einsatz. Ein Grund daf\u00fcr ist, dass sich einzelne Komponenten von Microservices immer wieder ver\u00e4ndern und auf den aktuellen Stand bringen lassen. In kleinen virtualisierten Umgebungen, sogenannten Docker-Containern, laufen sie au\u00dferdem sehr leistungsf\u00e4hig und dabei sicher voneinander getrennt.<\/p>\n<p><strong>Load Balancing mit Microservices<\/strong><\/p>\n<p>Microservices, die per Load Balancing auf mehrere Systeme verteilt werden, waren allerdings lange Zeit aufwendig zu betreiben. Au\u00dferdem erforderte die Ausf\u00fchrung tiefgreifendes IT-Know-how. Administratoren mussten sich deshalb h\u00e4ufig mit komplexen L\u00f6sungen der Marke Eigenbau auseinandersetzen.<\/p>\n<p>Der Application Load Balancer (ALB) von Amazon Web Services (AWS) schafft diese Probleme aus der Welt: Nach der Analyse der URL trifft ALB eine Entscheidung dar\u00fcber, wohin der Traffic geschickt wird. Dazu geh\u00f6ren EC2-Instanzen in unterschiedlichen Availability Zones. Dieses Verfahren ist besonders bei Web-Applikationen effizient, die in verschiedene Teile segmentiert sind. So kann sich zum Beispiel ein Teil ausschlie\u00dflich um die User-Verwaltung k\u00fcmmern und somit alle URLs bearbeiten, die mit \/user beginnen.<\/p>\n<p>\u201eListener\u201c ist eine weitere Komponente des ALB. Sie ist f\u00fcr die Assets verantwortlich. Der \u201eListener\u201c pr\u00fcft die Verbindungsanfragen anhand des konfigurierten Protokolls und leitet Anfragen an eine oder mehrere Zielgruppen weiter. Diese Anfragen basieren auf den definierten Regeln des Kunden. Jede Regel gibt eine Zielgruppe, Kondition und Priorit\u00e4t an. Ist die Bedingung erf\u00fcllt, wird der Verkehr an die entsprechende Zielgruppe weitergeleitet. Der \u201eListener\u201c liefert somit den Content aus. Jede Zielgruppe leitet Anfragen \u00fcber die von ihnen angegebene Protokoll- und Portnummer an ein oder mehrere registrierte Ziele (zum Beispiel EC2-Instanzen) weiter. Diese k\u00f6nnen ein Ziel mit mehreren Zielgruppen registrieren und sogenannte Health-Checks pro Zielgruppe konfigurieren.<\/p>\n<p><strong>Segmentierung nach praktischen Erw\u00e4gungen<\/strong><\/p>\n<p>Der ALB verteilt also den Traffic, basierend auf der Applikationsarchitektur. Entwickler sind damit in der Lage, eine Segmentierung von Microservices nach praktischen Erw\u00e4gungen vorzunehmen. Im Falle eines Webshops bedeutet das konkret, dass sich seine drei Services \u201eBetrachten und Durchsuchen des Produktkatalogs\u201c, \u201eVerwalten von Bestellungen\u201c und Registrierung als neuer Benutzer\u201c in drei verschiedene Microservices unterteilen lassen. Verschiedene URLs (beispielsweise www.shop.de<a href=\"http:\/\/www.shop.de\/account\">\/<\/a>account, www.shop.de\/bestellungen und www.shop.de\/register) segmentieren somit klar das Online-Angebot. Das bedeutet, dass die ALB den Betrieb von getrennten Infrastrukturen unterst\u00fctzt \u2013 die Infrastrukturen k\u00f6nnen aber von einem gemeinsamen Load Balancer aus angesprochen werden. Genau hier befindet sich der entscheidende Unterschied zwischen der AWS-L\u00f6sung und konventionellen Load Balancern.<\/p>\n<p><!--nextpage--><\/p>\n<p>Der ALB unterst\u00fctzt das WebSocket-Protokoll und HTTP\/2, der auf dem Application Layer arbeitet. Je nachdem wie der Request im Content-basierten Routing aufgebaut ist, k\u00f6nnen Web Requests auf mehrere Services oder Container aufgeteilt werden. Die Komplexit\u00e4t einer Anwendung l\u00e4sst sich auf diese Weise erheblich reduzieren; die Entwicklung kann wesentlich einfacher erfolgen.<\/p>\n<p>Der ALB bietet eine hohe Verf\u00fcgbarkeit, robuste Sicherheit durch Unterst\u00fctzung von VPCs und HTTPS sowie eine automatische Skalierung. Der Schutz gegen Ausf\u00e4lle des kompletten Rechenzentrums ist au\u00dferdem gew\u00e4hrleistet: Der Applikations-Traffic kann \u00fcber mehrere EC2-Instanzen in mehrere Verf\u00fcgbarkeitszonen geroutet werden. Um den Status einzelner Service zu \u00fcberpr\u00fcfen, ist ein permanentes Monitoring m\u00f6glich. Der ALB l\u00e4uft gemeinsam mit einer Reihe von AWS-Services. Unterst\u00fctzt werden Auto Scaling, AWS CloudFormation, Amazon EC2 Container Service (ECS), AWS Certificate Manager und AWS Identity und Access Management (IAM).<\/p>\n<p><strong>Host-basiertes Load Balancing leichtgemacht <\/strong><\/p>\n<p>AWS bietet mit ALB seit geraumer Zeit die M\u00f6glichkeit, ein Host-basiertes Routing durchzuf\u00fchren. Dies bedeutet, dass Regeln erstellt werden, die den ankommenden Traffic auf Basis des Domain-Namens im Host Header routen. Anfragen an www.beispiel.de werden also an eine andere Zielgruppe geroutet als diejenigen an api.beispiel.de. S\u00e4mtliche Anfragen an weitere Adressen eines Web-Angebots k\u00f6nnen an eine dritte Stelle geleitet werden. Au\u00dferdem ist es m\u00f6glich, Regeln anzulegen, die das Pfad-basierte Routing mit dem Host-basierten Routing kombinieren. Eine Anfrage f\u00fcr api.beispiel.de\/production landet also beispielsweise an einer anderen Stelle als eine Anfrage f\u00fcr api.beispiel.de\/sandbox.<\/p>\n<p>Bis vor kurzem nutzten AWS-Kunden verschiedene Proxy-Server, die allein f\u00fcr das Host-basierte Routing betrieben wurden. Per Host-basiertem Routins \u00fcber den ALB wird diese Hilfskonstruktion nicht mehr ben\u00f6tigt, da das Routing direkt \u00fcber ALB-Regeln erfolgt.<\/p>\n<p>Au\u00dferdem werden Kosten f\u00fcr die nicht l\u00e4nger ben\u00f6tigte Proxy-Schicht eingespart, weil der zus\u00e4tzliche Layer entf\u00e4llt. Nicht zuletzt gestaltet sich die Architektur wesentlich einfacher, w\u00e4hrend sich der operative Overhead verkleinert.<\/p>\n<p>Besonders Nutzer von Containern profitieren vom Host-basierten Load-Balancing. Diese Zielgruppe zieht aus wichtigen Services wie beispielsweise dem Port Mapping und umfangreichen Statusmeldungen (\u201ehealth checks\u201c) einen Vorteil. Microservices lassen sich in vielen individuellen Containern vom Amazon EC2 Container Service (ECS) verwalten, gemeinsam konsolidieren und effizient auf Amazon EC2 betreiben. Dabei verlieren Administratoren nie den \u00dcberblick, denn die Container sind von einfach verst\u00e4ndlichen Host- und Pfad-basierten URLs aus ansprechbar. Das gilt sogar dann, wenn sie \u00fcber dynamisch zugeordnete Port-Nummern adressiert werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Autor\/Redakteur: Constantin Gonzalez, Principal Solutions Architekt bei AWS\/gg Die Zeiten, in denen eine einzige Applikation alle Funktionen abbildete, neigen sich<\/p>\n","protected":false},"author":3,"featured_media":12431,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[8,22],"tags":[11098,2073,11106,11099,11104,7962,4135,11108,11105,11109,3137,5081,3326,2805,11107,11102,5375,1747,11100,5053,8759,7440,6047,5568,6256,11103,11101,9494],"class_list":["post-12433","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artikel","category-cloud","tag-alb","tag-amazon","tag-amazon-ec2-container-service","tag-application-load-balancer","tag-auto-scaling","tag-availability","tag-aws","tag-aws-certificate-manager","tag-aws-cloudformation","tag-aws-identity-und-access-management","tag-container","tag-docker","tag-e-commerce","tag-ec2","tag-ecs","tag-http-2","tag-https","tag-iam","tag-listener","tag-load-balancing","tag-microservice","tag-proxy","tag-routing","tag-url","tag-virtualisierung","tag-vpcs","tag-websocket","tag-zone"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/12433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12433"}],"version-history":[{"count":1,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/12433\/revisions"}],"predecessor-version":[{"id":12434,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/posts\/12433\/revisions\/12434"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=\/wp\/v2\/media\/12431"}],"wp:attachment":[{"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sysbus.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}