<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Легко в ИТ | Даниил Николаев</title><author><name>Легко в ИТ | Даниил Николаев</name></author><id>https://teletype.in/atom/aqa_pro</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/aqa_pro?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@aqa_pro?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=aqa_pro"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/aqa_pro?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-06-17T16:06:52.088Z</updated><entry><id>aqa_pro:git-dictionary</id><link rel="alternate" type="text/html" href="https://teletype.in/@aqa_pro/git-dictionary?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=aqa_pro"></link><title>Словарь терминов Git и GitHub</title><published>2025-05-10T10:20:37.240Z</published><updated>2025-05-10T10:20:37.240Z</updated><summary type="html">Git — распределённая система контроля версий. Позволяет отслеживать изменения в коде, работать в команде и возвращаться к любому состоянию проекта.
 GitHub — онлайн-платформа для хостинга репозиториев Git. Обеспечивает удобный веб-интерфейс, управление пулреквестами, кодревью и автоматизацию.</summary><content type="html">
  &lt;hr /&gt;
  &lt;h1 id=&quot;DxcQ&quot;&gt;🧠 Основы&lt;/h1&gt;
  &lt;p id=&quot;AnsY&quot;&gt;&lt;strong&gt;Git&lt;/strong&gt; — распределённая система контроля версий. Позволяет отслеживать изменения в коде, работать в команде и возвращаться к любому состоянию проекта.&lt;br /&gt; &lt;strong&gt;GitHub&lt;/strong&gt; — онлайн-платформа для хостинга репозиториев Git. Обеспечивает удобный веб-интерфейс, управление пулреквестами, кодревью и автоматизацию.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;EkIj&quot;&gt;📁 Репозитории&lt;/h3&gt;
  &lt;ul id=&quot;keSt&quot;&gt;
    &lt;li id=&quot;5G8i&quot;&gt;&lt;strong&gt;Репозиторий (Repository)&lt;/strong&gt; — проект, отслеживаемый с помощью Git. Содержит весь код, историю изменений, конфигурации, ветки и коммиты.&lt;/li&gt;
    &lt;li id=&quot;BtTu&quot;&gt;&lt;strong&gt;Локальный репозиторий&lt;/strong&gt; — версия проекта на вашем компьютере.&lt;/li&gt;
    &lt;li id=&quot;Q5Ng&quot;&gt;&lt;strong&gt;Удалённый репозиторий (Remote)&lt;/strong&gt; — версия проекта на сервере, например, на GitHub. Обычно называется &lt;code&gt;origin&lt;/code&gt;.&lt;/li&gt;
    &lt;li id=&quot;Smdf&quot;&gt;&lt;strong&gt;Fork (Форк)&lt;/strong&gt; — копия чужого репозитория в вашем GitHub-аккаунте. Используется для самостоятельной работы и последующего внесения изменений обратно через Pull Request.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;x5i2&quot;&gt;📌 Ветки и изменения&lt;/h3&gt;
  &lt;ul id=&quot;IBvz&quot;&gt;
    &lt;li id=&quot;HfeS&quot;&gt;&lt;strong&gt;Branch (Ветка)&lt;/strong&gt; — отдельная «линия» разработки. Позволяет параллельно работать над фичами, багфиксом и экспериментами.&lt;/li&gt;
    &lt;li id=&quot;iDSu&quot;&gt;&lt;strong&gt;Master / Main&lt;/strong&gt; — основная ветка проекта. Сейчас чаще используется название &lt;code&gt;main&lt;/code&gt;.&lt;/li&gt;
    &lt;li id=&quot;JHPZ&quot;&gt;&lt;strong&gt;Commit (Коммит)&lt;/strong&gt; — сохранённое изменение. Содержит снимок состояния проекта с комментарием и автором.&lt;/li&gt;
    &lt;li id=&quot;tdjx&quot;&gt;&lt;strong&gt;Push&lt;/strong&gt; — отправка локальных коммитов в удалённый репозиторий.&lt;/li&gt;
    &lt;li id=&quot;TLap&quot;&gt;&lt;strong&gt;Pull&lt;/strong&gt; — получение новых изменений из удалённого репозитория.&lt;/li&gt;
    &lt;li id=&quot;1MZd&quot;&gt;&lt;strong&gt;Clone&lt;/strong&gt; — скачивание репозитория с GitHub на локальную машину.&lt;/li&gt;
    &lt;li id=&quot;IB7G&quot;&gt;&lt;strong&gt;Checkout&lt;/strong&gt; — переключение между ветками или коммитами.&lt;/li&gt;
    &lt;li id=&quot;3Lhr&quot;&gt;&lt;strong&gt;Merge (Мёрдж)&lt;/strong&gt; — объединение изменений из одной ветки в другую.&lt;/li&gt;
    &lt;li id=&quot;UVZh&quot;&gt;&lt;strong&gt;Rebase (Ребейз)&lt;/strong&gt; — «перепроигрывание» коммитов поверх другой ветки. Помогает сделать историю проекта линейной.&lt;/li&gt;
    &lt;li id=&quot;quL7&quot;&gt;&lt;strong&gt;Merge conflict (Конфликт слияния)&lt;/strong&gt; — ситуация, когда Git не может автоматически объединить ветки, и разработчику нужно вручную выбрать, какие изменения оставить.&lt;/li&gt;
    &lt;li id=&quot;NM41&quot;&gt;&lt;strong&gt;Stash (Ста́ш)&lt;/strong&gt; — временное сохранение изменений без коммита. Удобно, когда нужно срочно переключиться на другую задачу.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;n1cH&quot;&gt;📦 Работа с форками&lt;/h3&gt;
  &lt;ul id=&quot;ti1i&quot;&gt;
    &lt;li id=&quot;BUhA&quot;&gt;&lt;strong&gt;Обновиться из апстрима (upstream)&lt;/strong&gt; — синхронизировать свою копию проекта (форк) с оригинальным репозиторием.&lt;/li&gt;
    &lt;li id=&quot;FoB7&quot;&gt;&lt;strong&gt;Обновиться из ориджина (origin)&lt;/strong&gt; — получить обновления с удалённой версии своего же репозитория.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;Iwga&quot;&gt;🧪 Проверка и публикация&lt;/h3&gt;
  &lt;ul id=&quot;aPs6&quot;&gt;
    &lt;li id=&quot;DYdO&quot;&gt;&lt;strong&gt;Pull Request (PR)&lt;/strong&gt; — предложение внести изменения из одной ветки в другую. Обычно используется для отправки изменений в основной репозиторий.&lt;/li&gt;
    &lt;li id=&quot;VJTv&quot;&gt;&lt;strong&gt;Code Review (Кодревью)&lt;/strong&gt; — проверка кода другим разработчиком перед слиянием в основную ветку. Оценивается стиль, читаемость, безопасность и логика.&lt;/li&gt;
    &lt;li id=&quot;P9lo&quot;&gt;&lt;strong&gt;CI/CD (Continuous Integration / Continuous Delivery)&lt;/strong&gt; — автоматизация запуска тестов, сборок и деплоя после коммита или PR.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;KWUj&quot;&gt;🛠 Полезные команды&lt;/h3&gt;
  &lt;pre id=&quot;sAYz&quot;&gt;git clone &amp;lt;url&amp;gt;            # клонирование репозитория
git checkout -b &amp;lt;branch&amp;gt;   # создание и переход в новую ветку
git add .                  # добавление всех изменений в индекс
git commit -m &amp;quot;comment&amp;quot;    # фиксация изменений
git push                   # отправка в удалённый репозиторий
git pull                   # получение новых изменений
git merge &amp;lt;branch&amp;gt;         # слияние ветки
git rebase &amp;lt;branch&amp;gt;        # ребейз на другую ветку
git stash                  # сохранение изменений во временное хранилище
git stash pop              # восстановление изменений из stash
&lt;/pre&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;1LI0&quot;&gt;📌 Итог&lt;/h3&gt;
  &lt;p id=&quot;nVja&quot;&gt;Git и GitHub — это основа современной командной разработки. Понимание всех этих терминов и их практическое применение помогает не только грамотно управлять кодом, но и выстраивать эффективную командную работу.&lt;/p&gt;

