{"id":25193,"date":"2023-06-01T04:22:45","date_gmt":"2023-06-01T00:52:45","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/"},"modified":"2023-06-01T04:22:45","modified_gmt":"2023-06-01T00:52:45","slug":"microservices-with-pebl-a-complete-and-free-cloud-platform-60i","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/","title":{"rendered":"Microservices with pebl \u2014 \u06cc\u06a9 \u067e\u0644\u062a\u0641\u0631\u0645 \u0627\u0628\u0631\u06cc \u06a9\u0627\u0645\u0644 \u0648 \u0631\u0627\u06cc\u06af\u0627\u0646"},"content":{"rendered":"<div data-article-id=\"1486716\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C_%D8%A7%D8%AC%D9%85%D8%A7%D9%84%DB%8C\" >\u0628\u0631\u0631\u0633\u06cc \u0627\u062c\u0645\u0627\u0644\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D8%B4%D8%B1%D9%88%D8%B9_%D8%B4%D8%AF%D9%86\" >\u0634\u0631\u0648\u0639 \u0634\u062f\u0646<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D8%AB%D8%A8%D8%AA_%D9%86%D8%A7%D9%85\" >\u062b\u0628\u062a \u0646\u0627\u0645<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#Docker_pebl_CLI\" >Docker &#038; pebl CLI<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_%D8%B3%D8%A7%D8%AF%D9%87\" >\u0633\u0631\u0648\u06cc\u0633 \u0633\u0627\u062f\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D8%B3%D9%84%D8%A7%D9%85_%D8%AF%D9%86%DB%8C%D8%A7\" >\u0633\u0644\u0627\u0645 \u062f\u0646\u06cc\u0627!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D8%B2%D9%85%D8%A7%D9%86_%D8%A7%D8%AC%D8%B1%D8%A7_%D9%85%D8%AD%D9%84%DB%8C\" >\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u062d\u0644\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#Cloud_Runtime\" >Cloud Runtime<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_%D9%87%D8%A7\" >\u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D8%A8%D8%B1%D9%88_Setup\" >\u0628\u0631\u0648 Setup<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1\" >\u0633\u0631\u0648\u06cc\u0633 \u06a9\u0627\u0631\u0628\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D8%B1%D8%AF%DB%8C%D8%B3\" >\u0631\u062f\u06cc\u0633<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D9%BE%D8%B1%D9%88%DA%A9%D8%B3%DB%8C\" >\u067e\u0631\u0648\u06a9\u0633\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D8%AF%D8%B1_%D8%AD%D8%A7%D9%84_%D8%A7%D8%B3%D8%AA%D9%82%D8%B1%D8%A7%D8%B1\" >\u062f\u0631 \u062d\u0627\u0644 \u0627\u0633\u062a\u0642\u0631\u0627\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%B1%D8%AF%DB%8C%D8%B3\" >\u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u062f\u06cc\u0633<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/microservices-with-pebl-a-complete-and-free-cloud-platform-60i\/#%D9%85%D8%B1%D8%A7%D8%AD%D9%84_%D8%A8%D8%B9%D8%AF%DB%8C\" >\u0645\u0631\u0627\u062d\u0644 \u0628\u0639\u062f\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C_%D8%A7%D8%AC%D9%85%D8%A7%D9%84%DB%8C\"><\/span>\n<p>  \u0628\u0631\u0631\u0633\u06cc \u0627\u062c\u0645\u0627\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 pebl\u060c a <strong>\u067e\u0644\u062a\u0641\u0631\u0645 \u0627\u0628\u0631\u06cc \u06a9\u0627\u0645\u0644 \u0648 \u0631\u0627\u06cc\u06af\u0627\u0646<\/strong>.<\/p>\n<p>\u0628\u0631\u062e\u0644\u0627\u0641 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0639\u0627\u062f\u06cc \u0628\u0647 Infrastructure as Code\u060c pebl \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0627\u0628\u0631 \u0634\u0645\u0627 \u0628\u0647 \u0627\u0639\u0644\u0627\u0645 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc yaml \u0645\u062a\u06a9\u06cc \u0646\u06cc\u0633\u062a.  \u062f\u0631 \u0639\u0648\u0636 pebl \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 SDK \u0647\u0627\u06cc \u062e\u0627\u0635 \u0632\u0628\u0627\u0646 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u062a\u0639\u0628\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B4%D8%B1%D9%88%D8%B9_%D8%B4%D8%AF%D9%86\"><\/span>\n<p>  \u0634\u0631\u0648\u0639 \u0634\u062f\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AB%D8%A8%D8%AA_%D9%86%D8%A7%D9%85\"><\/span>\n<p>  \u062b\u0628\u062a \u0646\u0627\u0645<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627\u06cc\u06af\u0627\u0646 \u062f\u0631 pebl.io \u062b\u0628\u062a \u0646\u0627\u0645 \u06a9\u0646\u06cc\u0645.<\/p>\n<p><\/p>\n<p>\u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0647\u0648\u06cc\u062a \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u062e\u0648\u062f \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u0648 \u0645\u0631\u0627\u062d\u0644 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.  \u0648 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627\u06cc\u06af\u0627\u0646 \u062e\u0648\u062f \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u062f <code>*.pebl.rocks<\/code> \u0632\u06cc\u0631 \u062f\u0627\u0645\u0646\u0647!  \u0645\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0628\u0642\u06cc\u0647 \u0622\u0645\u0648\u0632\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Docker_pebl_CLI\"><\/span>\n<p>  Docker &#038; pebl CLI<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062a\u0646\u0647\u0627 \u062f\u0648 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0631\u0627\u06cc pebl \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 Docker \u0648 pebl CLI \u0647\u0633\u062a\u0646\u062f.  \u0627\u06af\u0631 Docker \u0631\u0627 \u0646\u0635\u0628 \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u0628\u0647 \u0648\u0628 \u0633\u0627\u06cc\u062a docker \u0628\u0631\u0648\u06cc\u062f \u0648 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627\u06cc \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc pebl CLI\u060c \u06af\u0632\u06cc\u0646\u0647 \u062a\u0635\u062d\u06cc\u062d \u067e\u06cc\u0648\u0646\u062f \u062f\u0631 \u0627\u0633\u0646\u0627\u062f \u062a\u0646\u0638\u06cc\u0645 pebl \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f.  \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0644\u06cc\u0646\u06a9 \u062f\u0627\u0646\u0644\u0648\u062f \u0635\u062d\u06cc\u062d \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f!  \u0627\u06af\u0631 \u0627\u0632 \u0645\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0645\u0631\u0627\u062c\u0639\u0647 \u0628\u0647 \u0645\u0646\u0648\u06cc Apple \u0648 \u0633\u067e\u0633 About This Mac \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 Intel \u06cc\u0627 M1 \u0627\u0633\u062a.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/06\/1685580764_390_Microservices-with-pebl-\u2014-\u06cc\u06a9-\u067e\u0644\u062a\u0641\u0631\u0645-\u0627\u0628\u0631\u06cc-\u06a9\u0627\u0645\u0644-\u0648-\u0631\u0627\u06cc\u06af\u0627\u0646.png\" alt=\"\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a \u0635\u0641\u062d\u0647 \u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0645\u06a9 \u0627\u067e\u0644 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f\" loading=\"lazy\" width=\"348\" height=\"623\" title=\"\"><\/p>\n<p>\u0628\u0627 \u0627\u062c\u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 CLI \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0646\u0635\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a <code>pebl<\/code> \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u0622\u0631\u06af:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ pebl\nusage:\n\n    pebl {command}\n\navailable commands:\n\n       up  start the local pebl cluster.\n     down  stop the local pebl cluster.\n     info  attach and show info about the local pebl cluster.\n      run  execute a pebl program locally.\n   deploy  execute a pebl program in the cloud.\n   tunnel  creates a tunnel to a redis instance.\n     auth  manages the credentials needed for certain commands.\n  version  print the version of the cli.\n\n$\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_%D8%B3%D8%A7%D8%AF%D9%87\"><\/span>\n<p>  \u0633\u0631\u0648\u06cc\u0633 \u0633\u0627\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0644\u0648\u06a9 \u0627\u0635\u0644\u06cc \u0633\u0627\u062e\u062a\u0645\u0627\u0646\u06cc \u06a9\u0647 pebl \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f a <strong>\u0633\u0631\u0648\u06cc\u0633<\/strong>.  \u062f\u0631 \u067e\u0644\u062a\u0641\u0631\u0645 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u0648\u0646 \u0633\u0631\u0648\u0631 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u0648\u062f.  \u062f\u0631 \u0627\u0635\u0644 \u0633\u0631\u0648\u06cc\u0633 pebl \u0633\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u067e\u0627\u0633\u062e \u062f\u0647\u062f.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0647 pebl \u0628\u067e\u0631\u062f\u0627\u0632\u06cc\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B3%D9%84%D8%A7%D9%85_%D8%AF%D9%86%DB%8C%D8%A7\"><\/span>\n<p>  \u0633\u0644\u0627\u0645 \u062f\u0646\u06cc\u0627!<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u06cc\u06a9 \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0627\u0633\u06a9\u0631\u0686 \u062f\u0631 \u062c\u0627\u06cc\u06cc \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.  \u062f\u0631 \u0645\u062b\u0627\u0644 \u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>~\/work\/scratch<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ mkdir -p ~\/work\/scratch\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0645\u0627 \u0628\u0627 \u062e\u06cc\u0627\u0644 \u0631\u0627\u062d\u062a \u0637\u0631\u062d \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u062e\u0648\u062f \u0645\u0646\u0637\u0642\u06cc \u0628\u0627\u0634\u062f.  \u0627\u06cc\u0646 \u067e\u0648\u0634\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0631\u06cc\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0645\u0627 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0632\u06cc\u0631\u067e\u0648\u0634\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0634\u0627\u0645\u0644 \u0633\u0631\u0648\u06cc\u0633 \u0633\u0627\u062f\u0647 hello world \u0645\u0627 \u0628\u0627\u0634\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>mkdir ~\/work\/scratch\/hello\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 <code>main.py<\/code> (<code>~\/work\/scratch\/hello\/main.py<\/code>) \u06a9\u0647 \u0645\u062a\u062f \u0627\u0635\u0644\u06cc \u0631\u0627 \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f \u0648 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u067e\u06cc\u0633\u062a \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">flask<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Flask<\/span>\n\n<span class=\"n\">app<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Flask<\/span><span class=\"p\">(<\/span><span class=\"n\">__name__<\/span><span class=\"p\">)<\/span>\n\n<span class=\"o\">@<\/span><span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">route<\/span><span class=\"p\">(<\/span><span class=\"s\">\"https:\/\/dev.to\/\"<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">def<\/span> <span class=\"nf\">root<\/span><span class=\"p\">():<\/span>\n    <span class=\"k\">return<\/span> <span class=\"s\">\"hello, world!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">pebl<\/span>\n<span class=\"n\">pebl<\/span><span class=\"p\">.<\/span><span class=\"n\">service<\/span><span class=\"p\">(<\/span><span class=\"n\">app<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"hey.pebl.rocks\"<\/span><span class=\"p\">)<\/span>  <span class=\"c1\"># put your own domain here\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u062e\u0634 \u0627\u0648\u0644 \u0627\u0632 <code>main.py<\/code> \u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b \u0627\u0632 Flask \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u0628\u0633\u06cc\u0627\u0631 \u0622\u0634\u0646\u0627 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f.  \u0627\u06cc\u0646 \u06cc\u06a9 \u062a\u0639\u0631\u06cc\u0641 \u0641\u0644\u0627\u0633\u06a9 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0627 \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0631\u06cc\u0634\u0647.  \u062f\u0648 \u062e\u0637 \u0622\u062e\u0631 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 Flask \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0627\u0634\u062f \u06a9\u0647 \u062f\u0631 \u0634\u0645\u0627 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f <code>*.pebl.rocks<\/code> \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0645\u0642\u062f\u0627\u0631\u06cc \u06cc\u0627\u0645\u0644 \u0645\u062e\u0635\u0648\u0635 pebl \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.  \u0627\u0645\u0627 \u0648\u0627\u0642\u0639\u0627\u064b \u0627\u06cc\u0646 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062a\u06a9 \u0631\u0648\u0634 \u0627\u0633\u062a <strong>\u062a\u0645\u0627\u0645 \u0622\u0646 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0637\u0648\u0644 \u0645\u06cc \u06a9\u0634\u062f<\/strong> \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0627 pebl!  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u062c\u0645\u0639 \u0628\u0646\u062f\u06cc:<\/p>\n<ol>\n<li>\u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0627\u0628\u0631 (<code>pebl.service<\/code>) \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u062f \u0645\u0639\u0645\u0648\u0644\u06cc \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f<\/li>\n<li>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0647\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u067e\u0627\u06cc\u062a\u0648\u0646 \u062f\u06cc\u06af\u0631\u06cc \u0628\u062f\u0648\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0636\u0627\u0641\u06cc \u0645\u0627\u0646\u0646\u062f Flask \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u0646\u06cc\u062f<\/li>\n<\/ol>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646\u060c \u0628\u0647 \u062a\u0635\u0648\u06cc\u0631 Docker \u067e\u0627\u06cc\u0647 pebl \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0638\u0631\u0641 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u062a\u06a9\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0628\u0631\u0648 \u062c\u0644\u0648 \u0648 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646 <code>Dockerfile<\/code> (<code>~\/work\/scratch\/hello\/Dockerfile<\/code>) \u0628\u0627 \u0645\u062d\u062a\u0648\u0627\u06cc \u0632\u06cc\u0631:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>FROM peblcloud\/python\nCOPY . .\nRUN pip install flask\nENTRYPOINT python -u main.py\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B2%D9%85%D8%A7%D9%86_%D8%A7%D8%AC%D8%B1%D8%A7_%D9%85%D8%AD%D9%84%DB%8C\"><\/span>\n<p>  \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u062d\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Pebl \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0635\u062d\u062a \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u06cc\u06a9 \u0686\u0631\u062e\u0647 \u062a\u06a9\u0631\u0627\u0631 \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0633\u0631\u06cc\u0639 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f.  \u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u062e\u0648\u0634\u0647 \u0645\u062d\u0644\u06cc \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0634\u0627\u0645\u0644 \u062a\u0645\u0627\u0645 \u0628\u0627\u0631\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u0645\u062d\u0644\u06cc \u0645\u0627 \u0628\u0627\u0634\u062f <code>pebl up<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ pebl up\n :: initializing new pebl cluster...\n :: done!\n :: run `pebl info` to see logs, endpoints, and other info about the running cluster!\n$\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u0634\u0647\u060c \u0628\u0647 \u0645\u0633\u06cc\u0631 \u0628\u0631\u0648\u06cc\u062f <code>hello<\/code> \u0632\u06cc\u0631 \u067e\u0648\u0634\u0647 \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>pebl run<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ cd ~\/work\/scratch\/hello\n$ pebl run\n :: building docker project...\n :: starting container...\n$\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>pebl info<\/code> \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u062e\u0648\u0634\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/06\/1685580764_700_Microservices-with-pebl-\u2014-\u06cc\u06a9-\u067e\u0644\u062a\u0641\u0631\u0645-\u0627\u0628\u0631\u06cc-\u06a9\u0627\u0645\u0644-\u0648-\u0631\u0627\u06cc\u06af\u0627\u0646.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631 \u0635\u0641\u062d\u0647 \u067e\u0627\u06cc\u0627\u0646\u0647 \u0627\u06cc \u06a9\u0647 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0627\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a pebl \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f\" loading=\"lazy\" width=\"800\" height=\"519\" title=\"\"><\/p>\n<p>\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f\u060c \u0627\u0645\u0627 \u0628\u0627 \u062e\u0648\u062f\u062a\u0627\u0646 <code>*.pebl.rocks<\/code> \u0632\u06cc\u0631 \u062f\u0627\u0645\u0646\u0647 \u0628\u0647 \u062c\u0627\u06cc <code>hey.pebl.rocks<\/code>.  \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f \u0648 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0633\u0631\u0648\u0631 \u062e\u0648\u062f \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ curl localhost:32807\nhello, world!\n$\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u067e\u0648\u0631\u062a \u0635\u062d\u06cc\u062d \u0631\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0635\u0641\u062d\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0648\u062f \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0627\u06cc\u062f!<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Cloud_Runtime\"><\/span>\n<p>  Cloud Runtime<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0627 \u062a\u0639\u0628\u06cc\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f\u060c pebl \u06cc\u06a9 \u0645\u0632\u06cc\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc \u06a9\u0646\u062f: \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u062c\u0631\u0627\u060c \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u06af\u0648\u0646\u0647 \u062a\u063a\u06cc\u06cc\u0631\u06cc.<\/p>\n<p>\u0628\u0647 \u0639\u0628\u0627\u0631\u062a \u062f\u06cc\u06af\u0631\u060c \u062f\u06cc\u06af\u0631 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0647\u0627\u06cc \u062e\u0627\u0635 \u0645\u062d\u06cc\u0637\u06cc \u06cc\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0686\u0646\u062f\u06af\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0645\u062d\u0644\u06cc \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u062a\u0648\u0644\u06cc\u062f \u0646\u06cc\u0633\u062a.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 pebl \u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0641\u0636\u0627\u06cc \u0627\u0628\u0631\u06cc \u067e\u0633 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u062d\u0644\u06cc \u0622\u0646\u0647\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f.  \u0641\u0642\u0637 \u0628\u062f\u0648 <code>pebl deploy<\/code> \u0628\u0647 \u0631\u0648\u0634\u06cc \u0645\u0634\u0627\u0628\u0647 <code>pebl run<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ cd ~\/work\/scratch\/hello\n$ pebl deploy\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0628\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u06cc\u062f\u060c \u062d\u062a\u0645\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>pebl auth<\/code> \u0648 \u0645\u0631\u0627\u062d\u0644 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f!<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u0628\u0648\u062f\u0646 \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u060c \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u0631\u0627 \u0628\u0627 curl \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.  \u062d\u062a\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>https<\/code> \u0632\u06cc\u0631\u0627 \u0647\u0645\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0627\u0628\u0631 \u0628\u0647\u200c\u0637\u0648\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 TLS \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648 pebl \u062a\u0631\u0627\u0641\u06cc\u06a9 \u063a\u06cc\u0631 TLS \u0631\u0627 \u0645\u062c\u0627\u0632 \u0646\u0645\u06cc\u200c\u062f\u0627\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ curl https:\/\/hey.pebl.rocks\nhello, world!\n$\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u06a9\u0646\u0633\u0648\u0644 pebl \u0628\u0631\u0648\u06cc\u062f \u062a\u0627 \u06af\u0632\u0627\u0631\u0634\u06cc \u0627\u0632 \u062a\u0645\u0627\u0645 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0648\u0631\u0648\u062f\u06cc \u0628\u0647 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc \u062e\u0648\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/06\/1685580765_50_Microservices-with-pebl-\u2014-\u06cc\u06a9-\u067e\u0644\u062a\u0641\u0631\u0645-\u0627\u0628\u0631\u06cc-\u06a9\u0627\u0645\u0644-\u0648-\u0631\u0627\u06cc\u06af\u0627\u0646.png\" alt=\"\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a \u0627\u0632 \u06a9\u0646\u0633\u0648\u0644 \u062f\u0631 pebl.io\" loading=\"lazy\" width=\"800\" height=\"524\" title=\"\"><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_%D9%87%D8%A7\"><\/span>\n<p>  \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u06cc\u06a9 \u0631\u0627\u0647 \u0645\u062a\u062f\u0627\u0648\u0644 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u0628\u0627\u0631\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u0627\u0628\u0631\u06cc\u060c \u062a\u0642\u0633\u06cc\u0645 \u0622\u0646\u0647\u0627 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0628\u062e\u0634 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0632\u0631\u06af\u062a\u0631 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f.  \u0628\u0627 pebl \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0647 \u0622\u0646 \u0628\u0631\u0633\u06cc\u0645 <strong>\u062e\u062f\u0645\u0627\u062a \u062f\u0627\u062e\u0644\u06cc<\/strong> \u0642\u0627\u0628\u0644\u06cc\u062a<\/p>\n<p>\u062e\u062f\u0645\u0627\u062a \u062f\u0627\u062e\u0644\u06cc \u0645\u0634\u0627\u0628\u0647 \u0647\u0633\u062a\u0646\u062f <code>pebl.service<\/code> \u06a9\u0647 \u0642\u0628\u0644\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645\u060c \u0628\u0627 \u06cc\u06a9 \u062a\u0641\u0627\u0648\u062a \u06a9\u0644\u06cc\u062f\u06cc.  \u0622\u0646\u0647\u0627 \u0641\u0642\u0637 \u062f\u0631 \u0645\u0639\u0631\u0636 \u0628\u0627\u0631\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u062f\u06cc\u06af\u0631 \u0634\u0645\u0627 \u0647\u0633\u062a\u0646\u062f \u0648 \u0628\u0631\u0627\u06cc \u062a\u0631\u0627\u0641\u06cc\u06a9 \u062e\u0627\u0631\u062c\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0646\u0634\u062f\u0647 \u0627\u0646\u062f.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u062f\u0627\u062e\u0644\u06cc \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Go \u0628\u0647 \u062c\u0627\u06cc Python \u0628\u0631\u0627\u06cc \u0628\u0631\u062c\u0633\u062a\u0647 \u06a9\u0631\u062f\u0646 \u0648\u06cc\u0698\u06af\u06cc agnostic \u0632\u0628\u0627\u0646 pebl \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D9%88_Setup\"><\/span>\n<p>  \u0628\u0631\u0648 Setup<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0632\u06cc\u0631\u067e\u0648\u0634\u0647 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0627\u0633\u06a9\u0631\u0686 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a Go \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ mkdir ~\/work\/scratch\/go\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Go \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f <code>go mod init<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ cd ~\/work\/scratch\/go\n$ go mod init scratch\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0628\u0631\u062e\u0644\u0627\u0641 \u067e\u0627\u06cc\u062a\u0648\u0646\u060c \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 Go \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u0647 Dockerfile \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u06cc\u0645.  \u062f\u0631 \u0639\u0648\u0636 \u0628\u0627\u06cc\u062f \u0628\u0633\u062a\u0647 pebl \u0631\u0627 \u0628\u0631\u0627\u06cc Go \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ cd ~\/work\/scratch\/go\n$ go get github.com\/peblcloud\/go\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B3%D8%B1%D9%88%DB%8C%D8%B3_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1\"><\/span>\n<p>  \u0633\u0631\u0648\u06cc\u0633 \u06a9\u0627\u0631\u0628\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0648 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0646\u06af\u06cc\u0632\u0647 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0648\u0627\u0642\u0639\u06cc\u060c \u0645\u0627 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 Go \u062f\u0627\u062e\u0644\u06cc \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u06a9\u0627\u0631\u0628\u0631 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0633\u0631\u0648\u06cc\u0633\u06cc \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f.  \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 <code>main.go<\/code> (<code>~\/work\/scratch\/go\/main.go<\/code>):<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">package<\/span> <span class=\"n\">main<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">(<\/span>\n    <span class=\"s\">\"github.com\/peblcloud\/go\"<\/span>\n    <span class=\"s\">\"net\/http\"<\/span>\n<span class=\"p\">)<\/span>\n\n<span class=\"k\">func<\/span> <span class=\"n\">main<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">mux<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">NewServeMux<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">mux<\/span><span class=\"o\">.<\/span><span class=\"n\">HandleFunc<\/span><span class=\"p\">(<\/span><span class=\"s\">\"https:\/\/dev.to\/\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">func<\/span><span class=\"p\">(<\/span><span class=\"n\">w<\/span> <span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">ResponseWriter<\/span><span class=\"p\">,<\/span> <span class=\"n\">r<\/span> <span class=\"o\">*<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">Request<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">Write<\/span><span class=\"p\">([]<\/span><span class=\"kt\">byte<\/span><span class=\"p\">(<\/span><span class=\"s\">\"this is an internal service!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span><span class=\"p\">))<\/span>\n    <span class=\"p\">})<\/span>\n\n    <span class=\"n\">pebl<\/span><span class=\"o\">.<\/span><span class=\"n\">InternalService<\/span><span class=\"p\">(<\/span><span class=\"n\">mux<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"go.internal\"<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0627 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0628\u0648\u062f\u06cc\u0645\u060c \u06cc\u06a9 \u0634\u06cc \u0633\u0631\u0648\u0631 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>net\/http<\/code>.  \u0633\u067e\u0633 \u0628\u0627 \u0627\u0631\u0633\u0627\u0644 \u0634\u06cc\u0621 \u0633\u0631\u0648\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0647 SDK pebl <code>pebl.InternalService<\/code> \u0632\u0646\u06af \u0632\u062f\u0646.<\/p>\n<p>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0631\u062e\u0644\u0627\u0641 \u0633\u0631\u0648\u06cc\u0633\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645\u060c \u06cc\u06a9 \u062f\u0627\u0645\u0646\u0647 \u0628\u0647 \u0638\u0627\u0647\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 <code>go.internal<\/code>.  \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc\u060c \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u0686\u06cc\u0632\u06cc \u0628\u0627\u0634\u062f\u060c \u0627\u06af\u0631\u0686\u0647 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0627\u0632 \u06cc\u06a9 \u0637\u0631\u062d \u0622\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u0628\u0647 \u062e\u0627\u0637\u0631 \u0633\u067e\u0631\u062f\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0645\u0627\u0646\u0646\u062f <code>.local<\/code> \u06cc\u0627 <code>.internal<\/code> TLD.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645!  \u0645\u0627\u0646\u0646\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627 <code>pebl run<\/code> \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0645\u062d\u0644\u06cc:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ cd ~\/work\/scratch\/go\n$ pebl run\n :: building golang project...\n :: staging build at: \/var\/folders\/92\/_vg8jtqx7kncxb_9jlpw8rmm0000gn\/T\/3019178735\n :: containerizing the build...\n :: starting container...\n$\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0648\u0642\u062a\u06cc \u0635\u0641\u062d\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627\u06cc\u062f \u0648\u0631\u0648\u062f\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u0631\u0686\u0633\u0628 \u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a <code>internal<\/code>:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/06\/1685580765_921_Microservices-with-pebl-\u2014-\u06cc\u06a9-\u067e\u0644\u062a\u0641\u0631\u0645-\u0627\u0628\u0631\u06cc-\u06a9\u0627\u0645\u0644-\u0648-\u0631\u0627\u06cc\u06af\u0627\u0646.png\" alt=\"\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a \u067e\u0646\u062c\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f\u0647 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0633\u0631\u0648\u06cc\u0633 Go \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f\" loading=\"lazy\" width=\"800\" height=\"537\" title=\"\"><\/p>\n<p>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 curl \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u062f\u0627\u062e\u0644\u06cc \u062c\u062f\u06cc\u062f \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ curl localhost:32808\nthis is an internal service!\n$\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 \u062f\u0627\u062e\u0644\u06cc \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0631\u0627\u062d\u062a\u06cc \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0645\u062d\u0644\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0648\u0642\u062a\u06cc \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0627\u0628\u0631\u06cc \u0645\u0633\u062a\u0642\u0631 \u0645\u06cc \u0634\u0648\u06cc\u062f\u060c \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u062e\u0627\u0631\u062c \u0627\u0632 \u062e\u0648\u0634\u0647 \u0628\u0647 \u062e\u062f\u0645\u0627\u062a \u062f\u0627\u062e\u0644\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%AF%DB%8C%D8%B3\"><\/span>\n<p>  \u0631\u062f\u06cc\u0633<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0633\u0631\u0648\u06cc\u0633 Go \u062f\u0627\u062e\u0644\u06cc \u0645\u0627 \u0686\u0646\u062f\u0627\u0646 \u062c\u0627\u0644\u0628 \u0646\u06cc\u0633\u062a \u0632\u06cc\u0631\u0627 \u0648\u0627\u0642\u0639\u0627\u064b \u0628\u0631 \u0627\u0633\u0627\u0633 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u0627 \u06a9\u0627\u0631\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc \u062f\u0647\u062f.  \u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0645\u062c\u0645\u0648\u0639\u0647 \u0628\u0633\u06cc\u0627\u0631 \u06af\u0633\u062a\u0631\u062f\u0647 \u062a\u0631\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u060c pebl \u0627\u0632 \u0637\u0631\u06cc\u0642 Redis \u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.  \u0648 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062a\u0627\u06a9\u0646\u0648\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0627\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 SDK \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u067e\u0633 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0633\u0631\u0648\u06cc\u0633 Go \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u0645 (<code>~\/work\/scratch\/go\/main.go<\/code>) \u0628\u0627 \u062a\u0631\u06a9\u06cc\u0628 Redis.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight go\"><code><span class=\"k\">package<\/span> <span class=\"n\">main<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">(<\/span>\n    <span class=\"s\">\"context\"<\/span>\n    <span class=\"s\">\"encoding\/json\"<\/span>\n    <span class=\"s\">\"fmt\"<\/span>\n    <span class=\"s\">\"net\/http\"<\/span>\n    <span class=\"s\">\"net\/url\"<\/span>\n\n    <span class=\"s\">\"github.com\/peblcloud\/go\"<\/span>\n    <span class=\"s\">\"github.com\/redis\/go-redis\/v9\"<\/span>\n<span class=\"p\">)<\/span>\n\n<span class=\"k\">func<\/span> <span class=\"n\">main<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">connInfo<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">pebl<\/span><span class=\"o\">.<\/span><span class=\"n\">Redis<\/span><span class=\"p\">(<\/span><span class=\"s\">\"users\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">client<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">redis<\/span><span class=\"o\">.<\/span><span class=\"n\">NewClient<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">redis<\/span><span class=\"o\">.<\/span><span class=\"n\">Options<\/span><span class=\"p\">{<\/span>\n        <span class=\"n\">Addr<\/span><span class=\"o\">:<\/span> <span class=\"n\">fmt<\/span><span class=\"o\">.<\/span><span class=\"n\">Sprintf<\/span><span class=\"p\">(<\/span><span class=\"s\">\"%s:%d\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">connInfo<\/span><span class=\"o\">.<\/span><span class=\"n\">Host<\/span><span class=\"p\">,<\/span> <span class=\"n\">connInfo<\/span><span class=\"o\">.<\/span><span class=\"n\">Port<\/span><span class=\"p\">),<\/span>\n    <span class=\"p\">})<\/span>\n\n    <span class=\"n\">mux<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">NewServeMux<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">mux<\/span><span class=\"o\">.<\/span><span class=\"n\">HandleFunc<\/span><span class=\"p\">(<\/span><span class=\"s\">\"https:\/\/dev.to\/\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">func<\/span><span class=\"p\">(<\/span><span class=\"n\">w<\/span> <span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">ResponseWriter<\/span><span class=\"p\">,<\/span> <span class=\"n\">r<\/span> <span class=\"o\">*<\/span><span class=\"n\">http<\/span><span class=\"o\">.<\/span><span class=\"n\">Request<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">query<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">url<\/span><span class=\"o\">.<\/span><span class=\"n\">ParseQuery<\/span><span class=\"p\">(<\/span><span class=\"n\">r<\/span><span class=\"o\">.<\/span><span class=\"n\">URL<\/span><span class=\"o\">.<\/span><span class=\"n\">RawQuery<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">name<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">query<\/span><span class=\"o\">.<\/span><span class=\"n\">Get<\/span><span class=\"p\">(<\/span><span class=\"s\">\"name\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">userInfo<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">client<\/span><span class=\"o\">.<\/span><span class=\"n\">HGetAll<\/span><span class=\"p\">(<\/span><span class=\"n\">context<\/span><span class=\"o\">.<\/span><span class=\"n\">Background<\/span><span class=\"p\">(),<\/span> <span class=\"n\">name<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">Result<\/span><span class=\"p\">()<\/span>\n        <span class=\"n\">payload<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span> <span class=\"o\">:=<\/span> <span class=\"n\">json<\/span><span class=\"o\">.<\/span><span class=\"n\">Marshal<\/span><span class=\"p\">(<\/span><span class=\"n\">userInfo<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">w<\/span><span class=\"o\">.<\/span><span class=\"n\">Write<\/span><span class=\"p\">(<\/span><span class=\"n\">payload<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">})<\/span>\n\n    <span class=\"n\">pebl<\/span><span class=\"o\">.<\/span><span class=\"n\">InternalService<\/span><span class=\"p\">(<\/span><span class=\"n\">mux<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"go.internal\"<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u0628\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u0646\u060c \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0627\u0698\u0648\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f <code>go mod tidy<\/code>\u060c \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u067e\u0627\u06cc\u06cc\u0646 \u0628\u06cc\u0627\u06cc\u062f <code>github.com\/redis\/go-redis\/v9<\/code>.  \u0627\u06af\u0631 \u0628\u0647 \u062f\u0644\u0627\u06cc\u0644\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0646\u0645\u06cc \u06a9\u0646\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>go get github.com\/redis\/go-redis\/v9<\/code>.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 Go \u0631\u0627 \u0628\u0627 \u0627\u062c\u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>pebl run<\/code> \u062f\u0627\u062e\u0644 <code>~\/work\/scratch\/go\/<\/code>.  \u0627\u06a9\u0646\u0648\u0646 \u0635\u0641\u062d\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0646\u0645\u0648\u0646\u0647 redis \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0627 \u0631\u0627 \u0628\u0647 \u0646\u0627\u0645 \u0641\u0647\u0631\u0633\u062a \u06a9\u0646\u062f <code>users<\/code>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/06\/1685580765_636_Microservices-with-pebl-\u2014-\u06cc\u06a9-\u067e\u0644\u062a\u0641\u0631\u0645-\u0627\u0628\u0631\u06cc-\u06a9\u0627\u0645\u0644-\u0648-\u0631\u0627\u06cc\u06af\u0627\u0646.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u067e\u0646\u062c\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f\u0647 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc redis \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f\" loading=\"lazy\" width=\"800\" height=\"537\" title=\"\"><\/p>\n<p>\u0627\u06af\u0631 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 Go \u062f\u0627\u062e\u0644\u06cc \u062e\u0648\u062f \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f\u060c \u0647\u0645\u06cc\u0634\u0647 \u06cc\u06a9 \u0646\u062a\u06cc\u062c\u0647 \u062e\u0627\u0644\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0632\u06cc\u0631\u0627 \u0646\u0645\u0648\u0646\u0647 redis \u0645\u0627 \u0647\u0646\u0648\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u06cc \u0646\u062f\u0627\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ curl 'localhost:32808?name=alice'\n{}\n$ curl 'localhost:32808?name=bob'\n{}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0648\u0631\u062a \u062f\u0631 \u0645\u0639\u0631\u0636 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0635\u0641\u062d\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 redis \u0645\u062d\u0644\u06cc \u062e\u0648\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ redis-cli -p 32809\n127.0.0.1:32809&gt; hset alice name alice email alice@example.org\n(integer) 2\n127.0.0.1:32809&gt; hset bob name bob email bob@example.org\n(integer) 2\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0627\u0644\u0627 \u0648\u0642\u062a\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u062f <code>alice<\/code> \u06cc\u0627 <code>bob<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u067e\u0631\u0633 \u0648 \u062c\u0648\u060c \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u06cc json \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u067e\u0627\u0633\u062e \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ curl 'localhost:32808?name=alice'\n{\"email\":\"alice@example.org\",\"name\":\"alice\"}\n$\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%D8%B1%D9%88%DA%A9%D8%B3%DB%8C\"><\/span>\n<p>  \u067e\u0631\u0648\u06a9\u0633\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u062f\u0627\u062e\u0644\u06cc\u060c \u0632\u06cc\u0631\u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0631\u0627 \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633 \u062e\u0627\u0631\u062c\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 Go \u062f\u0627\u062e\u0644\u06cc \u062e\u0648\u062f \u067e\u0631\u0648\u06a9\u0633\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0628\u06cc\u0627\u06cc\u06cc\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u0645 <code>main.py<\/code> \u062f\u0631 <code>~\/work\/scratch\/hello\/<\/code> \u067e\u0648\u0634\u0647:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"nn\">flask<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Flask<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">requests<\/span>\n\n<span class=\"n\">app<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Flask<\/span><span class=\"p\">(<\/span><span class=\"n\">__name__<\/span><span class=\"p\">)<\/span>\n\n<span class=\"o\">@<\/span><span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">route<\/span><span class=\"p\">(<\/span><span class=\"s\">\"https:\/\/dev.to\/\"<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">def<\/span> <span class=\"nf\">root<\/span><span class=\"p\">():<\/span>\n    <span class=\"k\">return<\/span> <span class=\"s\">\"hello, world!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">\"<\/span>\n\n<span class=\"o\">@<\/span><span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">route<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/user\/&lt;name&gt;\"<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">def<\/span> <span class=\"nf\">user_service<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">r<\/span> <span class=\"o\">=<\/span> <span class=\"n\">requests<\/span><span class=\"p\">.<\/span><span class=\"n\">get<\/span><span class=\"p\">(<\/span><span class=\"sa\">f<\/span><span class=\"s\">\"http:\/\/go.internal?name=<\/span><span class=\"si\">{<\/span><span class=\"n\">name<\/span><span class=\"si\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">r<\/span><span class=\"p\">.<\/span><span class=\"n\">text<\/span><span class=\"p\">,<\/span> <span class=\"n\">r<\/span><span class=\"p\">.<\/span><span class=\"n\">status_code<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">pebl<\/span>\n<span class=\"n\">pebl<\/span><span class=\"p\">.<\/span><span class=\"n\">service<\/span><span class=\"p\">(<\/span><span class=\"n\">app<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"hey.pebl.rocks\"<\/span><span class=\"p\">)<\/span>  <span class=\"c1\"># put your own domain here\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u062a\u06a9\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>\/user<\/code> \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 \u062f\u0627\u062e\u0644\u06cc Go \u062f\u0631 <code>go.internal:80<\/code>.  \u0628\u0627\u0631 \u062f\u06cc\u06af\u0631 \u0642\u062f\u0631\u062a pebl \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0631\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0648 \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u06af\u0648\u0646\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0627\u0631\u062c\u06cc \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0646\u062f.  \u0627\u0645\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f <code>Dockerfile<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>FROM peblcloud\/python\nCOPY . .\nRUN pip install flask requests\nENTRYPOINT python -u main.py\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f \u0648 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f!  \u0634\u0645\u0627 \u0642\u0627\u062f\u0631 \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0648\u062f \u0646\u0642\u0637\u0647 \u067e\u0627\u06cc\u0627\u0646\u06cc \u062e\u0627\u0631\u062c\u06cc \u0631\u0627 \u062f\u0631 \u0642\u0633\u0645\u062a \u067e\u0631\u0633 \u0648 \u062c\u0648 \u06a9\u0646\u06cc\u062f <code>\/user<\/code> \u0645\u0633\u06cc\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 \u062f\u0627\u062e\u0644\u06cc:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ curl localhost:32807\/user\/alice\n{\"email\":\"alice@example.org\",\"name\":\"alice\"}\n$ curl localhost:32807\/user\/bob\n{\"email\":\"bob@example.org\",\"name\":\"bob\"}\n$\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B1_%D8%AD%D8%A7%D9%84_%D8%A7%D8%B3%D8%AA%D9%82%D8%B1%D8%A7%D8%B1\"><\/span>\n<p>  \u062f\u0631 \u062d\u0627\u0644 \u0627\u0633\u062a\u0642\u0631\u0627\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f \u0648 \u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f!  \u0627\u0628\u062a\u062f\u0627 \u0633\u0631\u0648\u06cc\u0633 Go \u062f\u0627\u062e\u0644\u06cc \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ cd ~\/work\/scratch\/go\n$ pebl deploy\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u067e\u0633 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f <code>pebl deploy<\/code> \u06cc\u06a9 \u0628\u0627\u0631 \u062f\u06cc\u06af\u0631 \u062f\u0631 \u0632\u06cc\u0631 \u067e\u0631\u0648\u0698\u0647 \u067e\u0627\u06cc\u062a\u0648\u0646:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ cd ~\/work\/scratch\/hello\n$ pebl deploy\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Pebl \u0628\u0647\u200c\u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0628\u062f\u0648\u0646 \u062e\u0631\u0627\u0628\u06cc \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0647\u06cc\u0686 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc \u062f\u0631 \u0637\u0648\u0644 \u0627\u06cc\u0646 \u0627\u0646\u062a\u0642\u0627\u0644 \u062d\u0630\u0641 \u0646\u062e\u0648\u0627\u0647\u062f \u0634\u062f.  \u067e\u0633 \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0627\u0633\u062a\u0642\u0631\u0627\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u0631\u0627 \u0628\u0647 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0627\u0628\u0631\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ curl https:\/\/hey.pebl.rocks\/user\/alice\n{}\n$ curl https:\/\/hey.pebl.rocks\/user\/bob\n{}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u06cc \u0631\u0641\u062a\u060c \u0628\u0627\u06cc\u062f \u0646\u062a\u0627\u06cc\u062c \u062e\u0627\u0644\u06cc \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0632\u06cc\u0631\u0627 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0627\u0628\u0631\u06cc \u0645\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u062d\u0644\u06cc \u062e\u0648\u062f \u067e\u0631 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u0646\u062f\u0627\u0631\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%B1%D8%AF%DB%8C%D8%B3\"><\/span>\n<p>  \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u062f\u06cc\u0633<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 redis \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0627\u0628\u0631\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 pebl CLI \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 <code>pebl tunnel<\/code> \u062f\u0633\u062a\u0648\u0631:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ pebl tunnel\n :: tunnel established at: 127.0.0.1:59039\n :: use redis-cli to connect:\n :: redis-cli -p 59039\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u062a\u0648\u0646\u0644 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0645\u062d\u0644\u06cc \u0631\u0627 \u0628\u0647 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc redis \u0634\u0645\u0627 \u062f\u0631 \u0627\u0628\u0631 \u067e\u0631\u0627\u06a9\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>redis-cli<\/code> \u0628\u0627 <code>-p<\/code> \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u067e\u0648\u0631\u062a \u067e\u0631\u0648\u06a9\u0633\u06cc \u0648 \u062a\u0646\u0638\u06cc\u0645 \u0647\u0645\u0627\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ redis-cli -p 59039\n127.0.0.1:59039&gt; hset alice name alice email alice@example.org\n(integer) 2\n127.0.0.1:59039&gt; hset bob name bob email bob@example.org\n(integer) 2\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0634\u0645\u0627 \u0628\u0647 \u0627\u0628\u0631 \u0647\u0645\u0627\u0646 \u0646\u062a\u0627\u06cc\u062c \u0642\u0628\u0644\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>$ curl https:\/\/hey.pebl.rocks\/user\/alice\n{\"email\":\"alice@example.org\",\"name\":\"alice\"}\n$ curl https:\/\/hey.pebl.rocks\/user\/bob\n{\"email\":\"bob@example.org\",\"name\":\"bob\"}\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%A7%D8%AD%D9%84_%D8%A8%D8%B9%D8%AF%DB%8C\"><\/span>\n<p>  \u0645\u0631\u0627\u062d\u0644 \u0628\u0639\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0633\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a pebl \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645 &#8211; \u062e\u062f\u0645\u0627\u062a\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0648 redis.  \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062c\u0633\u062a\u062c\u0648 \u062f\u0631 \u0645\u0631\u062c\u0639 SDK\u060c \u0628\u0642\u06cc\u0647 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u0627\u062a pebl \u0631\u0627 \u06a9\u0634\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0631\u0627\u0647\u0646\u0645\u0627\u0647\u0627\u06cc \u0645\u062a\u0639\u062f\u062f \u0645\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0627\u0646\u062c\u0627\u0645 \u0648\u0638\u0627\u06cc\u0641 \u0631\u0627\u06cc\u062c \u0627\u0628\u0631\u06cc \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0628\u0631\u0631\u0633\u06cc \u0627\u062c\u0645\u0627\u0644\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 pebl\u060c a \u067e\u0644\u062a\u0641\u0631\u0645 \u0627\u0628\u0631\u06cc \u06a9\u0627\u0645\u0644 \u0648 \u0631\u0627\u06cc\u06af\u0627\u0646. \u0628\u0631\u062e\u0644\u0627\u0641 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0639\u0627\u062f\u06cc \u0628\u0647 Infrastructure as Code\u060c pebl \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0627\u0628\u0631 \u0634\u0645\u0627 \u0628\u0647 \u0627\u0639\u0644\u0627\u0645 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc yaml \u0645\u062a\u06a9\u06cc \u0646\u06cc\u0633\u062a. \u062f\u0631 \u0639\u0648\u0636 pebl \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 SDK \u0647\u0627\u06cc \u062e\u0627\u0635 \u0632\u0628\u0627\u0646 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u062a\u0639\u0628\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u062f. &hellip;<\/p>\n","protected":false},"author":2,"featured_media":25194,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-25193","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/25193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=25193"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/25193\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/25194"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=25193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=25193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=25193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}