{"id":91979,"date":"2020-08-21T07:42:12","date_gmt":"2020-08-21T05:42:12","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-spokojno-spat-kogda-u-vas-oblachnyj-servis-osnovnye-arhitekturnye-sovety"},"modified":"2020-08-21T07:42:12","modified_gmt":"2020-08-21T05:42:12","slug":"kak-spokojno-spat-kogda-u-vas-oblachnyj-servis-osnovnye-arhitekturnye-sovety","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-spokojno-spat-kogda-u-vas-oblachnyj-servis-osnovnye-arhitekturnye-sovety","title":{"rendered":"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/2ae3bcc5a2894c2a02468e32e32e8848.png\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" href=\"https:\/\/www.deviantart.com\/sophiagworld\/art\/LOST-849430483\"><i>LOST by sophiagworld<\/i><\/a><\/noindex><\/p>\n<p>This article compiles some general templates to help engineers work with large-scale services that receive millions of user requests.\u00a0<\/p>\n<p>Based on the author's experience, this is not an exhaustive list, but definitely <strong>effective<\/strong> advice. So, let's get started.<\/p>\n<p><i>Translated with support from <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\"><i>Mail.ru Cloud Solutions<\/i><\/a><\/noindex><i>.<\/i><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Basic Level<\/h1>\n<p>\nThe measures listed below are relatively simple to implement but yield high returns. If you haven't taken them before, you will be surprised by the significant improvements.<\/p>\n<h2>Infrastructure as Code<\/h2>\n<p>\nThe first part of the advice is to implement infrastructure as code. This means you should have a software method for deploying all infrastructure. It sounds complicated, but we are actually talking about the following code:<\/p>\n<blockquote><p>Deploying 100 virtual machines<\/p>\n<ul>\n<li>with Ubuntu<\/li>\n<li>2 GB RAM on each<\/li>\n<li>they will have the following code<\/li>\n<li>with such parameters<\/li>\n<\/ul>\n<\/blockquote>\n<p>\nYou can track changes in the infrastructure and quickly revert to them using a version control system.<\/p>\n<p>The modernist in me says that you can use Kubernetes\/Docker to do all of the above, and he's right.<\/p>\n<p>Additionally, automation can be ensured with Chef, Puppet, or Terraform.<\/p>\n<h2>Continuous Integration and Delivery<\/h2>\n<p>\nTo create a scalable service, it is important to have a build and test pipeline for each pull request. Even if the test is the simplest, it at least ensures that the code you are deploying compiles.<\/p>\n<p>At this stage, you are answering the question: <strong>Will my build compile and pass tests, is it valid?<\/strong> This may seem like a low bar, but it solves many problems.<\/p>\n<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/ecdabe9d4a7eb722df8d0268009fa509.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>There is nothing more beautiful than seeing those checkmarks<\/i><\/p>\n<p>For this technology, you might consider Github, CircleCI, or Jenkins.<\/p>\n<h2>Load Balancers<\/h2>\n<p>\nSo, we want to deploy a load balancer to redirect traffic and ensure even load across all nodes or the service's operation in case of failure:<\/p>\n<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/db0d5f91dfbae5e7cba5b330a0629cac.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA load balancer typically helps distribute traffic well. Best practice is redundant balancing, so you have no single points of failure.<\/p>\n<p>Load balancers are usually configured in the cloud you are using.<\/p>\n<h2>RayID, correlation ID, or UUID for requests<\/h2>\n<p>\nHave you ever encountered an error in an application with a message like this: <strong>\u201cSomething went wrong. Please save this ID and send it to our support team.\u201d<\/strong>?<\/p>\n<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/d0f6db07574d882b9c3f8ae890068184.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>A unique identifier, correlation ID, RayID, or any of its variants is a unique identifier that allows tracking a request throughout its lifecycle.<\/strong> This allows you to trace the entire request path in the logs.<\/p>\n<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/2292ca3c4ee53481546756b8ccee2e45.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>The user makes a request to system A, then A connects to B, which connects to C, saves in X, and then the request returns to A.<\/i><\/p>\n<p>If you were to remotely connect to virtual machines and attempt to trace the request path (and manually correlate which calls are made), you would go insane. Having a unique identifier greatly simplifies this process. It's one of the simplest things you can do to save time as the service grows.<\/p>\n<h1>Intermediate level<\/h1>\n<p>\nHere, the advice becomes more complex than previous ones, but the right tools make the job easier, ensuring a return on investment even for small and medium-sized businesses.<\/p>\n<h2>Centralized logging<\/h2>\n<p>\nCongratulations! You\u2019ve deployed 100 virtual machines. The next day, the CEO comes in and complains about an error encountered during service testing. He provides the relevant identifier we discussed earlier, but you have to sift through the logs of 100 machines to find the one that caused the failure. And it has to be located before tomorrow's presentation.<\/p>\n<p>While this sounds like a fun adventure, it's better to ensure that you have the ability to search across all logs from one place. I solved the centralized logging problem using the built-in functionality of the ELK stack: it supports log collection with search capabilities. This will really help tackle the issue of finding a specific log. As a bonus, you can create charts and other fun things.<\/p>\n<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/59ed40f7247d3f5a331095bbeafa555e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>ELK stack functionality<\/i><\/p>\n<h2>Monitoring agents<\/h2>\n<p>\nNow that your service is up and running, you need to ensure it operates smoothly. The best way to do this is to run several <strong>agents<\/strong>, which work in parallel and check that it is operating and performing basic operations.<\/p>\n<p>At this stage, you verify that <strong>The launched build performs well and operates normally.<\/strong>.<\/p>\n<p>For small and medium projects, I recommend Postman for monitoring and documenting APIs. Overall, you just need to ensure you have a way to know when a failure occurs and receive timely notifications.<\/p>\n<h2>Auto-scaling based on load.<\/h2>\n<p>\nIt's very simple. If you have a virtual machine handling requests and it approaches 80% memory usage, you can either increase its resources or add more virtual machines to the cluster. Automating these operations is great for elastic power scaling under load. But you should always be cautious about how much money you spend and set reasonable limits.<\/p>\n<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/8d74b51a41bbc9d3983d71ee972de199.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIn most cloud services, you can configure auto-scaling using more servers or more powerful servers.<\/p>\n<h2>Experimentation system.<\/h2>\n<p>\nA good way to safely deploy updates is to test something with 1% of users for an hour. You've probably seen such mechanisms in action. For example, Facebook shows parts of its audience a different color or changes the font size to see how users perceive the changes. This is called A\/B testing.<\/p>\n<p>Even the release of a new feature can be launched as an experiment, and then you can determine how to deploy it. You also have the ability to 'roll back' or change the configuration on the fly considering a feature that causes degradation of your service.<\/p>\n<h1>Advanced level.<\/h1>\n<p>\nHere are tips that are quite difficult to implement. You will probably need a bit more resources, so it will be challenging for a small or medium-sized company to manage this.<\/p>\n<h2>Blue-green deployments.<\/h2>\n<p>\nThis is what I call the 'Erlang' way of deployment. Erlang became widely used when telephone companies emerged. Software switches were used for routing phone calls. The main task of the software for these switches was to avoid dropping calls during system updates. Erlang has a great way of loading a new module without crashing the previous one.<\/p>\n<p>This step depends on the presence of a load balancer. Let's say you have version N of your software, and then you want to deploy version N+1.\u00a0<\/p>\n<p>You <strong>could<\/strong> simply stop the service and deploy the next version at a time that is convenient for your users, resulting in some downtime. But let\u2019s assume that you have <strong>really<\/strong> strict SLA conditions. Thus, a 99.99% SLA means you can go offline <i>only<\/i> for 52 minutes a year.<\/p>\n<p>If you genuinely want to achieve such metrics, you need two deployments simultaneously:\u00a0<\/p>\n<ul>\n<li>the current one (N);<\/li>\n<li>the next version (N+1).\u00a0<\/li>\n<\/ul>\n<p>\nYou instruct the load balancer to redirect a percentage of traffic to the new version (N+1), while you actively monitor for regressions.<\/p>\n<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/49c4be483564045c19ea1268ad1059a4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Here we have a green deployment N that is functioning normally. We are trying to transition to the next version of this deployment.<\/i><\/p>\n<p>First, we send a truly small test to see if our deployment N+1 works with a limited amount of traffic:<\/p>\n<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/3e352812f0aa7f08898fb69fb970e742.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nFinally, we have a set of automated checks that we ultimately run until our deployment is complete. If you <i>are very, very<\/i> careful, you can also keep your deployment N indefinitely for quick rollback in case of a bad regression:<\/p>\n<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/517d0696f1e165573fad0457a8a55bb9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIf you want to take it to an even more advanced level, let everything in the blue-green deployment run automatically.<\/p>\n<h2>Anomaly detection and automatic mitigation<\/h2>\n<p>\nGiven that you have centralized logging and good log collection, you can already set higher goals. For example, proactively forecast failures. Functions are tracked on monitors and in the logs, and various graphs are built \u2014 you can predict in advance what might go wrong:<\/p>\n<p><img decoding=\"async\" alt=\"How to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips\" src=\"\/wp-content\/uploads\/2020\/08\/ad40120961ee1e115d0b818338c26559.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWith anomaly detection, you begin to study some hints provided by the service. For example, a spike in CPU load may indicate that a hard drive is failing, while a spike in the number of requests means scaling is necessary. Such statistics can make the service proactive.<\/p>\n<p>By receiving such analytical data, you can scale in any dimension, proactively and reactively modifying the characteristics of machines, databases, connections, and other resources.<\/p>\n<h1>That's it!<\/h1>\n<p>\nThis priority list will save you many issues when you scale your cloud service.<\/p>\n<p>The author of the original article invites readers to leave their comments and make edits. The article is distributed as open source; the author accepts pull requests on Github. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/danielsada\/danielsada.tech\">on Github.<\/a><\/noindex>.<\/p>\n<p>Further reading on the topic:<\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/510200\/\">Go and CPU caches<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/490362\/\">Kubernetes in Pirate Style with an Implementation Template<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/tele.click\/k8s_mail\">Our Telegram channel Around Kubernetes<\/a><\/noindex><\/li>\n<\/ol>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/513840\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>LOST by sophiagworld \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0449\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b, \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0449\u0438\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0434\u0435\u043b\u0430\u044e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\u00a0 \u041f\u043e \u043e\u043f\u044b\u0442\u0443 \u0430\u0432\u0442\u043e\u0440\u0430, \u044d\u0442\u043e \u043d\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b. \u0418\u0442\u0430\u043a, \u043d\u0430\u0447\u043d\u0435\u043c. \u041f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 Mail.ru Cloud Solutions. \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435 \u043c\u0435\u0440\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e \u0434\u0430\u044e\u0442 \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u043e\u0442\u0434\u0430\u0447\u0443. \u0415\u0441\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91980,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91979","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=\"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-spokojno-spat-kogda-u-vas-oblachnyj-servis-osnovnye-arhitekturnye-sovety\" \/>\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 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u043f\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441: \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-spokojno-spat-kogda-u-vas-oblachnyj-servis-osnovnye-arhitekturnye-sovety\" \/>\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=\"2020-08-21T05:42:12+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-21T05:42:12+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 to Sleep Peacefully When You Have a Cloud Service: Key Architectural Tips | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-spokojno-spat-kogda-u-vas-oblachnyj-servis-osnovnye-arhitekturnye-sovety","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 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u043f\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441: \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b | ProHoster","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/kak-spokojno-spat-kogda-u-vas-oblachnyj-servis-osnovnye-arhitekturnye-sovety","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":"2020-08-21T05:42:12+00:00","article:modified_time":"2020-08-21T05:42:12+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91979","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:17:36","updated":"2022-10-02 23:29:29","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\/91979","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=91979"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/91979\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/91980"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=91979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=91979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=91979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}