</content></entry><entry><id>aqa_pro:SrQ3waWuibO</id><link rel="alternate" type="text/html" href="https://teletype.in/@aqa_pro/SrQ3waWuibO?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=aqa_pro"></link><title>SOAP (Simple Object Access Protocol) VS REST (Representational State Transfer)</title><published>2025-03-13T08:45:54.318Z</published><updated>2025-03-13T08:45:54.318Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/70/a2/70a24f64-f5bf-44c0-8917-5f332a88f195.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/36/bd/36bd6108-3dbc-444c-88b9-29e850dd159b.png&quot;&gt;SOAP изначально разработан для работы в корпоративной среде, где безопасность критически важна. Он поддерживает WS-Security, стандарт, который добавляет к сообщениям:</summary><content type="html">
  &lt;h3 id=&quot;Y8hB&quot;&gt;🔒 1. Встроенная безопасность через WS-Security&lt;/h3&gt;
  &lt;p id=&quot;txy7&quot;&gt;SOAP изначально разработан для работы в корпоративной среде, где безопасность критически важна. Он поддерживает &lt;strong&gt;WS-Security&lt;/strong&gt;, стандарт, который добавляет к сообщениям:&lt;/p&gt;
  &lt;ul id=&quot;5Iyw&quot;&gt;
    &lt;li id=&quot;3XFE&quot;&gt;&lt;strong&gt;Шифрование&lt;/strong&gt; 🔐 – данные можно зашифровать так, что их сможет прочитать только получатель.&lt;/li&gt;
    &lt;li id=&quot;hqwD&quot;&gt;&lt;strong&gt;Подписи&lt;/strong&gt; ✍️ – сообщения можно подписывать цифровыми подписями, чтобы убедиться, что они не были изменены в процессе передачи.&lt;/li&gt;
    &lt;li id=&quot;HDJa&quot;&gt;&lt;strong&gt;Аутентификацию&lt;/strong&gt; 🔑 – можно требовать, чтобы отправитель доказывал свою личность с помощью токенов, сертификатов и других методов.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;FnvY&quot;&gt;💡 &lt;strong&gt;Пример&lt;/strong&gt;: В банковских системах SOAP используется для передачи платежных данных, потому что он может обеспечить их защиту от взлома и подмены.&lt;/p&gt;
  &lt;h3 id=&quot;SUld&quot;&gt;🏢 2. Поддержка сложных схем авторизации&lt;/h3&gt;
  &lt;p id=&quot;ZQyi&quot;&gt;SOAP поддерживает такие мощные механизмы аутентификации, как:&lt;/p&gt;
  &lt;ul id=&quot;a3dr&quot;&gt;
    &lt;li id=&quot;jO2q&quot;&gt;&lt;strong&gt;SAML (Security Assertion Markup Language)&lt;/strong&gt; – используется в корпоративных системах для единого входа (SSO).&lt;/li&gt;
    &lt;li id=&quot;IWZs&quot;&gt;&lt;strong&gt;OAuth + WS-Security&lt;/strong&gt; – можно комбинировать оба метода для усиленной защиты.&lt;/li&gt;
    &lt;li id=&quot;7QJZ&quot;&gt;&lt;strong&gt;X.509 сертификаты&lt;/strong&gt; – можно использовать цифровые сертификаты для безопасного обмена данными.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;s4j1&quot;&gt;💡 &lt;strong&gt;Пример&lt;/strong&gt;: SOAP идеально подходит для работы с &lt;strong&gt;государственными порталами и крупными корпорациями&lt;/strong&gt;, где требуется высокая степень безопасности.&lt;/p&gt;
  &lt;h3 id=&quot;qgFl&quot;&gt;📜 3. Чёткая спецификация и строгая структура&lt;/h3&gt;
  &lt;p id=&quot;6m6W&quot;&gt;SOAP использует &lt;strong&gt;XML&lt;/strong&gt;, и у него есть строгая схема, которая предотвращает ошибки в данных.&lt;br /&gt; REST же может работать с разными форматами (JSON, XML, YAML), и поэтому у него нет встроенных механизмов проверки, как у SOAP.&lt;/p&gt;
  &lt;p id=&quot;4SCm&quot;&gt;💡 &lt;strong&gt;Пример&lt;/strong&gt;: Если REST API отправит некорректный JSON (например, забудет кавычки), сервер может неправильно его обработать. В SOAP такого не будет – все данные проверяются на соответствие схеме.&lt;/p&gt;
  &lt;h3 id=&quot;BC2U&quot;&gt;🔄 4. Сообщения передаются через &lt;strong&gt;POST&lt;/strong&gt;, что сложнее для атак&lt;/h3&gt;
  &lt;p id=&quot;YZ7g&quot;&gt;SOAP &lt;strong&gt;всегда&lt;/strong&gt; использует метод &lt;code&gt;POST&lt;/code&gt;, а это означает, что данные передаются в &lt;strong&gt;теле запроса&lt;/strong&gt;, а не в URL.&lt;br /&gt; В REST часто используют &lt;code&gt;GET&lt;/code&gt;, и параметры передаются в &lt;strong&gt;адресной строке&lt;/strong&gt;, что делает их уязвимыми для атак (например, их можно подглядеть в логах).&lt;/p&gt;
  &lt;p id=&quot;HdBO&quot;&gt;💡 &lt;strong&gt;Пример&lt;/strong&gt;: В SOAP банковский перевод будет отправляться через &lt;code&gt;POST&lt;/code&gt;, и никто не сможет увидеть параметры в URL. В REST, если бы использовался &lt;code&gt;GET&lt;/code&gt;, данные могли бы попасть в логи сервера и стать уязвимыми.&lt;/p&gt;
  &lt;h3 id=&quot;shwP&quot;&gt;🛡️ 5. SOAP поддерживает &lt;strong&gt;MTOM&lt;/strong&gt; – безопасную передачу бинарных данных&lt;/h3&gt;
  &lt;p id=&quot;XwFW&quot;&gt;Если нужно передавать &lt;strong&gt;файлы&lt;/strong&gt;, SOAP делает это через &lt;strong&gt;MTOM (Message Transmission Optimization Mechanism)&lt;/strong&gt;, который автоматически шифрует и защищает файлы. В REST приходится либо использовать Base64 (что увеличивает размер файлов), либо настраивать дополнительные уровни безопасности.&lt;/p&gt;
  &lt;p id=&quot;H228&quot;&gt;💡 &lt;strong&gt;Пример&lt;/strong&gt;: Если нужно передавать &lt;strong&gt;скан паспорта&lt;/strong&gt;, SOAP зашифрует его встроенными средствами, а в REST это нужно делать вручную.&lt;/p&gt;
  &lt;h3 id=&quot;BOKr&quot;&gt;🏆 Итог: Когда использовать SOAP вместо REST?&lt;/h3&gt;
  &lt;p id=&quot;2oAE&quot;&gt;✅ &lt;strong&gt;Когда нужна высокая безопасность&lt;/strong&gt; – банки, государственные системы, корпоративные API.&lt;br /&gt; ✅ &lt;strong&gt;Когда важна строгая структура данных&lt;/strong&gt; – SOAP использует XML-схемы, которые предотвращают ошибки.&lt;br /&gt; ✅ &lt;strong&gt;Когда передаются конфиденциальные файлы&lt;/strong&gt; – SOAP умеет их безопасно передавать.&lt;/p&gt;
  &lt;p id=&quot;1jpN&quot;&gt;📌 &lt;strong&gt;Но!&lt;/strong&gt; REST проще и быстрее для большинства задач, особенно в веб-разработке. Если безопасность не критична, REST будет удобнее.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;3e30&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;jAVJ&quot;&gt;🔒 &lt;strong&gt;Реальные примеры использования SOAP vs REST в безопасности&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;gm9e&quot;&gt;&lt;strong&gt;1️⃣ Банковские переводы и платежные системы&lt;/strong&gt; 🏦💰&lt;/h3&gt;
  &lt;p id=&quot;7Hbx&quot;&gt;&lt;strong&gt;Почему SOAP?&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;l4c5&quot;&gt;
    &lt;li id=&quot;jZmM&quot;&gt;Банки используют &lt;strong&gt;SOAP&lt;/strong&gt; для перевода денег, потому что он поддерживает &lt;strong&gt;WS-Security&lt;/strong&gt; и шифрование данных.&lt;/li&gt;
    &lt;li id=&quot;iPSb&quot;&gt;SOAP &lt;strong&gt;гарантирует&lt;/strong&gt;, что данные не изменятся при передаче.&lt;/li&gt;
    &lt;li id=&quot;OlGC&quot;&gt;Работает с &lt;strong&gt;SAML&lt;/strong&gt;, который позволяет безопасно аутентифицировать пользователей.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;yG3H&quot;&gt;📌 &lt;strong&gt;Пример:&lt;/strong&gt;&lt;br /&gt; Допустим, ты отправляешь деньги через интернет-банк.&lt;br /&gt; Система отправляет SOAP-запрос с твоими данными:&lt;/p&gt;
  &lt;pre id=&quot;VX4Q&quot;&gt;&amp;lt;soapenv:Envelope&amp;gt;
  &amp;lt;soapenv:Header&amp;gt;
    &amp;lt;wsse:Security&amp;gt;
      &amp;lt;wsse:UsernameToken&amp;gt;
        &amp;lt;wsse:Username&amp;gt;user123&amp;lt;/wsse:Username&amp;gt;
        &amp;lt;wsse:Password&amp;gt;securepassword&amp;lt;/wsse:Password&amp;gt;
      &amp;lt;/wsse:UsernameToken&amp;gt;
    &amp;lt;/wsse:Security&amp;gt;
  &amp;lt;/soapenv:Header&amp;gt;
  &amp;lt;soapenv:Body&amp;gt;
    &amp;lt;TransferFunds&amp;gt;
      &amp;lt;FromAccount&amp;gt;12345678&amp;lt;/FromAccount&amp;gt;
      &amp;lt;ToAccount&amp;gt;87654321&amp;lt;/ToAccount&amp;gt;
      &amp;lt;Amount&amp;gt;1000&amp;lt;/Amount&amp;gt;
    &amp;lt;/TransferFunds&amp;gt;
  &amp;lt;/soapenv:Body&amp;gt;
