{"id":39304,"date":"2019-10-31T22:29:40","date_gmt":"2019-10-31T19:29:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kak-aws-varit-svoi-elastichnye-servisy-masshtabirovanie-seti\/"},"modified":"2019-10-31T22:29:40","modified_gmt":"2019-10-31T19:29:40","slug":"kak-aws-varit-svoi-elastichnye-servisy-masshtabirovanie-seti","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-aws-varit-svoi-elastichnye-servisy-masshtabirovanie-seti","title":{"rendered":"How AWS 'cooks' its elastic services. Scaling the network","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>The scale of the Amazon Web Services network consists of 69 zones across 22 regions worldwide: the USA, Europe, Asia, Africa, and Australia. Each zone contains up to 8 data centers (DCs), and each DC holds thousands or hundreds of thousands of servers. The network is built to account for all unlikely scenarios of outages. For example, all regions are isolated from each other, and availability zones are distributed several kilometers apart. Even if a cable is cut, the system will switch to backup channels, and data loss will amount to mere packets. More about the principles on which the network is built and its structure will be explained by Vasily Pantyukhin.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/4cc9672442cd7bf744ffced6471be040.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Vasily Pantyukhin<\/b> started as a Unix admin in .ru companies, spent 6 years working with large hardware from Sun Microsystems, and preached datacenter-centricity at EMC for 11 years. He naturally evolved into private clouds, then moved to public ones. Now, as an architect at Amazon Web Services, he provides technical advice to help thrive and grow in the AWS cloud.<\/p>\n<p>In the previous part of the trilogy about the structure of AWS, Vasily delved into the architecture of physical servers and database scaling. Nitro cards, a custom hypervisor based on KVM, and the Amazon Aurora database \u2014 all this is covered in the article \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/471686\/\">How AWS 'cooks' its elastic services. Scaling servers and databases<\/a><\/noindex>\". Read it to immerse yourself in the context, or watch <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/S3f6nWJxBvk\">video recording<\/a><\/noindex> the presentations.<\/p>\n<p>This part will discuss network scaling \u2014 one of the most complex systems in AWS. The evolution from a flat network to a Virtual Private Cloud and its architecture, internal services like Blackfoot and HyperPlane, the noisy neighbor problem, and finally \u2014 the scale of the network, backbone, and physical cables. All this is covered below.<\/p>\n<p><i>Disclaimer: everything below is Vasily's personal opinion and may not reflect the views of Amazon Web Services.<\/i><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Network Scaling<\/h2>\n<p>\nAWS cloud was launched in 2006. Its network was quite primitive \u2014 with a flat structure. The range of private addresses was shared among all tenants of the cloud. When launching a new virtual machine, you would randomly receive an available IP address from this range.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/dde10b64891861582bc56510adb0fb56.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThis approach was simple to implement but fundamentally limited cloud usage. In particular, it made it quite challenging to develop hybrid solutions that merged private networks on-premises and in AWS. The most common issue was overlapping IP address ranges.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/8e95325862ae0438d3b1edef45c692b0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Virtual Private Cloud<\/h3>\n<p>\nThe cloud has proven to be in demand. It's time to consider scalability and the ability to use it for tens of millions of tenants. A flat network has become the main obstacle. Therefore, we thought about how to isolate users from each other at the network level so that they could independently choose IP ranges.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/e082da6a68a889e3091c75dd3aa912ec.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWhat comes to mind first when you think of network isolation? Of course, <b>VLAN<\/b> and <b>VRF \u2014 Virtual Routing and Forwarding<\/b>.<\/p>\n<p>Unfortunately, this didn't work. VLAN ID is only 12 bits, which gives us just 4096 isolated segments. Even in the largest switches, a maximum of 1-2 thousand VRFs can be used. The combination of VRF and VLAN gives us only a few million subnets. This is definitely insufficient for tens of millions of tenants, each of whom should be able to use multiple subnets.<\/p>\n<p>Moreover, we simply cannot afford to buy the required number of large boxes, for example, from Cisco or Juniper. There are two reasons: it\u2019s incredibly expensive, and we do not want to become dependent on their development and patching policies.<\/p>\n<blockquote><p>One conclusion is clear \u2013 we need to build our own solution.<\/p><\/blockquote>\n<p>\nIn 2009, we announced <b>VPC<\/b> \u2014 <b>Virtual Private Cloud<\/b>. The name took hold, and now many cloud providers use it as well.<\/p>\n<p>VPC is a virtual network <b>SDN<\/b> (Software Defined Network). We decided not to invent special protocols at L2 and L3 levels. The network operates on standard Ethernet and IP. To transmit, the traffic of virtual machines is encapsulated in a wrapper of our own protocol. It specifies the ID that belongs to the VPC tenant.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/63c6226b5dcecbf4376547c3c1605fef.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIt sounds simple. However, several serious technical challenges need to be addressed. For example, where and how to store data on the mapping of virtual MAC\/IP addresses, VPC IDs, and corresponding physical MAC\/IP. At the scale of AWS, this is a huge table that must work with minimal latency when accessed. This is handled by <b>the mapping service<\/b>, which is spread thinly across the entire network.<\/p>\n<p>In next-generation machines, encapsulation is performed by Nitro cards at the hardware level. In older instances, encapsulation and decapsulation are done through software.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/d17738749f273d94e943723f7b2a6b5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLet's understand how this works in general terms. Starting with the L2 level, suppose we have a virtual machine with IP 10.0.0.2 located on a physical server 192.168.0.3. It sends data to another virtual machine 10.0.0.3, which resides on 192.168.1.4. An ARP request is formed and reaches the network Nitro card. For simplicity, let's assume both virtual machines are within the same 'blue' VPC.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/d260113b0502cecc328919dd5c3b69ac.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe card replaces the source address with its own and forwards the ARP frame to the mapping service.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/812d7693bc54afc24f6e763fdb91180e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe mapping service returns the information necessary for transmission over the physical L2 network.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/b21fd6edb95ef2e990db813074c7907c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe Nitro card replaces the MAC in the physical network with the address in the VPC in the ARP response.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/6e6931c7fe92d5cf2584c5bf9b2b3fdb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWhen data is transmitted, we wrap logical MAC and IP in a VPC envelope. We send all of this over the physical network using the respective IPs of the source and destination Nitro cards.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/e786d7f88e1fea1557590f2b2bd6e88f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe physical machine intended for the packet performs a check. This is to prevent the possibility of address spoofing. The machine sends a special request to the mapping service asking, 'From the physical machine 192.168.0.3, I've received a packet destined for 10.0.0.3 in the\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/cedf4d7e77936e4cc8f873defefbe37f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe mapping service checks its resource mapping table and either allows or denies the passage of the packet. In all new instances, additional validation is embedded in the Nitro cards. It cannot be circumvented even theoretically. Therefore, spoofing resources in another VPC will not work.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/3e6bc5a80a7d36785299f6a3fbb19d92.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThen, the data is sent to the virtual machine for which it is intended.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/19884070ad3b2b7b2835e2c3c182949a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe mapping service also acts as a logical router for data transmission between virtual machines in different subnets. Conceptually, it is straightforward, and I won't delve into details.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/9d592d738d02bbcf6bfcbda2812f8f0c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThus, with each packet transmission, servers refer to the mapping service. How do we handle the inevitable delays? <b>By caching.<\/b>, of course.<\/p>\n<p>The beauty of it is that it's not necessary to cache the entire massive table. The physical server hosts virtual machines from a relatively small number of VPCs. Information needs to be cached only about these VPCs. Data transmission to other VPCs in 'default' configuration is still not legitimate. If functionalities like VPC peering are used, information about the corresponding VPCs is additionally loaded into the cache.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/5ac44d8854bff3c7738724ee9dda0c57.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWe've got a handle on data transmission in the VPC.<\/p>\n<h3>Blackfoot<\/h3>\n<p>\nWhat to do when traffic needs to be sent externally, for example, to the Internet or through a VPN? Here we are helped by <b>Blackfoot<\/b> \u2014 an internal AWS service. It was developed by our South African team. Thus, the service is named after the penguin that lives in South Africa.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/dc6f233224d130df42adf522602167c6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBlackfoot decapsulates traffic and handles it as required. Data is sent to the Internet as is.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/b6a51230202355b27de9730fbc18bd7f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nData is decapsulated and re-encapsulated in an IPsec wrapper when using a VPN.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/ef76780a9be99d72c5763a41274f4224.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWhen using Direct Connect, traffic is tagged and sent to the appropriate VLAN.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/89adc2616e0bf97355a2c638720fd791.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>HyperPlane<\/h3>\n<p>\nThis is an internal flow control service. Many network services require control <b>of data flow state<\/b>. For example, when using NAT, flow control must ensure that each pair of \"IP: destination port\" corresponds to a unique outgoing port. In the case of a load balancer, <b>NLB<\/b> \u2014 <b>Network Load Balancer<\/b>, the data flow must always be directed to the same target virtual machine. Security Groups act as a stateful firewall. They monitor incoming traffic and implicitly open ports for outgoing packet flows.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/da1ad8e7179ebffbe786348db25f0a95.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn the AWS cloud, latency requirements are extremely high. Therefore, <b>HyperPlane<\/b> it is critical for the functionality of the entire network.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/eb73570e579c6e0b05727029345e559a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHyperPlane is built on EC2 virtual machines. There is no magic here, just cleverness. The trick is that these are virtual machines with large RAM. The transactions are conducted solely in memory. This allows achieving latencies of just a few microseconds. Working with disk would kill all performance.\u00a0<\/p>\n<p>HyperPlane is a distributed system made up of a vast number of such EC2 machines. Each virtual machine has a throughput of 5 GB\/s. Across the entire regional network, this provides immense terabits of bandwidth and allows processing <b>millions of connections per second.<\/b>.<\/p>\n<p>HyperPlane works only with streams. VPC packet encapsulation is completely transparent to it. Any potential vulnerability in this internal service will still not breach the isolation of the VPC. Security is managed at lower levels.<\/p>\n<h3>Noisy neighbor<\/h3>\n<p>\nThere is also the issue of <b>the noisy neighbor<\/b> \u2014 <b>noisy neighbor<\/b>Assuming we have 8 nodes. These nodes handle traffic for all cloud users. It seems fine, and the load should be evenly distributed across all nodes. The nodes are very powerful, and overloading them is difficult.<\/p>\n<p>However, we design our architecture even considering unlikely scenarios.\u00a0<\/p>\n<blockquote><p>A low probability does not mean impossibility.<\/p><\/blockquote>\n<p>\nWe can imagine a situation where one or more users generate too much load. All HyperPlane nodes are involved in handling this load, and other users may potentially feel some performance degradation. This undermines the cloud concept, where tenants cannot influence one another.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/8508878637dc3d4c0b0b565e08d73e52.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHow can we solve the noisy neighbor problem? The first thing that comes to mind is sharding. Our 8 nodes are logically divided into 4 shards with 2 nodes each. Now the noisy neighbor will only affect a quarter of all users, but significantly.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/33e10c10b246ee8ddeb171ac44372c56.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLet's approach it differently. We'll allocate just 3 nodes per user.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/1afa7337b8418740b9ef5860be9d3a82.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe trick is to assign nodes to different users randomly. In the image below, the blue user shares nodes with one of two other users \u2014 the green and orange ones.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/e0fd896db825b390bd66d2055707464d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWith 8 nodes and 3 users, the probability of the noisy neighbor overlapping with one of the users is 54%. This is the likelihood that the blue user will impact other tenants, but only with part of their load. In our example, this influence will not be noticeable to everyone, but only to a third of all users. This is already a decent result.<\/p>\n<p>The number of users who will overlap<\/p>\n<p>The probability in percentage<\/p>\n<p>0<\/p>\n<p>18%<\/p>\n<p>1<\/p>\n<p>54%<\/p>\n<p>2<\/p>\n<p>26%<\/p>\n<p>3<\/p>\n<p>2%<\/p>\n<p>Let's bring the situation closer to reality \u2014 take 100 nodes and 5 users spread across 5 nodes. In this case, none of the nodes will overlap with a probability of 77%.\u00a0<\/p>\n<p>The number of users who will overlap<\/p>\n<p>The probability in percentage<\/p>\n<p>0<\/p>\n<p>77%<\/p>\n<p>1<\/p>\n<p>21%<\/p>\n<p>2<\/p>\n<p>1,8%<\/p>\n<p>3<\/p>\n<p>0,06%<\/p>\n<p>4<\/p>\n<p>0,0006%<\/p>\n<p>5<\/p>\n<p>0,00000013%<\/p>\n<p>In a real situation, with a vast number of HyperPlane nodes and users, the potential impact of a noisy neighbor on other users is minimal. This method is called <b>shuffle sharding<\/b> \u2014 <b>. It minimizes the negative effect of node failures.<\/b>Many services are built on HyperPlane: Network Load Balancer, NAT Gateway, Amazon EFS, AWS PrivateLink, AWS Transit Gateway.<\/p>\n<p>The scale of the network<\/p>\n<h3>Network Scale<\/h3>\n<p>\nNow let's talk about the scale of the network itself. As of October 2019, AWS offers its services in <b>22 regions<\/b>, with 9 more planned.<\/p>\n<ul>\n<li>Each region contains several Availability Zones \u2014 AZ. There are a total of 69 worldwide.\n<\/li>\n<li>Each AZ consists of Data Centers. There are no more than 8 of them.\n<\/li>\n<li>The data centers house an enormous number of servers, some with up to 300,000.\n<\/li>\n<\/ul>\n<p>\nNow let's average all this, multiply, and we will get an impressive number that reflects <b>the scale of the Amazon cloud.<\/b>.<\/p>\n<p>Between the availability zones and data centers, there are many optical links. In one of our largest regions alone, there are 388 links for communication between AZs and transit centers with other regions. In total, this gives a staggering <b>5000 Tbps.<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/2d9faa9275665bc1d3c6fbb49235fac4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe AWS backbone is specifically built for the cloud and optimized for its operations. We build it on links <b>100 Gbps.<\/b>. We control them completely, except in the regions within China. The traffic is not shared with loads from other companies.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/3359c6ade7215527f40ee3b54a0b700e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOf course, we are not the only cloud provider with a private backbone network. More and more large companies are going down this path. This is confirmed by independent researchers, such as from <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.telegeography.com\/telegeographys-content-providers-submarine-cable-holdings-list\">Telegeography.<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/b7aa723241783d131881caf5db73f7e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe graph shows that the share of content providers and cloud providers is growing. As a result, the share of Internet traffic from backbone providers is continuously decreasing.<\/p>\n<p>Let me explain why this is happening. Previously, most web services were available and consumed directly from the Internet. Now, more and more servers are located in the cloud and accessed through <b>CDN<\/b> \u2014 <b>Content Distribution Network.<\/b>To access a resource, a user goes through the Internet only to the nearest CDN PoP \u2014 <b>Point of Presence.<\/b>Most often, this is somewhere nearby. After that, it leaves the public Internet and travels over a private backbone across the Atlantic, for example, directly to the resource.<\/p>\n<p>It's interesting to think about how the Internet will change in 10 years if this trend continues.<\/p>\n<h3>Physical channels.<\/h3>\n<p>\nScientists have not yet figured out how to increase the speed of light in the universe, but they have made significant advances in the methods of transmitting it through fiber optics. Currently, we use cables with 6912 fibers. This helps to significantly optimize the cost of their installation.<\/p>\n<p>In some regions, we have to use special cables. For example, in the Sydney region, we use cables with special termite-resistant coating.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"How AWS &#039;cooks&#039; its elastic services. Scaling the network\" src=\"\/wp-content\/uploads\/2019\/10\/738bec49680ba7a31237862f0834942a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNo one is immune to troubles, and sometimes our channels get damaged. In the photo to the right, you can see optical cables in one of the American regions that were cut by builders. As a result of the incident, only 13 data packets were lost, which is remarkable. Once again \u2014 just 13! The system literally switched to backup channels instantly \u2014 the scale works.<\/p>\n<p>We took a quick look at some Amazon cloud services and technologies. I hope you now have at least some idea of the scale of the challenges that our engineers face. Personally, I find this very exciting.\u00a0<\/p>\n<blockquote><p>This is the final part of the trilogy by Vasily Pantiukhin about the AWS infrastructure. In <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/471686\/\">the first<\/a><\/noindex> part, server optimization and database scaling were described, and in <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/464305\/\">the second<\/a><\/noindex> \u2014 serverless functions and Firecracker.<\/p>\n<p>At <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\">HighLoad++<\/a><\/noindex> In November, Vasily Pantiukhin will share new details about Amazon's infrastructure. He <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\/abstracts\/5977\">popular relocation destinations: from New Zealand to Kalach in the Voronezh region.<\/a><\/noindex> discusses the reasons for failures and designing distributed systems at Amazon. Until October 24, you can still <noindex><a rel=\"nofollow\" href=\"https:\/\/conf.ontico.ru\/conference\/join\/hl2019.html\">book<\/a><\/noindex> a ticket at a good price, and pay later. We look forward to seeing you at HighLoad++, come \u2014 let's chat!<\/p><\/blockquote>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/471688\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0430\u0441\u0448\u0442\u0430\u0431 \u0441\u0435\u0442\u0438 Amazon Web Services \u2014\u00a0\u044d\u0442\u043e 69 \u0437\u043e\u043d \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443 \u0432 22 \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u0445: \u0421\u0428\u0410, \u0415\u0432\u0440\u043e\u043f\u0430, \u0410\u0437\u0438\u044f, \u0410\u0444\u0440\u0438\u043a\u0430 \u0438 \u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f. \u0412 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u043e\u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e 8 \u0426\u041e\u0414 \u2014 \u0426\u0435\u043d\u0442\u0440\u043e\u0432 \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0414\u0430\u043d\u043d\u044b\u0445. \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0426\u041e\u0414 \u0442\u044b\u0441\u044f\u0447\u0438 \u0438\u043b\u0438 \u0441\u043e\u0442\u043d\u0438 \u0442\u044b\u0441\u044f\u0447 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u0421\u0435\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e \u0432\u0441\u0435 \u043c\u0430\u043b\u043e\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u043f\u0435\u0440\u0435\u0431\u043e\u0435\u0432 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0441\u0447\u0435\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0441\u0435 \u0440\u0435\u0433\u0438\u043e\u043d\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":39305,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-39304","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0430\u0441\u0448\u0442\u0430\u0431 \u0441\u0435\u0442\u0438 Amazon Web Services \u2014 \u044d\u0442\u043e 69 \u0437\u043e\u043d \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443 \u0432 22 \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u0445: \u0421\u0428\u0410, \u0415\u0432\u0440\u043e\u043f\u0430, \u0410\u0437\u0438\u044f, \u0410\u0444\u0440\u0438\u043a\u0430 \u0438 \u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f. \u0412 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u043e\u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e 8 \u0426\u041e\u0414 \u2014 \u0426\u0435\u043d\u0442\u0440\u043e\u0432 \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0414\u0430\u043d\u043d\u044b\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-aws-varit-svoi-elastichnye-servisy-masshtabirovanie-seti\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a AWS \u00ab\u0432\u0430\u0440\u0438\u0442\u00bb \u0441\u0432\u043e\u0438 \u044d\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b. \u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0442\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0430\u0441\u0448\u0442\u0430\u0431 \u0441\u0435\u0442\u0438 Amazon Web Services \u2014 \u044d\u0442\u043e 69 \u0437\u043e\u043d \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443 \u0432 22 \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u0445: \u0421\u0428\u0410, \u0415\u0432\u0440\u043e\u043f\u0430, \u0410\u0437\u0438\u044f, \u0410\u0444\u0440\u0438\u043a\u0430 \u0438 \u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f. \u0412 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u043e\u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e 8 \u0426\u041e\u0414 \u2014 \u0426\u0435\u043d\u0442\u0440\u043e\u0432 \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0414\u0430\u043d\u043d\u044b\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-aws-varit-svoi-elastichnye-servisy-masshtabirovanie-seti\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:29:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:29:40+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47How AWS 'brews' its elastic services. Network scaling | ProHoster","description":"The scale of the Amazon Web Services network is 69 zones around the world in 22 regions: the USA, Europe, Asia, Africa, and Australia. Each zone has up to 8 data centers.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-aws-varit-svoi-elastichnye-servisy-masshtabirovanie-seti","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a AWS \u00ab\u0432\u0430\u0440\u0438\u0442\u00bb \u0441\u0432\u043e\u0438 \u044d\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b. \u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0442\u0438 | ProHoster","og:description":"\u041c\u0430\u0441\u0448\u0442\u0430\u0431 \u0441\u0435\u0442\u0438 Amazon Web Services \u2014 \u044d\u0442\u043e 69 \u0437\u043e\u043d \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443 \u0432 22 \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u0445: \u0421\u0428\u0410, \u0415\u0432\u0440\u043e\u043f\u0430, \u0410\u0437\u0438\u044f, \u0410\u0444\u0440\u0438\u043a\u0430 \u0438 \u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f. \u0412 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u043e\u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e 8 \u0426\u041e\u0414 \u2014 \u0426\u0435\u043d\u0442\u0440\u043e\u0432 \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0414\u0430\u043d\u043d\u044b\u0445.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-aws-varit-svoi-elastichnye-servisy-masshtabirovanie-seti","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:29:40+00:00","article:modified_time":"2019-10-31T19:29:40+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39304","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 01:37:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:52:26","updated":"2026-01-24 01:37:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/39304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=39304"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/39304\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/39305"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=39304"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=39304"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=39304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}