<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Легко в ИТ | Даниил Николаев</title><generator>teletype.in</generator><description><![CDATA[Легко в ИТ | Даниил Николаев]]></description><image><url>https://img2.teletype.in/files/57/27/5727d08c-0880-4fed-bfa1-259f43271f97.png</url><title>Легко в ИТ | Даниил Николаев</title><link>https://teletype.in/@aqa_pro</link></image><link>https://teletype.in/@aqa_pro?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=aqa_pro</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/aqa_pro?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/aqa_pro?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 17 Jun 2026 16:06:51 GMT</pubDate><lastBuildDate>Wed, 17 Jun 2026 16:06:51 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@aqa_pro/git-dictionary</guid><link>https://teletype.in/@aqa_pro/git-dictionary?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=aqa_pro</link><comments>https://teletype.in/@aqa_pro/git-dictionary?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=aqa_pro#comments</comments><dc:creator>aqa_pro</dc:creator><title>Словарь терминов Git и GitHub</title><pubDate>Sat, 10 May 2025 10:20:37 GMT</pubDate><description><![CDATA[Git — распределённая система контроля версий. Позволяет отслеживать изменения в коде, работать в команде и возвращаться к любому состоянию проекта.
 GitHub — онлайн-платформа для хостинга репозиториев Git. Обеспечивает удобный веб-интерфейс, управление пулреквестами, кодревью и автоматизацию.]]></description><content:encoded><![CDATA[
  <hr />
  <h1 id="DxcQ">🧠 Основы</h1>
  <p id="AnsY"><strong>Git</strong> — распределённая система контроля версий. Позволяет отслеживать изменения в коде, работать в команде и возвращаться к любому состоянию проекта.<br /> <strong>GitHub</strong> — онлайн-платформа для хостинга репозиториев Git. Обеспечивает удобный веб-интерфейс, управление пулреквестами, кодревью и автоматизацию.</p>
  <hr />
  <h3 id="EkIj">📁 Репозитории</h3>
  <ul id="keSt">
    <li id="5G8i"><strong>Репозиторий (Repository)</strong> — проект, отслеживаемый с помощью Git. Содержит весь код, историю изменений, конфигурации, ветки и коммиты.</li>
    <li id="BtTu"><strong>Локальный репозиторий</strong> — версия проекта на вашем компьютере.</li>
    <li id="Q5Ng"><strong>Удалённый репозиторий (Remote)</strong> — версия проекта на сервере, например, на GitHub. Обычно называется <code>origin</code>.</li>
    <li id="Smdf"><strong>Fork (Форк)</strong> — копия чужого репозитория в вашем GitHub-аккаунте. Используется для самостоятельной работы и последующего внесения изменений обратно через Pull Request.</li>
  </ul>
  <hr />
  <h3 id="x5i2">📌 Ветки и изменения</h3>
  <ul id="IBvz">
    <li id="HfeS"><strong>Branch (Ветка)</strong> — отдельная «линия» разработки. Позволяет параллельно работать над фичами, багфиксом и экспериментами.</li>
    <li id="iDSu"><strong>Master / Main</strong> — основная ветка проекта. Сейчас чаще используется название <code>main</code>.</li>
    <li id="JHPZ"><strong>Commit (Коммит)</strong> — сохранённое изменение. Содержит снимок состояния проекта с комментарием и автором.</li>
    <li id="tdjx"><strong>Push</strong> — отправка локальных коммитов в удалённый репозиторий.</li>
    <li id="TLap"><strong>Pull</strong> — получение новых изменений из удалённого репозитория.</li>
    <li id="1MZd"><strong>Clone</strong> — скачивание репозитория с GitHub на локальную машину.</li>
    <li id="IB7G"><strong>Checkout</strong> — переключение между ветками или коммитами.</li>
    <li id="3Lhr"><strong>Merge (Мёрдж)</strong> — объединение изменений из одной ветки в другую.</li>
    <li id="UVZh"><strong>Rebase (Ребейз)</strong> — «перепроигрывание» коммитов поверх другой ветки. Помогает сделать историю проекта линейной.</li>
    <li id="quL7"><strong>Merge conflict (Конфликт слияния)</strong> — ситуация, когда Git не может автоматически объединить ветки, и разработчику нужно вручную выбрать, какие изменения оставить.</li>
    <li id="NM41"><strong>Stash (Ста́ш)</strong> — временное сохранение изменений без коммита. Удобно, когда нужно срочно переключиться на другую задачу.</li>
  </ul>
  <hr />
  <h3 id="n1cH">📦 Работа с форками</h3>
  <ul id="ti1i">
    <li id="BUhA"><strong>Обновиться из апстрима (upstream)</strong> — синхронизировать свою копию проекта (форк) с оригинальным репозиторием.</li>
    <li id="FoB7"><strong>Обновиться из ориджина (origin)</strong> — получить обновления с удалённой версии своего же репозитория.</li>
  </ul>
  <hr />
  <h3 id="Iwga">🧪 Проверка и публикация</h3>
  <ul id="aPs6">
    <li id="DYdO"><strong>Pull Request (PR)</strong> — предложение внести изменения из одной ветки в другую. Обычно используется для отправки изменений в основной репозиторий.</li>
    <li id="VJTv"><strong>Code Review (Кодревью)</strong> — проверка кода другим разработчиком перед слиянием в основную ветку. Оценивается стиль, читаемость, безопасность и логика.</li>
    <li id="P9lo"><strong>CI/CD (Continuous Integration / Continuous Delivery)</strong> — автоматизация запуска тестов, сборок и деплоя после коммита или PR.</li>
  </ul>
  <hr />
  <h3 id="KWUj">🛠 Полезные команды</h3>
  <pre id="sAYz">git clone &lt;url&gt;            # клонирование репозитория
git checkout -b &lt;branch&gt;   # создание и переход в новую ветку
git add .                  # добавление всех изменений в индекс
git commit -m &quot;comment&quot;    # фиксация изменений
git push                   # отправка в удалённый репозиторий
git pull                   # получение новых изменений
git merge &lt;branch&gt;         # слияние ветки
git rebase &lt;branch&gt;        # ребейз на другую ветку
git stash                  # сохранение изменений во временное хранилище
git stash pop              # восстановление изменений из stash
</pre>
  <hr />
  <h3 id="1LI0">📌 Итог</h3>
  <p id="nVja">Git и GitHub — это основа современной командной разработки. Понимание всех этих терминов и их практическое применение помогает не только грамотно управлять кодом, но и выстраивать эффективную командную работу.</p>

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

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

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

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

]]></content:encoded></item></channel></rss>