&amp;lt;/soapenv:Envelope&amp;gt;
&lt;/pre&gt;
  &lt;p id=&quot;pBpR&quot;&gt;🔹 Тут пароль &lt;strong&gt;зашифрован&lt;/strong&gt; и передаётся в заголовке, что делает атаку сложнее.&lt;br /&gt; 🔹 В REST тот же запрос мог бы передаваться через &lt;code&gt;GET&lt;/code&gt; (что &lt;strong&gt;небезопасно&lt;/strong&gt;) или &lt;code&gt;POST&lt;/code&gt;, но без встроенной защиты данных.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;QSA6&quot;&gt;&lt;strong&gt;2️⃣ Государственные сервисы и налоги&lt;/strong&gt; 🏛️📄&lt;/h3&gt;
  &lt;p id=&quot;uhMz&quot;&gt;&lt;strong&gt;Почему SOAP?&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;oZgm&quot;&gt;
    &lt;li id=&quot;3sqf&quot;&gt;В налоговых системах SOAP используется из-за строгого контроля передачи данных.&lt;/li&gt;
    &lt;li id=&quot;eNX6&quot;&gt;Налоговые декларации &lt;strong&gt;шифруются&lt;/strong&gt;, аутентифицируются с помощью &lt;strong&gt;цифровых сертификатов (X.509)&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;4e4A&quot;&gt;📌 &lt;strong&gt;Пример:&lt;/strong&gt;&lt;br /&gt; Когда компания подаёт налоговую декларацию, данные должны быть &lt;strong&gt;подписаны&lt;/strong&gt; и &lt;strong&gt;зашифрованы&lt;/strong&gt;, чтобы никто их не изменил. SOAP позволяет это сделать автоматически.&lt;/p&gt;
  &lt;p id=&quot;c1V3&quot;&gt;🔹 REST API не имеет встроенной поддержки цифровых подписей, и разработчикам пришлось бы &lt;strong&gt;добавлять это вручную&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;ksoH&quot;&gt;&lt;strong&gt;3️⃣ Безопасность в медицине&lt;/strong&gt; 🏥🔬&lt;/h3&gt;
  &lt;p id=&quot;0sOt&quot;&gt;&lt;strong&gt;Почему SOAP?&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;rmIs&quot;&gt;
    &lt;li id=&quot;abyu&quot;&gt;В медицинских сервисах, таких как &lt;strong&gt;HL7&lt;/strong&gt; (стандарт передачи медицинских данных), SOAP используется для передачи конфиденциальной информации.&lt;/li&gt;
    &lt;li id=&quot;g2pz&quot;&gt;Данные &lt;strong&gt;зашифрованы&lt;/strong&gt; и подписаны, чтобы не было подмены.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Cm8G&quot;&gt;📌 &lt;strong&gt;Пример:&lt;/strong&gt;&lt;br /&gt; Больница отправляет SOAP-запрос с медицинскими данными пациента в страховую компанию:&lt;/p&gt;
  &lt;pre id=&quot;MBc7&quot;&gt;&amp;lt;soapenv:Envelope&amp;gt;
  &amp;lt;soapenv:Header&amp;gt;
    &amp;lt;wsse:Security&amp;gt;
      &amp;lt;wsse:BinarySecurityToken ValueType=&amp;quot;X.509&amp;quot;&amp;gt;
        MIIBIjANBgkqh...
      &amp;lt;/wsse:BinarySecurityToken&amp;gt;
    &amp;lt;/wsse:Security&amp;gt;
  &amp;lt;/soapenv:Header&amp;gt;
  &amp;lt;soapenv:Body&amp;gt;
    &amp;lt;PatientRecord&amp;gt;
      &amp;lt;ID&amp;gt;98765&amp;lt;/ID&amp;gt;
      &amp;lt;Name&amp;gt;John Doe&amp;lt;/Name&amp;gt;
      &amp;lt;Diagnosis&amp;gt;COVID-19&amp;lt;/Diagnosis&amp;gt;
    &amp;lt;/PatientRecord&amp;gt;
  &amp;lt;/soapenv:Body&amp;gt;
&amp;lt;/soapenv:Envelope&amp;gt;
&lt;/pre&gt;
  &lt;p id=&quot;40ZY&quot;&gt;🔹 Здесь данные &lt;strong&gt;подписаны цифровым сертификатом&lt;/strong&gt;, и их нельзя подделать.&lt;br /&gt; 🔹 REST API не может гарантировать защиту &lt;strong&gt;из коробки&lt;/strong&gt;, поэтому его почти не используют в медицине.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;XbA8&quot;&gt;&lt;strong&gt;4️⃣ Передача файлов и защищённые документы&lt;/strong&gt; 📁🔐&lt;/h3&gt;
  &lt;p id=&quot;xann&quot;&gt;&lt;strong&gt;Почему SOAP?&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;ZaLe&quot;&gt;
    &lt;li id=&quot;aKnJ&quot;&gt;SOAP поддерживает &lt;strong&gt;MTOM (Message Transmission Optimization Mechanism)&lt;/strong&gt;, который позволяет передавать &lt;strong&gt;зашифрованные файлы&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;InUr&quot;&gt;REST приходится кодировать файлы в Base64, что &lt;strong&gt;увеличивает их размер&lt;/strong&gt; и снижает безопасность.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;EFlP&quot;&gt;📌 &lt;strong&gt;Пример:&lt;/strong&gt;&lt;br /&gt; Компания отправляет &lt;strong&gt;скан паспорта&lt;/strong&gt; в банк для верификации личности.&lt;br /&gt; SOAP передаёт его &lt;strong&gt;зашифрованным&lt;/strong&gt; файлом:&lt;/p&gt;
  &lt;pre id=&quot;b4X4&quot;&gt;&amp;lt;soapenv:Envelope&amp;gt;
  &amp;lt;soapenv:Body&amp;gt;
    &amp;lt;UploadDocument&amp;gt;
      &amp;lt;File&amp;gt;binary_data&amp;lt;/File&amp;gt;
    &amp;lt;/UploadDocument&amp;gt;
  &amp;lt;/soapenv:Body&amp;gt;
&amp;lt;/soapenv:Envelope&amp;gt;
&lt;/pre&gt;
  &lt;p id=&quot;vbZR&quot;&gt;🔹 REST пришлось бы делать это через обычный &lt;code&gt;POST&lt;/code&gt;, что не так безопасно.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;1Ird&quot;&gt;&lt;strong&gt;5️⃣ Корпоративные системы (Microsoft, IBM, Oracle)&lt;/strong&gt; 🏢💼&lt;/h3&gt;
  &lt;p id=&quot;WAQj&quot;&gt;&lt;strong&gt;Почему SOAP?&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;7FfX&quot;&gt;
    &lt;li id=&quot;BaBi&quot;&gt;Крупные компании используют SOAP для &lt;strong&gt;внутренних&lt;/strong&gt; API, где важна строгая безопасность и контроль.&lt;/li&gt;
    &lt;li id=&quot;m2Ep&quot;&gt;Например, в Microsoft Active Directory &lt;strong&gt;аутентификация&lt;/strong&gt; пользователей происходит через SOAP-запросы.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;xlse&quot;&gt;📌 &lt;strong&gt;Пример:&lt;/strong&gt;&lt;br /&gt; Когда сотрудник входит в корпоративную систему, его логин передаётся &lt;strong&gt;с цифровой подписью&lt;/strong&gt;, а не обычным паролем, как в REST.&lt;/p&gt;
  &lt;p id=&quot;GOU9&quot;&gt;🔹 REST чаще используют для &lt;strong&gt;открытых API&lt;/strong&gt;, например, в мобильных приложениях или веб-сервисах.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;GXVu&quot;&gt;&lt;strong&gt;Вывод: Где использовать SOAP, а где REST?&lt;/strong&gt;&lt;/h2&gt;
  &lt;figure id=&quot;DACf&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/36/bd/36bd6108-3dbc-444c-88b9-29e850dd159b.png&quot; width=&quot;618&quot; /&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;6apf&quot;&gt;🚀 &lt;strong&gt;Когда REST лучше?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;VwTR&quot;&gt;REST лучше, если:&lt;br /&gt; ✔ Нужно простое и быстрое API (например, для мобильного приложения 📱).&lt;br /&gt; ✔ Безопасность &lt;strong&gt;не&lt;/strong&gt; критична (например, блог, новости 📰).&lt;br /&gt; ✔ Нужно работать с браузерами (REST API легко интегрируются в фронтенд).&lt;/p&gt;
  &lt;h3 id=&quot;STYy&quot;&gt;🔒 &lt;strong&gt;Когда использовать SOAP?&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;vmpC&quot;&gt;SOAP лучше, если:&lt;br /&gt; ✔ Требуется &lt;strong&gt;высокий уровень безопасности&lt;/strong&gt; 🔐.&lt;br /&gt; ✔ Нужно передавать &lt;strong&gt;конфиденциальные данные&lt;/strong&gt; (банки, медицина, госуслуги).&lt;br /&gt; ✔ Важна &lt;strong&gt;строгая структура данных&lt;/strong&gt; и их неизменность.&lt;/p&gt;
  &lt;p id=&quot;wWQe&quot;&gt;🔥 &lt;strong&gt;Итог:&lt;/strong&gt; SOAP – это как &lt;strong&gt;броневик для данных&lt;/strong&gt;, а REST – как &lt;strong&gt;легковая машина&lt;/strong&gt; 🚗. Если нужно &lt;strong&gt;максимальная защита&lt;/strong&gt;, выбирай SOAP. Если важна &lt;strong&gt;скорость и удобство&lt;/strong&gt;, лучше REST. &lt;/p&gt;

