{"id":55881,"date":"2020-01-31T00:00:00","date_gmt":"2020-01-30T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij"},"modified":"2020-02-18T14:04:02","modified_gmt":"2020-02-18T11:04:02","slug":"sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij","title":{"rendered":"Tips and information sources for building serverless applications","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Tips and information sources for building serverless applications\" src=\"\/wp-content\/uploads\/2020\/01\/a29ca83a52a809d148aebbd6821d4ef9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAlthough serverless technologies have rapidly gained popularity in recent years, there are still many misconceptions and concerns associated with them. Vendor lock-in, tooling, cost management, cold start, monitoring, and development lifecycle\u2014these topics are actively discussed when it comes to serverless technologies. In this article, we will explore some of the mentioned topics and share tips and links to useful resources to help newcomers create powerful, flexible, and cost-effective serverless applications.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Misconceptions about Serverless Technologies<\/h2>\n<p>\nMany people believe that serverless and Function as a Service (<noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/serverless.html#unpacking-faas\">Functions as a Service<\/a><\/noindex>, FaaS) are almost the same. This suggests that the difference is not that significant, and it is worth adopting the innovation. While AWS Lambda was one of the 'stars' of the serverless technology boom and one of the most popular elements of serverless architecture, this architecture is more than just FaaS.<\/p>\n<p>The main principle of serverless technologies is that you do not need to worry about managing and scaling infrastructure; you pay only for what you use. Many services fit these criteria\u2014AWS DynamoDB, S3, SNS or SQS, Graphcool, Auth0, Now, Netlify, Firebase, and many others. Overall, serverless means leveraging all the capabilities of cloud computing without the need to manage and optimize infrastructure for scaling. It also means that infrastructure-level security is no longer your concern, which is a huge advantage considering the difficulty and complexity of meeting security standards. Finally, you do not need to purchase the infrastructure provided for your use.<\/p>\n<p>Serverless can be seen as a 'state of mind': a certain mentality when designing solutions. Avoid approaches that require managing any infrastructure. With a serverless approach, we spend our time solving problems that directly impact the project and provide benefits for our users: creating resilient business logic, developing user interfaces, and designing adaptive and reliable APIs.<\/p>\n<p>For example, if we can avoid managing and supporting a full-text search platform, that is exactly what we will do. This approach to application assembly can significantly speed up time to market, as you no longer need to worry about managing a complex infrastructure. Eliminate the responsibilities and costs associated with infrastructure management and focus on creating the applications and services your customers need. Patrick Debois referred to this approach <noindex><a rel=\"nofollow\" href=\"https:\/\/www.slideshare.net\/jedi4ever\/from-serverless-to-service-full-how-the-role-of-devops-is-evolving?ref=https:\/\/twitter.com\/i\/cards\/tfw\/v1\/736144044112384000?cardname=player&amp;earned=true&amp;lang=en&amp;card_height=130\">'servicefull'<\/a><\/noindex>, a term adopted in the serverless community. Functions should be seen as a connective link for services in the form of deployable modules (instead of deploying an entire library or web application). This provides incredible granularity in managing deployments and changes in the application. If you cannot deploy functions in this way, it may indicate that the functions are handling too many tasks and need to be refactored.<\/p>\n<p>Some are concerned about vendor lock-in when developing cloud applications. The same goes for serverless technologies, and this is unlikely to be a misconception. From our experience, creating serverless applications on AWS combined with AWS Lambda's ability to integrate other AWS services partially forms the merits of serverless architectures. This is a good example of synergy, where the result of the combination is greater than just the sum of its parts. In trying to avoid vendor lock-in, you might encounter even greater problems. When dealing with containers, it is easier to manage your own level of abstraction between cloud providers. However, when it comes to serverless solutions, the efforts may not pay off, especially when considering cost-effectiveness from the very beginning. Be sure to find out how vendors ensure service delivery. Some specialized services rely on integration points with other vendors and may provide plug-and-play connectivity out of the box. It is easier to invoke Lambda from an API Gateway endpoint than to proxy a request to some container or EC2 instance. Graphcool offers simple configuration with Auth0, which is easier than using third-party authentication tools.<\/p>\n<p>Choosing the right vendor for your serverless application is an architectural decision. When building an application, you do not expect to return to server management one day. Choosing a cloud vendor is no different from choosing to use containers, databases, or even programming languages. <\/p>\n<p>Consider the following:<\/p>\n<ul>\n<li>What services do you need and why? \n<\/li>\n<li>What services do cloud providers offer, and how can you combine them with your chosen FaaS solution? \n<\/li>\n<li>What programming languages are supported (with dynamic or static typing, compiled or interpreted, what benchmarks exist, what is the performance on cold start, what is the open source ecosystem like, etc.)?\n<\/li>\n<li>What are your security requirements (SLA, 2FA, OAuth, HTTPS, SSL, etc.)?\n<\/li>\n<li>How will you manage your CI\/CD and software development cycles?\n<\/li>\n<li>What advantages can you leverage from infrastructure-as-code solutions?\n<\/li>\n<\/ul>\n<p>\nIf you are expanding an existing application and incrementally adding serverless features, this may somewhat limit the available capabilities. However, almost all serverless technologies provide some APIs (via REST or message queues) that allow for extensions to be built independently of the application's core, with straightforward integration. Look for services with clear APIs, good documentation, and a strong community, and you won't go wrong. The ease of integration can often be a key metric, and it's likely one of the main reasons for AWS's success since the launch of Lambda in 2015.<\/p>\n<h2>When Serverlessness is Useful<\/h2>\n<p>\nServerless technologies can be applied practically everywhere. However, their advantages are not limited to just one application. The barrier to entry for cloud computing is currently so low precisely because of serverless technologies. If developers have an idea but don't know how to manage cloud infrastructure and optimize costs, they don't need to seek an engineer for that. If a startup wants to create a platform but worries that expenses might spiral out of control, it can easily turn to serverless solutions.<\/p>\n<p>Thanks to cost savings and ease of scaling, serverless solutions are equally applicable for both internal systems and external applications, right down to web applications with millions of users. Bills are measured more in cents than in euros. Renting the simplest AWS EC2 instance (t1.micro) for a month will cost \u20ac15, even if you do nothing with it (who hasn't forgotten to turn it off at least once?!). In comparison, to reach such a level of expenses over the same period, you would need to run a 512 MB Lambda function for 1 second approximately 3 million times. And if you don't use this function, you pay nothing.<\/p>\n<p>Since serverless technology primarily depends on events, it's relatively easy to integrate serverless infrastructure into existing systems. For example, using AWS S3, Lambda, and Kinesis, you can create an analytics service for an old retail system that can receive data via an API.<\/p>\n<p>Most serverless platforms support various languages. The most common are Python, JavaScript, C#, Java, and Go. Typically, there are no restrictions on the use of libraries in any of these languages, so you can apply your favorite open-source libraries. However, it is advisable not to overuse dependencies to ensure your functions execute optimally and do not negate the advantages of the immense scalability of your serverless applications. The more packages need to be loaded into a container, the longer the cold start will take.<\/p>\n<p>A cold start occurs when it is necessary to initialize the container, execution environment, and error handler before using them. Because of this, the execution delay for functions can reach up to 3 seconds, which is not ideal for impatient users. However, cold starts can occur on the first call after several minutes of inactivity. Many consider this a minor inconvenience that can be mitigated by regularly pinging the function to keep it warm. Some even choose to ignore this aspect altogether.<\/p>\n<p>Although AWS has released<noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/rds\/aurora\/serverless\/\"> the serverless SQL database Serverless Aurora<\/a><\/noindex>, SQL databases are not ideal for such applications, as their transaction execution relies on connections, which can quickly become a bottleneck under heavy traffic on AWS Lambda. Yes, developers are continually improving Serverless Aurora, and it is worth experimenting with it, but today, NoSQL solutions like<noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/dynamodb\/\"> DynamoDB<\/a><\/noindex>are much better suited for serverless systems. However, it\u2019s certain that this situation will change soon.<\/p>\n<p>The tooling also imposes significant limitations, especially in the area of local testing. While solutions like Docker-Lambda, DynamoDB Local, and LocalStack exist, they require meticulous work and considerable configuration effort. Nevertheless, all these projects are actively developing, so it\u2019s just a matter of time before the tooling reaches the required level.<\/p>\n<h2>The impact of serverless technologies on the development cycle<\/h2>\n<p>\nSince your infrastructure is just a configuration, you can set and deploy code using scripts, such as shell scripts. Alternatively, you can resort to configuration-as-code solutions like <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/cloudformation\/\">AWS CloudFormation<\/a><\/noindex>While this service does not provide configurations for all areas, it allows you to specify specific resources to be used as Lambda functions. This means that where CloudFormation may fall short, you can write your own resource (Lambda function) to fill that gap. This way, you can do anything, even configure dependencies beyond your AWS environment.<\/p>\n<p>Since all of this is just configuration, you can parameterize your deployment scripts for specific environments, regions, and users, especially if you are using infrastructure-as-code solutions like CloudFormation. For example, you can deploy a copy of the infrastructure for each branch in the repository to fully isolate testing during development. This dramatically speeds up feedback for developers when they want to understand if their code works adequately in a live environment. Managers do not need to worry about the cost of deploying numerous environments, as only actual usage is billed.<\/p>\n<p>DevOps has fewer concerns, as they only need to ensure that developers have the correct configuration. There is no longer a need to manage instances, load balancers, or security groups. Therefore, the term NoOps is becoming more common, although it is still important to know how to configure infrastructure, especially regarding IAM configuration and optimizing cloud resources.<\/p>\n<p>There are very powerful monitoring and visualization tools like Epsagon, Thundra, Dashbird, and IOPipe. They allow tracking the current status of serverless applications, provide logs and tracing, record performance metrics and architectural bottlenecks, perform analysis and expense forecasting, and more. Not only do they give DevOps engineers, developers, and architects a comprehensive view of application performance, but they also allow managers to track real-time status, with per-second resource costs and expense forecasting. Organizing such a setup with managed infrastructure is much more challenging.<\/p>\n<p>Designing serverless applications is significantly easier because you don't need to deploy web servers, manage virtual machines or containers, patch servers, operating systems, gateways, etc. Abstracting away all these responsibilities allows serverless architecture to focus on what matters most \u2014 meeting the needs of businesses and clients.<\/p>\n<p>While the toolkit could be improved (it gets better every day), developers can concentrate on implementing business logic and optimally distributing application complexity across different services within the architecture. Management of serverless applications is event-driven and abstracted by the cloud provider (e.g., SQS, S3 events, or DynamoDB streams). Therefore, developers only need to write business logic to respond to specific events without worrying about how to best implement databases and message queues, or how to organize optimal data processing in specific hardware storage.<\/p>\n<p>Code can be executed and debugged locally, just like any development process. Unit testing remains the same. The ability to deploy an entire application infrastructure using a customizable stack configuration enables developers to quickly receive valuable feedback without worrying about testing costs or impacts on expensive managed environments.<\/p>\n<h2>Tools and methods for building serverless applications<\/h2>\n<p>\nThere is no specific way to build serverless applications, nor is there a specific set of services for this task. Currently, AWS is leading among powerful serverless solutions, but also consider <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/gcp\">Google Cloud<\/a><\/noindex>,<noindex><a rel=\"nofollow\" href=\"https:\/\/zeit.co\/\"> Zeit<\/a><\/noindex> and <noindex><a rel=\"nofollow\" href=\"https:\/\/firebase.google.com\/\">Firebase<\/a><\/noindex>. If you are using AWS, a recommended approach for application assembly is the <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/serverless\/sam\/\">Serverless Application Model<\/a><\/noindex> (SAM), especially when using C#, as Visual Studio provides excellent tooling. SAM CLI can do everything that Visual Studio can, so you won't lose anything if you switch to another IDE or text editor. Of course, SAM also works with other languages.<\/p>\n<p>If you are writing in other languages, the Serverless Framework is an excellent open-source tool that allows you to configure anything using very powerful configuration YAML files. The Serverless Framework also supports various cloud services, so we recommend it to those looking for a multi-cloud solution. It has a vast community that has created a ton of plugins for any needs. <\/p>\n<p>For local testing, open-source tools like Docker-Lambda, Serverless Local, DynamoDB Local, and LocalStack work well. Serverless technologies are still in their early development stages, as is the tooling for them, so setting up complex testing scenarios can be challenging. However, deploying a stack in an environment and testing there is incredibly cost-effective. And you do not need to create an exact local copy of your cloud environments.<\/p>\n<p>To reduce the size of deployed packages and accelerate loading, use AWS Lambda Layers. <\/p>\n<p>Use the right programming languages for specific tasks. Different languages have their pros and cons. Many benchmarks exist, but JavaScript, Python, and C# (.NET Core 2.1+) are leaders in terms of AWS Lambda performance. Recently, AWS Lambda introduced the Runtime API, allowing you to specify the desired language and runtime environment, so experiment with it.<\/p>\n<p>Maintain a small package size for deployments. The smaller the packages, the faster they load. Avoid using large libraries, especially if you only need a couple of features from them. If you are programming in JavaScript, use build tools like Webpack to optimize the build and include only what you actually need. In .NET Core 3.0, there are QuickJit and Tiered Compilation, which improve performance and greatly help with cold starts.<\/p>\n<p>The dependency of serverless functions on events can initially complicate the coordination of business logic. In this regard, message queues and state machines can be incredibly useful. Lambda functions are capable of invoking each other, but do so only if you do not expect a response ('fire and forget') \u2014 you do not want to incur costs waiting for another function to complete. Message queues are helpful for decoupling parts of business logic, managing application bottlenecks, and processing transactions (using FIFO queues). AWS Lambda functions can be attached to SQS queues as queues for 'stalled' messages, which track failed messages for subsequent analysis. AWS Step Functions (state machines) are very useful for managing complex processes that require creating chains of functions. Instead of one Lambda function invoking another, Step Functions can coordinate state transitions, pass data between functions, and manage the global state of the functions. This allows you to define retry conditions or what needs to be done in the event of a specific error \u2014 a very powerful tool under certain conditions.<\/p>\n<h2>Conclusion<\/h2>\n<p>\nIn recent years, serverless technologies have been advancing at an unprecedented pace. This paradigm shift comes with certain misconceptions. By abstracting infrastructure and managing scalability, serverless solutions provide significant benefits: from simplifying development and DevOps processes to greatly reducing operational costs.<br \/>\nAnd although the serverless approach is not without its drawbacks, there are reliable design patterns and methodologies that can be utilized to create resilient serverless applications or integrate serverless elements into existing architectures.<br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nix\/blog\/486180\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0425\u043e\u0442\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0431\u0438\u0440\u0430\u044e\u0442 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c, \u0441 \u043d\u0438\u043c\u0438 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u0438 \u043e\u043f\u0430\u0441\u0435\u043d\u0438\u0439. \u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 \u0432\u0435\u043d\u0434\u043e\u0440\u0430, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u0430\u043c\u0438, \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u2014 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0442\u0435\u043c\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043e \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u0445. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0445 \u0442\u0435\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u043c\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":55882,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55881","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=\"\u0425\u043e\u0442\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435.\" \/>\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\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij\" \/>\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\u0421\u043e\u0432\u0435\u0442\u044b \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0425\u043e\u0442\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij\" \/>\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-01-30T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:04:02+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\udd47Tips and resources for building serverless applications | ProHoster","description":"While serverless.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij","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\u0421\u043e\u0432\u0435\u0442\u044b \u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 | ProHoster","og:description":"\u0425\u043e\u0442\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/sovety-i-istochniki-informatsii-dlya-sozdaniya-besservernyh-prilozhenij","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-01-30T21:00:00+00:00","article:modified_time":"2020-02-18T11:04:02+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55881","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 19:35:40","updated":"2022-10-07 20:58:46","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\/55881","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=55881"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/55881\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/55882"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=55881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=55881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=55881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}