</content></entry><entry><id>aqa_pro:10-1-arc</id><link rel="alternate" type="text/html" href="https://teletype.in/@aqa_pro/10-1-arc?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=aqa_pro"></link><title>Урок 10.1. Архитектура для тестировщика</title><published>2025-03-01T10:12:18.983Z</published><updated>2025-03-01T10:31:42.531Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/e6/9c/e69ca835-ab98-4705-aee3-35355506338e.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/6e/d4/6ed42590-7bc9-4b0d-bab2-519cf0961f1a.png&quot;&gt;🔹 API Gateway 🚪</summary><content type="html">
  &lt;nav&gt;
    &lt;ul&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#GA1b&quot;&gt;Описание сервисов&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#pkDd&quot;&gt;🔹 API Gateway 🚪&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#9V0P&quot;&gt;🔹 Auth Service (Сервис авторизации) 🔑&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#PATF&quot;&gt;🔹 Transaction Service (Сервис транзакций) 💰&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#nsHd&quot;&gt;🔹 RabbitMQ (Очередь сообщений) 📩&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#bbwZ&quot;&gt;🔹 Notification Service (Сервис уведомлений) 📢&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#Lldx&quot;&gt;🔹 Kafka (Платформа потоковой обработки) 🔄&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#dVna&quot;&gt;🔹 Kibana (Мониторинг) 📊&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#gYyb&quot;&gt;🔹 PostgreSQL (Реляционная база данных) 🗄&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#Tyk9&quot;&gt;🔹 Redis (Кэш) ⚡&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#zjkL&quot;&gt;💡 Различия между Kafka и RabbitMQ 🤔&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#izWc&quot;&gt;💡 Различия между Redis и PostgreSQL 🧐&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#twGO&quot;&gt;Как это всё работает&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#0OtC&quot;&gt;Примеры позитивных сценариев&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#PhLS&quot;&gt;1. Проверка платежной транзакции&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#OSyf&quot;&gt;2. Проверка получения баланса&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#cp43&quot;&gt;Примеры негативных сценариев&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#Wemk&quot;&gt;1. Ошибка авторизации (Auth Service)&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#25CQ&quot;&gt;2. Недостаточно средств на счёте (Transaction Service)&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#PK7h&quot;&gt;3. Некорректные данные запроса (API Gateway / Transaction Service)&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#4Pcr&quot;&gt;🛠 Что важно проверять&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/nav&gt;
  &lt;figure id=&quot;8M8s&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6e/d4/6ed42590-7bc9-4b0d-bab2-519cf0961f1a.png&quot; width=&quot;2618&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;GA1b&quot;&gt;Описание сервисов&lt;/h2&gt;
  &lt;h3 id=&quot;pkDd&quot;&gt;&lt;strong&gt;🔹 API Gateway&lt;/strong&gt; 🚪&lt;/h3&gt;
  &lt;p id=&quot;dkRo&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;br /&gt; API Gateway — это точка входа для всех запросов от пользователей и внешних систем. Он управляет маршрутизацией, авторизацией и безопасностью.&lt;/p&gt;
  &lt;p id=&quot;FG6q&quot;&gt;&lt;strong&gt;Почему используется?&lt;/strong&gt;&lt;br /&gt; ✅ Централизованный контроль доступа.&lt;br /&gt; ✅ Балансировка нагрузки.&lt;br /&gt; ✅ Безопасность и управление API.&lt;/p&gt;
  &lt;p id=&quot;BCF9&quot;&gt;&lt;strong&gt;Пример работы:&lt;/strong&gt;&lt;br /&gt; 👤 Пользователь отправляет запрос → API Gateway проверяет авторизацию → перенаправляет запрос в нужный микросервис.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;9V0P&quot;&gt;&lt;strong&gt;🔹 Auth Service (Сервис авторизации)&lt;/strong&gt; 🔑&lt;/h3&gt;
  &lt;p id=&quot;F0ur&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;br /&gt; Проверяет права пользователя и определяет, можно ли ему выполнять определённые действия.&lt;/p&gt;
  &lt;p id=&quot;BkPE&quot;&gt;&lt;strong&gt;Почему используется?&lt;/strong&gt;&lt;br /&gt; ✅ Обеспечивает безопасность.&lt;br /&gt; ✅ Поддерживает аутентификацию по JWT или OAuth.&lt;/p&gt;
  &lt;p id=&quot;GcDF&quot;&gt;&lt;strong&gt;Пример работы:&lt;/strong&gt;&lt;br /&gt; 👤 API Gateway отправляет запрос в Auth Service → Auth Service проверяет токен → возвращает результат (успешно / ошибка 401).&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;PATF&quot;&gt;&lt;strong&gt;🔹 Transaction Service (Сервис транзакций)&lt;/strong&gt; 💰&lt;/h3&gt;
  &lt;p id=&quot;Nf0H&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;br /&gt; Отвечает за выполнение и обработку банковских операций (переводы, платежи, пополнение счета).&lt;/p&gt;
  &lt;p id=&quot;zMbH&quot;&gt;&lt;strong&gt;Почему используется?&lt;/strong&gt;&lt;br /&gt; ✅ Гарантирует выполнение транзакций (ACID).&lt;br /&gt; ✅ Логирует операции для аудита.&lt;/p&gt;
  &lt;p id=&quot;dPEF&quot;&gt;&lt;strong&gt;Пример работы:&lt;/strong&gt;&lt;br /&gt; 📨 API Gateway отправляет платежный запрос → Transaction Service проверяет баланс → записывает в базу → отправляет события в Kafka и RabbitMQ.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;nsHd&quot;&gt;&lt;strong&gt;🔹 RabbitMQ (Очередь сообщений)&lt;/strong&gt; 📩&lt;/h3&gt;
  &lt;p id=&quot;61WL&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;br /&gt; Обрабатывает асинхронные события и уведомления пользователей.&lt;/p&gt;
  &lt;p id=&quot;YF8B&quot;&gt;&lt;strong&gt;Почему используется?&lt;/strong&gt;&lt;br /&gt; ✅ Гарантия доставки сообщений.&lt;/p&gt;
  &lt;p id=&quot;o5wF&quot;&gt;&lt;strong&gt;Пример работы:&lt;/strong&gt;&lt;br /&gt; 🔁 Transaction Service отправляет уведомление → RabbitMQ передает его Notification Service → пользователь получает SMS/email.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;bbwZ&quot;&gt;&lt;strong&gt;🔹 Notification Service (Сервис уведомлений)&lt;/strong&gt; 📢&lt;/h3&gt;
  &lt;p id=&quot;baFh&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;br /&gt; Отправляет пользователям сообщения о выполненных операциях.&lt;/p&gt;
  &lt;p id=&quot;9t9S&quot;&gt;&lt;strong&gt;Почему используется?&lt;/strong&gt;&lt;br /&gt; ✅ Разгружает Transaction Service.&lt;br /&gt; ✅ Позволяет легко менять механизмы уведомлений (SMS, email, push).&lt;/p&gt;
  &lt;p id=&quot;cYey&quot;&gt;&lt;strong&gt;Пример работы:&lt;/strong&gt;&lt;br /&gt; 🔁 Notification Service получает сообщение от RabbitMQ → отправляет SMS/email пользователю.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;Lldx&quot;&gt;&lt;strong&gt;🔹 Kafka (Платформа потоковой обработки)&lt;/strong&gt; 🔄&lt;/h3&gt;
  &lt;p id=&quot;Mm6k&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;br /&gt; Используется для передачи данных в систему аналитики и логирования.&lt;/p&gt;
  &lt;p id=&quot;1pXV&quot;&gt;&lt;strong&gt;Почему используется?&lt;/strong&gt;&lt;br /&gt; ✅ Поддерживает обработку большого количества событий.&lt;br /&gt; ✅ Устойчив к сбоям, благодаря репликации.&lt;/p&gt;
  &lt;p id=&quot;K7kG&quot;&gt;&lt;strong&gt;Пример работы:&lt;/strong&gt;&lt;br /&gt; 🔁 Transaction Service отправляет данные о транзакции в Kafka → Kibana использует эти данные для визуализации логов.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;dVna&quot;&gt;&lt;strong&gt;🔹 Kibana (Мониторинг)&lt;/strong&gt; 📊&lt;/h3&gt;
  &lt;p id=&quot;97Xr&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;br /&gt; Система визуализации логов и аналитики.&lt;/p&gt;
  &lt;p id=&quot;8dKh&quot;&gt;&lt;strong&gt;Почему используется?&lt;/strong&gt;&lt;br /&gt; ✅ Показывает графики и дашборды в реальном времени.&lt;br /&gt; ✅ Позволяет анализировать ошибки.&lt;/p&gt;
  &lt;p id=&quot;Y0Sc&quot;&gt;&lt;strong&gt;Пример работы:&lt;/strong&gt;&lt;br /&gt; 📊 Kibana получает данные из Kafka → отображает их на дашборде.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;gYyb&quot;&gt;&lt;strong&gt;🔹 PostgreSQL (Реляционная база данных)&lt;/strong&gt; 🗄&lt;/h3&gt;
  &lt;p id=&quot;siya&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;br /&gt; Основное хранилище данных о пользователях, счетах и транзакциях.&lt;/p&gt;
  &lt;p id=&quot;w37K&quot;&gt;&lt;strong&gt;Почему используется?&lt;/strong&gt;&lt;br /&gt; ✅ Поддерживает сложные SQL-запросы.&lt;br /&gt; ✅ Гарантирует целостность данных (ACID).&lt;/p&gt;
  &lt;p id=&quot;p0sN&quot;&gt;&lt;strong&gt;Пример работы:&lt;/strong&gt;&lt;br /&gt; 💾 Transaction Service сохраняет транзакцию в PostgreSQL → данные доступны для отчетов.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;Tyk9&quot;&gt;&lt;strong&gt;🔹 Redis (Кэш)&lt;/strong&gt; ⚡&lt;/h3&gt;
  &lt;p id=&quot;FY1U&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;br /&gt; Используется для кеширования данных и быстрого доступа.&lt;/p&gt;
  &lt;p id=&quot;FcVv&quot;&gt;&lt;strong&gt;Почему используется?&lt;/strong&gt;&lt;br /&gt; ✅ Обеспечивает мгновенный доступ к часто запрашиваемым данным.&lt;br /&gt; ✅ Снижает нагрузку на PostgreSQL.&lt;/p&gt;
  &lt;p id=&quot;QeC0&quot;&gt;&lt;strong&gt;Пример работы:&lt;/strong&gt;&lt;br /&gt; 🔄 Запрос баланса сначала ищет данные в Redis → если их нет, идёт в PostgreSQL.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;zjkL&quot;&gt;&lt;strong&gt;💡 Различия между Kafka и RabbitMQ&lt;/strong&gt; 🤔&lt;/h2&gt;
  &lt;figure id=&quot;fOZi&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/29/d2/29d2f6da-bb17-4248-ac36-3f3cc672e455.png&quot; width=&quot;617&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;HvDk&quot;&gt;💡 &lt;strong&gt;Когда использовать?&lt;/strong&gt;&lt;br /&gt; 🔹 &lt;strong&gt;Kafka&lt;/strong&gt; → если нужно обрабатывать &lt;strong&gt;много данных и событий&lt;/strong&gt;.&lt;br /&gt; 🔹 &lt;strong&gt;RabbitMQ&lt;/strong&gt; → если важна &lt;strong&gt;гарантированная доставка сообщений&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;izWc&quot;&gt;&lt;strong&gt;💡 Различия между Redis и PostgreSQL&lt;/strong&gt; 🧐&lt;/h2&gt;
  &lt;figure id=&quot;XQzl&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fc/0c/fc0c94b7-26da-498d-a1b5-4f8176144c14.png&quot; width=&quot;616&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qEbk&quot;&gt;💡 &lt;strong&gt;Когда использовать?&lt;/strong&gt;&lt;br /&gt; 🔹 &lt;strong&gt;Redis&lt;/strong&gt; → когда важна &lt;strong&gt;быстрая обработка&lt;/strong&gt; данных.&lt;br /&gt; 🔹 &lt;strong&gt;PostgreSQL&lt;/strong&gt; → когда важна &lt;strong&gt;целостность и надёжность данных&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h2 id=&quot;twGO&quot;&gt;&lt;strong&gt;Как это всё работает&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;Uw7R&quot;&gt;1️⃣ Ты (пользователь) делаешь &lt;strong&gt;запрос&lt;/strong&gt; (например, «Отправить деньги»).&lt;/p&gt;
  &lt;p id=&quot;Bvy2&quot;&gt;2️⃣ Этот запрос попадает в &lt;strong&gt;API Gateway&lt;/strong&gt;, который разбирается, куда его перенаправить.&lt;/p&gt;
  &lt;p id=&quot;MtGQ&quot;&gt;3️⃣ &lt;strong&gt;API Gateway&lt;/strong&gt; передаёт запрос в &lt;strong&gt;Auth Service&lt;/strong&gt;, чтобы тот проверил:&lt;br /&gt; 🔹 «У тебя есть право делать переводы?»&lt;br /&gt; ✅ Если проверка пройдена, идём дальше.&lt;/p&gt;
  &lt;p id=&quot;fcSt&quot;&gt;4️⃣ Запрос на перевод летит в &lt;strong&gt;Transaction Service&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;4II7&quot;&gt;5️⃣ &lt;strong&gt;Transaction Service&lt;/strong&gt;:&lt;br /&gt; 🔹 &lt;strong&gt;Сохраняет транзакцию&lt;/strong&gt; в &lt;strong&gt;PostgreSQL&lt;/strong&gt; (чтобы ничего не потерялось).&lt;br /&gt; 🔹 &lt;strong&gt;Отправляет уведомление&lt;/strong&gt; в &lt;strong&gt;RabbitMQ&lt;/strong&gt; (чтобы ты получил сообщение).&lt;br /&gt; 🔹 &lt;strong&gt;Шлёт данные&lt;/strong&gt; в &lt;strong&gt;Kafka&lt;/strong&gt; (для аналитики).&lt;br /&gt; 🔹 &lt;strong&gt;Обновляет Redis&lt;/strong&gt; (кеширует данные, чтобы быстрее загружать баланс).&lt;/p&gt;
  &lt;p id=&quot;Yd3c&quot;&gt;6️⃣ &lt;strong&gt;Notification Service&lt;/strong&gt; читает уведомление из &lt;strong&gt;RabbitMQ&lt;/strong&gt; и отправляет тебе на телефон или email сообщение, что &lt;strong&gt;«Деньги ушли туда-то»&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;T2bj&quot;&gt;7️⃣ &lt;strong&gt;Kafka передаёт данные&lt;/strong&gt; в &lt;strong&gt;Kibana&lt;/strong&gt; и внешние аналитические системы, чтобы можно было смотреть &lt;strong&gt;отчёты, графики и логи&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;yUCJ&quot;&gt;8️⃣ &lt;strong&gt;Kibana&lt;/strong&gt; – это как приборная панель, показывает &lt;strong&gt;всё, что происходит в твоём «цифровом банке»&lt;/strong&gt;, где и что логируется, были ли ошибки и т.д. 🚀&lt;/p&gt;
  &lt;figure id=&quot;Y29U&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/69/93/69936934-175d-477c-a5c1-4cb85fb2b545.png&quot; width=&quot;2014&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;0OtC&quot;&gt;Примеры позитивных сценариев&lt;/h2&gt;
  &lt;h3 id=&quot;PhLS&quot;&gt;&lt;strong&gt;1. Проверка платежной транзакции&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;OhK6&quot;&gt;&lt;strong&gt;Цель:&lt;/strong&gt; Проверить, что деньги списываются, записываются в базу, отправляется уведомление, а также что логи корректно отображаются в Kibana.&lt;/p&gt;
  &lt;p id=&quot;gA9m&quot;&gt;🔹 &lt;strong&gt;Шаги тестирования:&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;RBWG&quot;&gt;
    &lt;li id=&quot;oZPU&quot;&gt;Отправить запрос на перевод через &lt;strong&gt;Postman&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;V9to&quot;&gt;Проверить, что транзакция записалась в &lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;CVQ0&quot;&gt;
      &lt;li id=&quot;8ezr&quot;&gt;Данные должны быть &lt;strong&gt;внесены в таблицу&lt;/strong&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;A9Gb&quot;&gt;Проверить, что &lt;strong&gt;уведомление отправлено в RabbitMQ&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;QPFh&quot;&gt;
      &lt;li id=&quot;k83K&quot;&gt;Открыть RabbitMQ Management UI&lt;/li&gt;
      &lt;li id=&quot;v1GC&quot;&gt;Убедиться, что сообщение попало в &lt;strong&gt;очередь уведомлений&lt;/strong&gt;.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;wxQj&quot;&gt;Проверить, что &lt;strong&gt;Kafka получила событие&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;ln46&quot;&gt;
      &lt;li id=&quot;W0XT&quot;&gt;Подключиться к Kafka UI&lt;/li&gt;
      &lt;li id=&quot;JYN5&quot;&gt;Найти сообщение о переводе.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;l41d&quot;&gt;Проверить &lt;strong&gt;логи в Kibana&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;Zgcm&quot;&gt;
      &lt;li id=&quot;lOLR&quot;&gt;Открыть Kibana&lt;/li&gt;
      &lt;li id=&quot;uGfY&quot;&gt;Перейти в &lt;strong&gt;Discover&lt;/strong&gt; и найти запись по &lt;code&gt;transaction_id&lt;/code&gt;.&lt;/li&gt;
      &lt;li id=&quot;zkCL&quot;&gt;Убедиться, что &lt;strong&gt;ошибок нет&lt;/strong&gt;, лог содержит нужные поля (&lt;code&gt;user_id&lt;/code&gt;, &lt;code&gt;amount&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;).&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;3ehp&quot;&gt;Проверить, что &lt;strong&gt;пользователь получил SMS/email&lt;/strong&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;N5VC&quot;&gt;✅ &lt;strong&gt;Ожидаемый результат:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;XU7N&quot;&gt;
    &lt;li id=&quot;r0ey&quot;&gt;Транзакция успешно проведена.&lt;/li&gt;
    &lt;li id=&quot;u2zu&quot;&gt;Уведомление отправлено.&lt;/li&gt;
    &lt;li id=&quot;ZvDm&quot;&gt;В Kibana лог с правильными параметрами.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;OSyf&quot;&gt;&lt;strong&gt;2. Проверка получения баланса&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;Y36R&quot;&gt;&lt;strong&gt;Цель:&lt;/strong&gt; Убедиться, что данные кешируются в Redis, а при сбое Redis данные берутся из PostgreSQL.&lt;/p&gt;
  &lt;p id=&quot;rxLB&quot;&gt;🔹 &lt;strong&gt;Шаги тестирования:&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;6G49&quot;&gt;
    &lt;li id=&quot;9Bm7&quot;&gt;Запросить баланс пользователя через &lt;strong&gt;API Gateway&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;r2j1&quot;&gt;Проверить, что данные загружены из &lt;strong&gt;Redis&lt;/strong&gt;&lt;/li&gt;
    &lt;ul id=&quot;kNMl&quot;&gt;
      &lt;li id=&quot;OmRm&quot;&gt;Баланс должен быть в Redis.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;T1XD&quot;&gt;Удалить кеш (как удалить, сможешь узнать по инструкциям на проекте) и проверить повторный запрос&lt;/li&gt;
    &lt;ul id=&quot;10ga&quot;&gt;
      &lt;li id=&quot;VTFS&quot;&gt;Данные теперь &lt;strong&gt;должны быть загружены из PostgreSQL&lt;/strong&gt;.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;bzVx&quot;&gt;Проверить &lt;strong&gt;логи в Kibana&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;PuHj&quot;&gt;
      &lt;li id=&quot;RI2A&quot;&gt;Найти запись в &lt;strong&gt;Kibana → Discover&lt;/strong&gt; по &lt;code&gt;request_id&lt;/code&gt;.&lt;/li&gt;
      &lt;li id=&quot;jT2J&quot;&gt;Убедиться, что &lt;strong&gt;первый запрос получил данные из Redis, второй – из PostgreSQL&lt;/strong&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;30TS&quot;&gt;✅ &lt;strong&gt;Ожидаемый результат:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;rU2k&quot;&gt;
    &lt;li id=&quot;Elxk&quot;&gt;Данные сначала приходят из &lt;strong&gt;Redis&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;uQE9&quot;&gt;После удаления кеша – загружаются из &lt;strong&gt;PostgreSQL&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;vcYk&quot;&gt;В &lt;strong&gt;Kibana логируется источник данных&lt;/strong&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;szbL&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;cp43&quot;&gt;&lt;strong&gt;Примеры негативных сценариев&lt;/strong&gt;&lt;/h2&gt;
  &lt;h3 id=&quot;Wemk&quot;&gt;1. Ошибка авторизации (Auth Service)&lt;/h3&gt;
  &lt;p id=&quot;ANtG&quot;&gt;&lt;strong&gt;Сценарий:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;QyF7&quot;&gt;
    &lt;li id=&quot;z1r3&quot;&gt;Пользователь отправляет запрос с неверным токеном или вообще без токена.&lt;/li&gt;
    &lt;li id=&quot;NL9Q&quot;&gt;Допустим, пытается сделать перевод без указания или с просроченным токеном в заголовке.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;ujZk&quot;&gt;&lt;strong&gt;Что должно произойти?&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;T0qC&quot;&gt;
    &lt;li id=&quot;XKht&quot;&gt;&lt;strong&gt;API Gateway&lt;/strong&gt; перенаправляет запрос в &lt;strong&gt;Auth Service&lt;/strong&gt;.&lt;/li&gt;
    &lt;li id=&quot;fv4q&quot;&gt;&lt;strong&gt;Auth Service&lt;/strong&gt; не подтверждает права доступа.&lt;/li&gt;
    &lt;li id=&quot;tfPR&quot;&gt;Пользователь получает ошибку (например, &lt;strong&gt;401 Unauthorized&lt;/strong&gt; или &lt;strong&gt;403 Forbidden&lt;/strong&gt;).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Qgt5&quot;&gt;&lt;strong&gt;Как искать и диагностировать ошибку?&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;2yHL&quot;&gt;
    &lt;li id=&quot;bxY1&quot;&gt;&lt;strong&gt;Postman&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;O22S&quot;&gt;
      &lt;li id=&quot;SX9G&quot;&gt;Отправить запрос без токена или с поддельным токеном.&lt;/li&gt;
      &lt;li id=&quot;Cgk9&quot;&gt;Проверить HTTP-ответ (должен быть &lt;strong&gt;401&lt;/strong&gt; или &lt;strong&gt;403&lt;/strong&gt;).&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;LzyR&quot;&gt;&lt;strong&gt;Kibana&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;FcUy&quot;&gt;
      &lt;li id=&quot;5giQ&quot;&gt;В разделе &lt;strong&gt;Discover&lt;/strong&gt; отфильтровать логи по дате/ID запроса.&lt;/li&gt;
      &lt;li id=&quot;5U51&quot;&gt;Посмотреть, что сервис &lt;strong&gt;Auth Service&lt;/strong&gt; вернул ошибку авторизации.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;ul id=&quot;lFyF&quot;&gt;
      &lt;li id=&quot;UVp7&quot;&gt;Убедиться, что Gateway получил запрос и действительно отдал его на Auth Service, а не «потерял» где-то.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;25CQ&quot;&gt;2. Недостаточно средств на счёте (Transaction Service)&lt;/h3&gt;
  &lt;p id=&quot;LpA0&quot;&gt;&lt;strong&gt;Сценарий:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;aAyu&quot;&gt;
    &lt;li id=&quot;C2Wm&quot;&gt;Пользователь пытается перевести сумму, которая превышает баланс счёта.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;jxOF&quot;&gt;&lt;strong&gt;Что должно произойти?&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;s246&quot;&gt;
    &lt;li id=&quot;sRtC&quot;&gt;&lt;strong&gt;Transaction Service&lt;/strong&gt; при обработке обнаружит, что баланс меньше требуемой суммы.&lt;/li&gt;
    &lt;li id=&quot;c92y&quot;&gt;Операция должна быть отклонена.&lt;/li&gt;
    &lt;li id=&quot;KZIF&quot;&gt;Пользователь получает ошибку (например, &lt;strong&gt;400 Bad Request&lt;/strong&gt; с сообщением &amp;quot;Insufficient Funds&amp;quot;).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;ZQnW&quot;&gt;&lt;strong&gt;Как искать и диагностировать ошибку?&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;QwyT&quot;&gt;
    &lt;li id=&quot;0wN2&quot;&gt;&lt;strong&gt;Postman&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;y3HK&quot;&gt;
      &lt;li id=&quot;8x24&quot;&gt;Отправить запрос с суммой больше, чем доступный баланс.&lt;/li&gt;
      &lt;li id=&quot;OEAg&quot;&gt;Убедиться, что сервис вернул корректный код ошибки (400 или 422) и понятное сообщение.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;yehw&quot;&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; (DBeaver):&lt;/li&gt;
    &lt;ul id=&quot;3EKb&quot;&gt;
      &lt;li id=&quot;Vkgl&quot;&gt;Проверить, что транзакция &lt;strong&gt;не появилась&lt;/strong&gt; в таблице &lt;code&gt;transactions&lt;/code&gt; или имеет статус &lt;code&gt;FAILED&lt;/code&gt;.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;ytHJ&quot;&gt;&lt;strong&gt;Kibana&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;J0B3&quot;&gt;
      &lt;li id=&quot;IMn0&quot;&gt;Найти лог по &lt;code&gt;transaction_id&lt;/code&gt; и убедиться, что там есть запись об ошибке «Insufficient funds».&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;PK7h&quot;&gt;3. Некорректные данные запроса (API Gateway / Transaction Service)&lt;/h3&gt;
  &lt;p id=&quot;yOgI&quot;&gt;&lt;strong&gt;Сценарий:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;xM3h&quot;&gt;
    &lt;li id=&quot;VqnR&quot;&gt;Отправить запрос с &lt;strong&gt;неправильным форматом JSON&lt;/strong&gt;, отсутствием обязательных полей (например, не указать &lt;code&gt;amount&lt;/code&gt; или &lt;code&gt;to_account&lt;/code&gt;), или с некорректным типом (вместо числа передать строку).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;8n6X&quot;&gt;&lt;strong&gt;Что должно произойти?&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;aUlQ&quot;&gt;
    &lt;li id=&quot;swha&quot;&gt;&lt;strong&gt;API Gateway&lt;/strong&gt; может отклонить запрос из-за невалидного тела (400 Bad Request).&lt;/li&gt;
    &lt;li id=&quot;RsvT&quot;&gt;Если прошёл до &lt;strong&gt;Transaction Service&lt;/strong&gt; – тот должен вернуть ошибку при парсинге / валидации данных.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;vIne&quot;&gt;&lt;strong&gt;Как искать и диагностировать ошибку?&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;fdYp&quot;&gt;
    &lt;li id=&quot;z7Mw&quot;&gt;&lt;strong&gt;Postman&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;dtfE&quot;&gt;
      &lt;li id=&quot;Jsm9&quot;&gt;Отправить специально искажённый JSON.&lt;/li&gt;
      &lt;li id=&quot;STwO&quot;&gt;Проверить код ошибки (400 Bad Request или 422 Unprocessable Entity).&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;LjaN&quot;&gt;&lt;strong&gt;Kibana&lt;/strong&gt;:&lt;/li&gt;
    &lt;ul id=&quot;Rt59&quot;&gt;
      &lt;li id=&quot;iiYc&quot;&gt;Поиск по &lt;code&gt;request_id&lt;/code&gt; или &lt;code&gt;transaction_id&lt;/code&gt;.&lt;/li&gt;
      &lt;li id=&quot;84ZT&quot;&gt;Увидеть лог о «JSON parse error» или «Validation error».&lt;/li&gt;
    &lt;/ul&gt;
    &lt;ul id=&quot;xTmy&quot;&gt;
      &lt;li id=&quot;fcS2&quot;&gt;Может оказаться, что API Gateway не пропустил запрос — смотрим его логи.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;pRNU&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Nnsm&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;4Pcr&quot;&gt;&lt;strong&gt;🛠 Что важно проверять&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;FW06&quot;&gt;✅ &lt;strong&gt;RabbitMQ&lt;/strong&gt; → Сообщения не теряются в очереди.&lt;br /&gt;✅ &lt;strong&gt;Kafka&lt;/strong&gt; → События корректно попадают в аналитику и &lt;strong&gt;Kibana&lt;/strong&gt;.&lt;br /&gt;✅ &lt;strong&gt;PostgreSQL&lt;/strong&gt; → Данные правильно сохраняются и не теряются.&lt;br /&gt;✅ &lt;strong&gt;Redis&lt;/strong&gt; → Кеш работает и обновляется при изменениях.&lt;br /&gt;✅ &lt;strong&gt;Kibana&lt;/strong&gt; → Логи логируются корректно, их можно просматривать и анализировать.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;dsky&quot;&gt;📌 &lt;strong&gt;Правильность запросов и ответов&lt;/strong&gt;: отправил запрос на перевод → получил корректный результат.&lt;br /&gt; 📌 &lt;strong&gt;Безопасность&lt;/strong&gt;: никто не может украсть данные или перевести деньги без разрешения (&lt;strong&gt;Auth Service&lt;/strong&gt;).&lt;br /&gt; 📌 &lt;strong&gt;Целостность данных&lt;/strong&gt;: все транзакции верно записываются в &lt;strong&gt;PostgreSQL&lt;/strong&gt;.&lt;br /&gt; 📌 &lt;strong&gt;Уведомления&lt;/strong&gt;: проверяешь, как работает &lt;strong&gt;RabbitMQ&lt;/strong&gt; и &lt;strong&gt;Notification Service&lt;/strong&gt; → приходит ли пользователю сообщение?&lt;br /&gt; 📌 &lt;strong&gt;Аналитика и логи&lt;/strong&gt;: &lt;strong&gt;Kafka&lt;/strong&gt; всё ли записывает? &lt;strong&gt;Kibana&lt;/strong&gt; всё ли отображает?&lt;br /&gt; 📌 &lt;strong&gt;Кеш&lt;/strong&gt;: &lt;strong&gt;Redis&lt;/strong&gt; действительно ускоряет ответ? А если кеш упадёт, система продолжит работать через &lt;strong&gt;PostgreSQL&lt;/strong&gt;?&lt;/p&gt;
  &lt;p id=&quot;f8mt&quot;&gt;🔥 &lt;strong&gt;Главная задача тестировщика — убедиться, что система работает стабильно, данные не теряются, а ошибки легко отслеживаются!&lt;/strong&gt; 🚀&lt;/p&gt;

</content></entry><entry><id>aqa_pro:9-2-restfulbooker-filebeat-elasticsearch-kibana</id><link rel="alternate" type="text/html" href="https://teletype.in/@aqa_pro/9-2-restfulbooker-filebeat-elasticsearch-kibana?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=aqa_pro"></link><title>9.2 Как работают Elasticsearch, Kibana, Filebeat и Restful-Booker вместе.</title><published>2024-12-17T11:40:02.208Z</published><updated>2024-12-17T17:25:34.631Z</updated><summary type="html">Конечно! Вот простое объяснение, как работают Elasticsearch, Kibana, Filebeat и Restful-Booker вместе.</summary><content type="html">
  &lt;p id=&quot;MyoB&quot;&gt;Конечно! Вот простое объяснение, как работают &lt;strong&gt;Elasticsearch&lt;/strong&gt;, &lt;strong&gt;Kibana&lt;/strong&gt;, &lt;strong&gt;Filebeat&lt;/strong&gt; и &lt;strong&gt;Restful-Booker&lt;/strong&gt; вместе.&lt;/p&gt;
  &lt;p id=&quot;cAFm&quot;&gt;&lt;strong&gt;1. Restful-Booker – приложение&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;9elE&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;6vvb&quot;&gt;Это ваше приложение, которое отвечает на HTTP-запросы. Например:&lt;/p&gt;
  &lt;p id=&quot;vUo3&quot;&gt;• Если кто-то отправляет запрос &lt;code&gt;GET /booking&lt;/code&gt;, приложение отвечает &lt;strong&gt;200 OK&lt;/strong&gt; и возвращает &lt;strong&gt;“Booking details”&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;XulK&quot;&gt;&lt;strong&gt;Что происходит?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;dobc&quot;&gt;• Приложение пишет свои логи в консоль (&lt;strong&gt;stdout&lt;/strong&gt;) – это сообщения о запросах, их статусах и ответах.&lt;/p&gt;
  &lt;p id=&quot;13x2&quot;&gt;Пример лога:&lt;/p&gt;
  &lt;p id=&quot;11rY&quot;&gt;&lt;code&gt;GET /booking 200 4.017 ms - 162&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;ckoc&quot;&gt;&lt;strong&gt;2. Filebeat – сборщик логов&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;pJVc&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Zb9X&quot;&gt;&lt;strong&gt;Filebeat&lt;/strong&gt; – это инструмент, который читает логи из приложения (&lt;strong&gt;Restful-Booker&lt;/strong&gt;) и отправляет их в &lt;strong&gt;Elasticsearch&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;DjsT&quot;&gt;&lt;strong&gt;Что происходит?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;VGx0&quot;&gt;• Filebeat “смотрит” в файлы Docker-логов (например, &lt;code&gt;/var/lib/docker/containers/*/*.log&lt;/code&gt;).&lt;/p&gt;
  &lt;p id=&quot;kvkp&quot;&gt;• Он находит логи приложения Restful-Booker и отправляет их в Elasticsearch.&lt;/p&gt;
  &lt;p id=&quot;gGUf&quot;&gt;Пример того, что отправляет Filebeat:&lt;/p&gt;
  &lt;pre id=&quot;7UAm&quot;&gt;{
&amp;quot;message&amp;quot;: &amp;quot;GET /booking 200 4.017 ms - 162&amp;quot;,
&amp;quot;container.name&amp;quot;: &amp;quot;restful-booker&amp;quot;,
&amp;quot;log.level&amp;quot;: &amp;quot;info&amp;quot;,
&amp;quot;timestamp&amp;quot;: &amp;quot;2024-12-17T13:56:57.361Z&amp;quot;
}&lt;/pre&gt;
  &lt;p id=&quot;doz0&quot;&gt;&lt;strong&gt;3. Elasticsearch – хранилище данных&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;w0WV&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;aLO1&quot;&gt;&lt;strong&gt;Elasticsearch&lt;/strong&gt; – это база данных, которая умеет быстро искать и обрабатывать текстовые данные (логи).&lt;/p&gt;
  &lt;p id=&quot;8TcB&quot;&gt;&lt;strong&gt;Что происходит?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;6I7k&quot;&gt;• Filebeat отправляет логи в Elasticsearch.&lt;/p&gt;
  &lt;p id=&quot;jvBz&quot;&gt;• Elasticsearch сохраняет логи в виде индексов (например,&lt;code&gt; filebeat-2024.12.17&lt;/code&gt;).&lt;/p&gt;
  &lt;p id=&quot;LgVr&quot;&gt;• Теперь можно искать по этим логам: по запросам, статусам, времени и т.д.&lt;/p&gt;
  &lt;p id=&quot;2RLX&quot;&gt;&lt;strong&gt;4. Kibana – визуализация данных&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Jpwa&quot;&gt;&lt;strong&gt;Что это?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;dyCU&quot;&gt;&lt;strong&gt;Kibana&lt;/strong&gt; – это инструмент для визуализации данных из Elasticsearch.&lt;/p&gt;
  &lt;p id=&quot;x0t8&quot;&gt;&lt;strong&gt;Что происходит?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;JUGt&quot;&gt;• Kibana подключается к Elasticsearch и “видит” все сохранённые логи.&lt;/p&gt;
  &lt;p id=&quot;lSkc&quot;&gt;• Вы создаёте &lt;strong&gt;Data View&lt;/strong&gt; (например, для индексов filebeat-*).&lt;/p&gt;
  &lt;p id=&quot;vkWi&quot;&gt;• В разделе &lt;strong&gt;Discover&lt;/strong&gt; вы можете искать и фильтровать логи.&lt;/p&gt;
  &lt;p id=&quot;yTte&quot;&gt;Пример поиска в Kibana:&lt;/p&gt;
  &lt;p id=&quot;WHhu&quot;&gt;• Найти все запросы с &lt;code&gt;/booking&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;2Spl&quot;&gt;• Найти ошибки (status: 500).&lt;/p&gt;
  &lt;p id=&quot;mrO0&quot;&gt;&lt;strong&gt;Как всё работает вместе?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Ijeg&quot;&gt;1. &lt;strong&gt;Restful-Booker&lt;/strong&gt;:&lt;/p&gt;
  &lt;p id=&quot;LnBn&quot;&gt;Приложение принимает HTTP-запросы и пишет логи.&lt;/p&gt;
  &lt;p id=&quot;ISfE&quot;&gt;2. &lt;strong&gt;Filebeat&lt;/strong&gt;:&lt;/p&gt;
  &lt;p id=&quot;dwMK&quot;&gt;Читает логи из контейнера &lt;strong&gt;Restful-Booker&lt;/strong&gt; и отправляет их в &lt;strong&gt;Elasticsearch&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;r0rK&quot;&gt;3. &lt;strong&gt;Elasticsearch&lt;/strong&gt;:&lt;/p&gt;
  &lt;p id=&quot;72Kg&quot;&gt;Сохраняет логи и позволяет быстро искать их.&lt;/p&gt;
  &lt;p id=&quot;0E3B&quot;&gt;4. &lt;strong&gt;Kibana&lt;/strong&gt;:&lt;/p&gt;
  &lt;p id=&quot;M3UT&quot;&gt;Подключается к Elasticsearch и показывает логи в удобном виде. Вы можете искать, фильтровать и анализировать данные.&lt;/p&gt;
  &lt;p id=&quot;Td9t&quot;&gt;&lt;strong&gt;Пример потока данных&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;zQi6&quot;&gt;1. Кто-то отправляет запрос:&lt;/p&gt;
  &lt;p id=&quot;bQ9R&quot;&gt;&lt;code&gt;GET /booking&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;0wDG&quot;&gt;2. Restful-Booker пишет лог:&lt;/p&gt;
  &lt;p id=&quot;TJre&quot;&gt;&lt;code&gt;GET /booking 200 4.017 ms - 162&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;ai8Y&quot;&gt;3. Filebeat собирает этот лог и отправляет в Elasticsearch.&lt;/p&gt;
  &lt;p id=&quot;4wsT&quot;&gt;4. Elasticsearch сохраняет лог в индекс &lt;code&gt;filebeat-2024.12.17&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;dyyb&quot;&gt;5. В Kibana → Discover вы видите:&lt;/p&gt;
  &lt;p id=&quot;EvzB&quot;&gt;&lt;code&gt;message: &amp;quot;GET /booking 200 4.017 ms - 162&amp;quot;&lt;/code&gt;&lt;/p&gt;

</content></entry><entry><id>aqa_pro:about_me</id><link rel="alternate" type="text/html" href="https://teletype.in/@aqa_pro/about_me?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=aqa_pro"></link><title>Доведу до трудоустройства в QA за 2 месяца</title><published>2024-11-01T15:39:55.851Z</published><updated>2024-12-16T12:33:09.585Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/ec/1f/ec1fb631-7944-4494-afea-e645ff1334e0.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/49/ef/49efcf41-4ed4-4e71-8580-048cc2fbaee9.jpeg&quot;&gt;Привет!</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;OSd0&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Привет!&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;Eo1V&quot;&gt;Меня зовут Даниил, мне 34 года, работаю на позиции Senior Automation QA Engineer.&lt;/p&gt;
    &lt;p id=&quot;JH3s&quot;&gt;Обучаю и устраиваю тестировщиков как с полного нуля, так и с опытом. К каждому ученику — &lt;strong&gt;индивидуальный подход&lt;/strong&gt;.&lt;/p&gt;
  &lt;/section&gt;
  &lt;figure id=&quot;Av4q&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/49/ef/49efcf41-4ed4-4e71-8580-048cc2fbaee9.jpeg&quot; width=&quot;640&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;kDST&quot; data-align=&quot;center&quot;&gt;Полный цикл обучения выглядит так*:&lt;/h3&gt;
  &lt;p id=&quot;BQEZ&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;DpS7&quot;&gt;
    &lt;li id=&quot;f1Ky&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Знакомство&lt;/strong&gt;. Обсуждаем на бесплатной консультации твои скиллы и цели. Около 30 минут.&lt;/li&gt;
    &lt;li id=&quot;ExTc&quot;&gt;&lt;strong&gt;Подготовка и приглашение в личное рабочее пространство. &lt;/strong&gt;Подготолвю для тебя рабочее пространство, которое используется на рекльных проектах в компаниях. Расскажу как им пользоваться.&lt;/li&gt;
    &lt;li id=&quot;icUp&quot;&gt;&lt;strong&gt;Процесс обучения и проверка знаний.&lt;/strong&gt; Будем созваниваться каждую неделю, примерно по 1 часу, для корректировки процесса обучения при необходимости и для проверки знаний.&lt;/li&gt;
    &lt;li id=&quot;62v3&quot;&gt;&lt;strong&gt;Резюме и собеседования. &lt;/strong&gt;Создадим с тобой легенду и резюме. Опишем подробно твои достижения, скилы и легенду о твоей прошлой работе. Так же проведем торги по повышению оклада, после получения оффера.&lt;/li&gt;
    &lt;li id=&quot;cY3b&quot;&gt;&lt;strong&gt;Сопровождение.&lt;/strong&gt; Далее в течении 2-3 месяцев буду помогать внедряться в компанию и правильно работать. &lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;HfGb&quot; data-align=&quot;center&quot;&gt;&lt;em&gt;*на всех этапах буду помогать по всем возникающим вопросам. &lt;/em&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;W3VG&quot;&gt;&lt;strong&gt;Прайс-лист:&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;DeqG&quot;&gt;- Первая консультация – &lt;strong&gt;бесплатно&lt;/strong&gt;.&lt;br /&gt;- Помощь новичкам в получении оффера:&lt;/p&gt;
    &lt;blockquote id=&quot;YQ0q&quot;&gt;на позицию QA Manual –  &lt;strong&gt;20.000&lt;/strong&gt; рублей за полное сопровождение &lt;strong&gt;+ 50% от первой и от второй зарплаты + 0 рублей &lt;/strong&gt;за послеофферное сопровождение.&lt;/blockquote&gt;
    &lt;blockquote id=&quot;J2xE&quot;&gt;на позицию QA Automation – &lt;strong&gt;50.000&lt;/strong&gt; рублей за полное сопровождение &lt;strong&gt;+ 50% от первой и от второй зарплаты + 0 рублей &lt;/strong&gt;за послеофферное сопровождение.&lt;/blockquote&gt;
    &lt;p id=&quot;lfQB&quot;&gt;&lt;br /&gt;- Помощь в поиске удаленной работы – &lt;strong&gt;7000&lt;/strong&gt; рублей за занятие. Помогу составить резюме, продумать легенду.&lt;br /&gt;- Помощь на испытательном сроке - &lt;strong&gt;7000&lt;/strong&gt; рублей за занятие, если у вас уже есть работа QA или AutoQA и вам нужна помощь.&lt;br /&gt;- Другие услуги – &lt;strong&gt;7000&lt;/strong&gt; рублей за консультацию.&lt;/p&gt;
  &lt;/section&gt;
  &lt;figure id=&quot;m64T&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://calendar.google.com/calendar/appointments/schedules/AcZssZ2bbzMSmnULgOrRPeKtw3qLZXJlKi31cakRzu77jSO_qiIwJ-VJCAtqVXYYOTh2KVicRX5k2cY0?gv=true&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;section&gt;
    &lt;p id=&quot;NAj8&quot;&gt;&lt;strong&gt;Контакты:&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;tpUY&quot;&gt;Запись на бесплатную консультацию - &lt;a href=&quot;https://aqa-pro.tech/#rec805884529&quot; target=&quot;_blank&quot;&gt;aqa-&lt;/a&gt;&lt;a href=&quot;https://aqa-pro.tech/booking&quot; target=&quot;_blank&quot;&gt;pro.tec&lt;/a&gt;&lt;a href=&quot;https://aqa-pro.tech/#rec805884529&quot; target=&quot;_blank&quot;&gt;h&lt;/a&gt;&lt;br /&gt;Telegram - &lt;a href=&quot;https://t.me/danilfg&quot; target=&quot;_blank&quot;&gt;https://t.me/danilfg&lt;/a&gt;&lt;br /&gt;Telegram канал - &lt;a href=&quot;https://t.me/aqa_pro_tech&quot; target=&quot;_blank&quot;&gt;https://t.me/aqa_pro_tech&lt;/a&gt;&lt;br /&gt;Teletype - &lt;a href=&quot;https://blog.aqa-pro.tech/&quot; target=&quot;_blank&quot;&gt;https://blog.aqa-pro.tech/&lt;/a&gt;&lt;/p&gt;
    &lt;p id=&quot;SWuq&quot;&gt;RuTube - &lt;a href=&quot;https://rutube.ru/channel/274005/&quot; target=&quot;_blank&quot;&gt;https://rutube.ru/channel/274005/&lt;/a&gt;&lt;br /&gt;YouTube - &lt;a href=&quot;https://www.youtube.com/@aqa_pro/&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/@aqa_pro/&lt;/a&gt;&lt;br /&gt;Дзен - &lt;a href=&quot;https://dzen.ru/aqa_pro&quot; target=&quot;_blank&quot;&gt;https://dzen.ru/aqa_pro&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;

</content></entry></feed>