<?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>Нагрузим IT!</title><generator>teletype.in</generator><description><![CDATA[📊 Нагрузочное тестирование для всех
Добро пожаловать в мир тестирования систем под нагрузкой! 🔍]]></description><image><url>https://img2.teletype.in/files/98/c0/98c0bce6-4533-42ce-8cfc-a9d5e51cdc40.png</url><title>Нагрузим IT!</title><link>https://teletype.in/@lets_load</link></image><link>https://teletype.in/@lets_load?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/lets_load?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/lets_load?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Mon, 25 May 2026 01:05:09 GMT</pubDate><lastBuildDate>Mon, 25 May 2026 01:05:09 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@lets_load/failure-analysis</guid><link>https://teletype.in/@lets_load/failure-analysis?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load</link><comments>https://teletype.in/@lets_load/failure-analysis?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load#comments</comments><dc:creator>lets_load</dc:creator><title>7 способов подготовить стратегию тестирования на 2026: чек-лист успеха для QA-лидеров</title><pubDate>Tue, 13 Jan 2026 09:53:08 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/c0/36/c036b400-0841-4869-a7dd-da805e6864ee.png"></media:content><category>Переводы</category><description><![CDATA[<img src="https://img4.teletype.in/files/3f/65/3f65a924-32df-42bb-9c4f-53c2d7c468cb.png"></img>Вольный перевод оригинальной статьи: New Year, Better Tests: 7 Tips to Set your 2026 Testing Strategy up for Success]]></description><content:encoded><![CDATA[
  <figure id="1oMf" class="m_column">
    <img src="https://img4.teletype.in/files/3f/65/3f65a924-32df-42bb-9c4f-53c2d7c468cb.png" width="1376" />
  </figure>
  <section style="background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="ynLn">Вольный перевод оригинальной статьи: <a href="https://saucelabs.com/resources/blog/new-year-better-tests-7-tips-to-set-your-2026-testing-strategy-up-for" target="_blank">New Year, Better Tests: 7 Tips to Set your 2026 Testing Strategy up for Success</a></p>
  </section>
  <p id="Np2i">Начало года — лучшее время, чтобы подготовить свою стратегию тестирования. Если прошлый год был крутым (или наоборот), самое время проанализировать, что сработало, а что пора менять. Мы собрали 7 практических советов на основе опыта 2025 года, которые помогут вам выстроить стратегию тестирования.</p>
  <p id="qhF2">Неважно, ловите ли вы баги в спешке или проектируете стратегию развития на весь год — эти инсайты помогут вам ускорить процесс обеспечения качества и снизить боль от нестабильных тестов.</p>
  <h2 id="1-начните-с-данных-а-не-с-желаний">1. Начните с данных, а не с &quot;хотелок&quot;</h2>
  <figure id="ga5R" class="m_column">
    <img src="https://img4.teletype.in/files/bc/f1/bcf124db-a77f-4de6-a48e-cb9aca84fec3.png" width="1376" />
  </figure>
  <p id="TIDp"><strong>Проблема</strong>: Много команд тестирования строят планы на интуицию: &quot;надо больше автотестов&quot;, &quot;нужны AI-инструменты&quot;, &quot;переходим на Playwright&quot;.</p>
  <p id="fCRs"><strong>Решение</strong>: Выкопайте метрики из 2025:</p>
  <ul id="I53E">
    <li id="xPzB"><strong>Time to Value</strong> — сколько времени проходит от запуска тестов до того, как команда поняла результаты и действует</li>
    <li id="PlDV"><strong>Flakiness rate</strong> — процент ложноположительных падений (идеально &lt; 3%)</li>
    <li id="rRdI"><strong>Bug escape rate</strong> — сколько багов прошли в прод</li>
    <li id="Y211"><strong>Coverage</strong> — покрытие кода и критичных пользовательских сценариев</li>
  </ul>
  <p id="Lxnd">Затем определите 2-3 конкретные цели на 2026:</p>
  <ul id="ULh4">
    <li id="MFb8">Ускорить полный регресс с 4 часов до 1.5 часов?</li>
    <li id="aAwU">Внедрить эй-ай-анализ падений и сэкономить 10 часов/неделю на отладку?</li>
  </ul>
  <p id="7i44"><strong>Почему это работает</strong>: Данные убеждают руководство, а чёткие цели дают направление.</p>
  <h2 id="3-возьмитесь-за-exploratory-testing-всерьёз">2. Возьмитесь за исследовательское тестирование всерьёз</h2>
  <figure id="t6Gd" class="m_column">
    <img src="https://img3.teletype.in/files/22/35/2235dcad-08c2-4d14-9a15-70a3ae6aef4b.png" width="1344" />
  </figure>
  <p id="bqyl"><strong>Миф</strong>: исследовательское тестирование — это когда тестировщик кликает что-то где-то, пока не найдёт баг.</p>
  <p id="6RrA"><strong>Реальность</strong>: Это дисциплинированный процесс одновременного обучения, проектирования и исполнения тестов.</p>
  <p id="5wdA"><strong>Как это работает в 2026</strong>:</p>
  <p id="Bhbp">Для каждой тест-сессии определите <strong>чартер</strong> - это такой word-документик, где будет описано:</p>
  <ul id="cTIl">
    <li id="zLCd">Что мы тестируем? (например, новая фича платежей)</li>
    <li id="D8TS">Какие риски ищем? (например, дублирование платежей, тайм-ауты при слабой сети)</li>
    <li id="f6IH">Сколько времени? (например, 2 часа с одним тестировщиком или тим-лидом)</li>
  </ul>
  <p id="DDF5"><strong>Во время тест-сессии</strong>:</p>
  <p id="eKlc">Документируйте результаты в реальном времени. Не жалейте на это времени — это не лишняя трата времени, это инвестиция. Найденные дефекты и идеи превратите в автотесты позже.</p>
  <p id="xwTI"><strong>Главная фишка</strong>: Делайте исследовательское тестирование как можно раньше, когда код ещё гибкий. </p>
  <h2 id="4-не-меняйте-инструмент-пока-не-исправили-фундамент">3. Не меняйте инструменты, пока не исправили фундамент</h2>
  <figure id="zQ1v" class="m_column">
    <img src="https://img4.teletype.in/files/33/30/33303b49-037d-4a49-be41-4b69362110b9.png" width="1344" />
  </figure>
  <p id="204d"><strong>Типичная ситуация</strong>:</p>
  <ul id="yjVa">
    <li id="m6SE">Selenium падает постоянно → &quot;Переходим на Cypress!&quot;</li>
    <li id="xOW8">Переходят → те же проблемы → &quot;Может, Playwright?&quot;</li>
  </ul>
  <p id="7jwT"><strong>В чём подвох</strong>: Инструмент здесь не виноват. Виноваты:</p>
  <ul id="EKu7">
    <li id="Slip">Тесты, которые переписаны криво </li>
    <li id="TeuI">Нестабильная окружение</li>
    <li id="l22f">Неправильная архитектура тестов</li>
    <li id="GDhO">Отсутствие анализа </li>
  </ul>
  <p id="HsQf"><strong>Что делать</strong>:</p>
  <p id="ykhW">Прежде чем инвестировать в новый инструмент:</p>
  <ol id="1Dv9">
    <li id="Agfs"><strong>Изучите паттерны падений</strong>. Почему именно падают ваши тесты? </li>
    <li id="xCNX"><strong>Исправьте проблемы в корне</strong> (фиксы окружения, рефакторинг тестов).</li>
    <li id="WX0W"><strong>Только потом</strong> меняйте инструмент, если это действительно нужно.</li>
  </ol>
  <p id="4NCm">Внимание: если вы меняете инструмент <em>ради инструмента</em>, вы просто потратите 3 месяца на миграцию и получите те же проблемы, но в новом интерфейсе.</p>
  <h2 id="2-модернизируйте-инфраструктуру-ещё-не-поздно">4. Модернизируйте инфраструктуру (ещё не поздно)</h2>
  <figure id="dvZ8" class="m_column">
    <img src="https://img1.teletype.in/files/07/79/077955fe-8b6b-4e5c-89b8-3cdd75edb66c.png" width="1344" />
  </figure>
  <p id="v73g"><strong>Боль</strong>: Ваша тестовая среда дряхлеет. Selenium часто падает, CI/CD медленный, параллелизм &quot;как получится&quot;.</p>
  <p id="xtnn"><strong>Чек-лист инфраструктуры</strong>:</p>
  <ul id="EEY3">
    <li id="YVTg">Оптимизирована ли ваша CI/CD pipeline на <strong>скорость и надёжность</strong>?</li>
    <li id="PXUa">Хватает ли <strong>параллелизма</strong> для вашего растущего набора тестов?</li>
    <li id="kBre">Выдержит ли инфраструктура рост тестов на 20-30% в течение года?</li>
  </ul>
  <p id="ZNq0"><strong>Что делать</strong>:</p>
  <p id="FDg3">Рассмотрите облачные решения для тестирования (облако — это не подозрительно, это стандарт). Внедрите <strong>контейнеризацию</strong> (Docker, Kubernetes):</p>
  <ul id="8PQ9">
    <li id="M4rV">Легко масштабировать: нужно 100 браузеров одновременно? Запустилось за 30 секунд</li>
    <li id="XRgi">Снижается случайность результатов из-за нестабильной окружения (это один из главных источников ложных падений)</li>
  </ul>
  <h2 id="5-сделайте-time-to-value-главной-метрикой">5. Сделайте &quot;Time to Value&quot; главной метрикой</h2>
  <figure id="8Jm9" class="m_column">
    <img src="https://img4.teletype.in/files/32/50/3250ebe3-f6a5-475c-8c58-5f10ebd0e84d.png" width="1344" />
  </figure>
  <p id="ynFv"><strong>Забудьте про &quot;количество тестов&quot;</strong>. Это не метрика, это фикция.</p>
  <p id="2v6Z"><strong>Главное — Time to Value</strong>: сколько времени с момента, как тесты запустились, до момента, когда команда поняла результаты и начала действовать.</p>
  <p id="sKTd"><strong>Типичная ситуация</strong>:</p>
  <ul id="2LmM">
    <li id="IcW9">Ночной регресс запустился, отработал за 30 минут ✅</li>
    <li id="VDuY">Но результатов — 500 строк логов и 50 ошибок</li>
    <li id="tN9I">Разработчик 2 часа разбирается, какие ошибки реальные, какие — ложноположительные</li>
    <li id="NHSq">Итог: Time to Value = 2.5 часа</li>
  </ul>
  <p id="0Xfn"><strong>Если это ваша ситуация</strong>, пора действовать:</p>
  <ul id="EUWo">
    <li id="EA5t">Внедрите AI-анализ падений (умный анализ ошибок)</li>
    <li id="r27o">Автоматизируйте обработку результатов (группировка похожих ошибок, ранжирование по severity (серьезность))</li>
    <li id="ifBL">Интегрируйте в Slack/Telegram уведомления: &quot;2 критичных бага, 15 можно проигнорировать&quot;</li>
  </ul>
  <h2 id="6-делайте-refresh-тестов-в-середине-года">6. Делайте обновление тестов в середине года</h2>
  <figure id="Ddcj" class="m_column">
    <img src="https://img4.teletype.in/files/bf/de/bfde6971-efae-4907-aa19-6535042d6a2f.jpeg" width="1344" />
  </figure>
  <p id="hr8P"><strong>Идея</strong>: Не ждите конца года. В июне остановитесь и переделайте тесты.</p>
  <p id="Y9xf"><strong>Что проверить</strong>:</p>
  <ul id="y1h5">
    <li id="g1yR">Какие тесты вы вообще запускаете? Есть ли дублирующие?</li>
    <li id="KayZ">Какие из них постоянно падают без причины?</li>
    <li id="FToV">Какие тесты медленные? (Оптимизируйте или распараллелите)</li>
    <li id="iHkC">Есть ли &quot;дырки&quot; в покрытии? (Новые фичи, которые не покрыты)</li>
  </ul>
  <p id="0BJP"><strong>Бонус для лета</strong>:</p>
  <p id="hEHG">Июнь — это лучше время, потому что:</p>
  <ul id="3Y62">
    <li id="UW0n">Вторая половина года впереди (есть время на действия)</li>
    <li id="S8Pk">Обычно меньше &quot;горячих&quot; проектов летом</li>
    <li id="SHLt">Можно спланировать крупные рефакторинги</li>
  </ul>
  <h2 id="7-протестируйте-сезонные-нагрузки-и-скачки-трафика-заранее">7. Протестируйте сезонные нагрузки и скачки трафика заранее</h2>
  <figure id="eCQG" class="m_column">
    <img src="https://img3.teletype.in/files/e6/90/e690bdd2-e3e4-4625-91dc-3748da93c79d.png" width="1344" />
  </figure>
  <p id="uylI">Большинство компаний испытают трудности в &quot;сезонные&quot; периоды:</p>
  <ul id="Vnwj">
    <li id="IMUS">1 сентября (скачок студентов в образовательные приложения)</li>
    <li id="EYli">Чёрная пятница и киберпонедельник</li>
    <li id="xcDe">Конец квартала (выплаты по подпискам)</li>
    <li id="BmLI">Крупные анонсы или PR-кампании</li>
    <li id="Z1YS">Новый год (скачок в финтех и рассылках)</li>
  </ul>
  <p id="t3Am"><strong>Что делать</strong>:</p>
  <p id="fcpV"><strong>Сейчас же</strong> (в январе):</p>
  <ol id="RD9K">
    <li id="DxlE">Определите пики трафика в вашем 2026-м</li>
    <li id="t4ud">Запланируйте нагрузочное тестирование за 4-6 недель до события</li>
    <li id="mLO8">Убедитесь, что в руководстве нет иллюзий: &quot;Вот запустим все фичи 30 декабря, может, чего-то не сломается&quot; — это гарантирует беду.</li>
  </ol>
  <p id="omZL"><strong>Инструменты для нагрузки</strong>: Apache JMeter (бесплатный), Locust (простой), k6 (для облака), нативные облачные сервисы (Azure Load Testing, AWS CloudWatch Synthetics).</p>
  <p id="BmIf"><strong>Сценарий, который хорошо работает</strong>:</p>
  <ul id="mQFk">
    <li id="YoAV">Май: планируем, какие нагрузки</li>
    <li id="1Gto">Июнь: первый нагрузочный тест (находим узкие места)</li>
    <li id="osse">Июль-август: фиксим инфраструктуру, оптимизируем код</li>
    <li id="BgU5">Сентябрь: финальный нагрузочный тест </li>
    <li id="F0Cl">Октябрь: готовы к нагрузкам</li>
  </ul>
  <h2 id="главное-правило">Главное правило</h2>
  <p id="sixw"><strong>Тестирование имеет ценность только тогда, когда результаты понимаются и на них действуют.</strong></p>
  <p id="EWzY">Запустили 10 000 тестов, которые никто не смотрит? Это не качество, это театр. Запустили 100 тестов, проанализировали за 5 минут и нашли 2 критичных баги? Это работает.</p>
  <p id="N8Tc">В 2026 году сфокусируйтесь на:</p>
  <p id="NhLQ">✅ <strong>Данных, а не &quot;хотелках&quot;</strong><br />✅ <strong>Скорости получения результатов</strong> (Time to Value)<br />✅ <strong>Стабильности окружения</strong><br />✅ <strong>Раннем обнаружении проблем</strong> (исследовательское тестирование + сезонное тестирование)<br />✅ <strong>Снижении техдолга</strong> (обновление парка тестов в июне)</p>
  <p id="juGh">И помните: лучший инструмент — это дисциплина. Плохую архитектура не спасёт никакой фреймворк (и даже ЭЙ-АЙ)</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@lets_load/vibe_codding</guid><link>https://teletype.in/@lets_load/vibe_codding?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load</link><comments>https://teletype.in/@lets_load/vibe_codding?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load#comments</comments><dc:creator>lets_load</dc:creator><title>Vibe Coding: программирование без знания кода</title><pubDate>Mon, 22 Dec 2025 21:58:25 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/90/df/90df928c-1584-4146-b5a5-ad107cda8562.png"></media:content><category>Переводы</category><description><![CDATA[<img src="https://img1.teletype.in/files/cb/53/cb53cb18-14cb-4ec2-9770-9885f9c0083d.jpeg"></img>Вольный перевод оригинальной статьи: A New Worst Coder Has Entered the Chat: Vibe Coding Without Code Knowledge на Stack Overflow Blog]]></description><content:encoded><![CDATA[
  <figure id="S788" class="m_column">
    <img src="https://img1.teletype.in/files/cb/53/cb53cb18-14cb-4ec2-9770-9885f9c0083d.jpeg" width="1344" />
    <figcaption>теперь программировать может даже ребенок (или нет?)</figcaption>
  </figure>
  <section style="background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="73mz"><em>Вольный перевод оригинальной статьи: <a href="https://stackoverflow.blog/2025/08/07/a-new-worst-coder-has-entered-the-chat-vibe-coding-without-code-knowledge/" target="_blank">A New Worst Coder Has Entered the Chat: Vibe Coding Without Code Knowledge</a> на Stack Overflow Blog</em></p>
  </section>
  <h2 id="%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0-%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%BA%D0%B0-%D0%B2%D0%B7%D1%8F%D0%BB%D0%B0-%D0%B8-%D0%B7%D0%B0%D0%BA%D0%BE%D0%B4%D0%B8%D0%BB%D0%B0-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0-%D1%87%D0%B8%D1%81%D1%82%D1%8B%D1%85-%D0%B2%D0%B8%D0%B1%D1%80%D0%B0%D1%86%D0%B8%D1%8F%D1%85">Когда журналистка взяла и закодила приложение на чистом вайбе</h2>
  <p id="qPNg">Если бы я попросила вас угадать, кто в моем офисе мог бы создать приложение, в первых пяти вариантах вы не назвали бы мою профессию. И это логично.</p>
  <p id="ot7s">Никогда я не указывала программирование в своем резюме как основное умение. Всё, что я знаю о коде, — это случайные обрывки знаний, собранные на работе. К тому же я живу в Bay Area (крупная агломерация в Северной Калифорнии, сформировавшаяся вокруг залива Сан-Франциско и включающая такие города, как Сан-Франциско,Сан-Хосе и Окленд, а также знаменитую Кремниевую долину), где каждый разговор рано или поздно скатывается на AI и технологии — не можешь избежать просто так.</p>
  <p id="rOZ9">Но жизнь полна сюрпризов. И вот однажды я создала приложение. С одной оговоркой: я не кодила его сама. Приложение полностью родилось из &quot;вайба&quot; (vibes) — так уже называют создание с помощью AI-инструментов вроде <a href="https://bolt.new/" target="_blank">Bolt</a> (конструктор сайтов на базе искусственного интеллекта, позволяющий создавать веб-сайты и мобильные приложения за считанные минуты)</p>
  <h2 id="%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-vibe-coding">Что такое Vibe Coding?</h2>
  <figure id="ymz0" class="m_retina">
    <img src="https://img2.teletype.in/files/9f/22/9f22562f-7fd8-4899-9e35-2fb951b72e7f.jpeg" width="672" />
    <figcaption>плюс чилл вайб</figcaption>
  </figure>
  <p id="h3mt">Концепция &quot;<a href="https://stackoverflow.blog/2025/08/05/being-unambiguous-in-what-you-want-the-software-engineer-in-a-vibe-coding-world/" target="_blank">vibe coding</a>&quot; появилась только в начале 2025 года, но уже успела стать одной из самых обсуждаемых применений больших языковых моделей. Она вызывает жаркие дебаты об эффективности и кучу страхов среди <a href="https://stackoverflow.blog/2024/12/31/generative-ai-is-not-going-to-build-your-engineering-team-for-you/" target="_blank">junior-разработчиков</a> о том, как это изменит их будущее. Даже опытные программисты <a href="https://stackoverflow.blog/2025/07/31/do-ai-coding-tools-help-with-imposter-syndrome-or-make-it-worse/" target="_blank">испытывают </a>экзистенциальный страх замены.</p>
  <p id="vmx9">Обещание, что vibe coding дает любому, даже без технического бэкграунда, возможность создать приложение, звучит как-то слишком хорошо. Из своего опыта скажу: это как нажать на кнопку на микроволновке, и еда сама разогреется. Слишком легко. Как только я отдала результат человеку с реальным техническим опытом, щели в моем творении начали вылезать со всех сторон.</p>
  <p id="tQBQ">В умелых руках это мощный инструмент. В моих — как фильтр AI в TikTok, который делает тебя похожей на персонаж из какого-нибудь аниме. Забавно выложить, но по сути — ничего стоящего.</p>
  <h2 id="%D0%BA%D0%B0%D0%BA-%D1%8F-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B2%D0%B0%D0%BB%D0%B0-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE-%D0%BF%D0%BB%D0%BE%D1%85%D0%B8%D0%B5-%D1%82%D1%83%D0%B0%D0%BB%D0%B5%D1%82%D1%8B">Как я создавала приложение про плохие туалеты</h2>
  <p id="TQeH">Участвовала я в хакатоне Bolt, совместно с Reddit. Задача была простой: создать что-нибудь смешное, иррелевантное и вообще бесполезное. Я от таких идей не отказываюсь.</p>
  <p id="lrSI">&quot;Вроде Яндекс.Карт, но только про плохие туалеты в мире,&quot; — сказала я маме. &quot;А кем ты работаешь, в конце концов?&quot; — спросила она в ответ.</p>
  <p id="x2y8">Процесс обещал быть легким. Для кого-то, кто не знает, где на компьютере лежит терминал, это оказалось не очень. Организаторы обещали, что за минуту я запущу разработку. Они предоставили ресурсы, включая гайд Reddit Developer Quickstart. Я потратила кучу времени на этот гайд, ибо не понимала ни черта.</p>
  <p id="GC0d">Официально приношу извинения службе поддержки Stack Overflow за попытку установить Node.js на рабочий ноутбук, хотя мне это было совершенно не нужно.</p>
  <p id="KzZk">Когда я поняла, что Bolt сам всё вытянет, стало намного легче. И это действительно так — Bolt может создать простое приложение от А до Я чуть ли не автоматически. Нужно либо знать хотя бы основы кода, либо иметь четкие инструкции. Я попала во вторую категорию.</p>
  <p id="llN8">Интерфейс Bolt красивый и интуитивный, с live-preview приложения сбоку. Ты можешь смотреть на код и редактировать строки вручную. Я же использовала простой текстовый ввод: &quot;Создай приложение для Reddit — как Яндекс.Карты с рейтингами, но только для ужасных общественных туалетов&quot;</p>
  <figure id="1yKG" class="m_column">
    <img src="https://img4.teletype.in/files/f2/8c/f28c3021-b0b0-46cd-ab85-a8de32690c1e.png" width="1922" />
    <figcaption>интерфейс bolt ai</figcaption>
  </figure>
  <p id="oGTv">AI сразу же принялся работать. Примерно за 10 минут основа была готова. Приложение запустилось в моём тестовом сабреддите, с глупым интерфейсом (там даже была эмодзи унитаза). Была форма для отзывов, рейтинг-скейл, страница с отзывами.</p>
  <figure id="q5zQ" class="m_column">
    <img src="https://img4.teletype.in/files/f0/3b/f03b4bcd-222d-4ebe-a9a2-1ff0a9532a2d.png" width="1422" />
    <figcaption>интерфейс моего приложения</figcaption>
  </figure>
  <p id="wbOR">Все работало в браузере. Почти.</p>
  <p id="ZOgG">На самом деле — вообще не работало.</p>
  <p id="jFRv">Сразу же начались ошибки. И в интерфейсе Bolt, и в самом приложении. Не мог загрузиться ни один отзыв. Красные сообщения об ошибках: &quot;location services недоступны&quot;, &quot;не получается загрузить&quot;. Хотя работы было проведено мало, я испытывала подавленность. Я сказала коллегам: &quot;Приложение не работает.&quot;</p>
  <figure id="IrMx" class="m_column">
    <img src="https://img4.teletype.in/files/b7/df/b7dfd4a9-1bc8-4fad-b232-1e9e20b8584a.png" width="980" />
    <figcaption>сразу начались проблемы</figcaption>
  </figure>
  <p id="j9BB">И начался адский час — 45 минут troubleshooting (процесс систематического поиска и устранения неисправностей, неполадок). AI указывал мне, где искать ошибки. Я просто копировала текст ошибки в чат, и Bolt сам разбирался. Правда, когда AI объяснял, что исправил (что-то про API endpoints на root level), я вообще ничего не понимала. Весь смысл опыта был в том, что я этого не должна понимать.</p>
  <figure id="MW7l" class="m_column">
    <img src="https://img2.teletype.in/files/5d/2e/5d2e911b-7ec9-4187-bc2b-ec6d7b386904.png" width="1022" />
    <figcaption>ai помогал мне с решением </figcaption>
  </figure>
  <figure id="JS0B" class="m_column">
    <img src="https://img2.teletype.in/files/5e/00/5e00d548-e22f-4978-b077-73ca16607881.png" width="976" />
    <figcaption>и давал конкретные рекомендации</figcaption>
  </figure>
  <h3 id="%D0%BC%D0%BE%D0%B9-%D1%8D%D0%BF%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9-fail-%D1%81-npm-run-dev">Мой эпический fail с npm run dev</h3>
  <p id="aOIf">Я даже не знала, что команда <code>npm run dev</code> обновляет приложение в реальном времени. Я думала, что нужно каждый раз переписывать и переливать приложение, чтобы протестировать новую версию. Я представляла каждую версию как отдельный объект, а не развивающееся приложение. В итоге в моем тестовом сабреддите было 20 постов, прежде чем я получила рабочее приложение.</p>
  <p id="w2Ld">Но Bolt был невероятно полезным. Я была потеряна, как в лесу, а он вытягивал меня за правильное направление. Он даже помогал менять интерфейс — я переделывала дизайн как графический дизайнер, которым я и являюсь.</p>
  <p id="0p4d">В конце концов, что-то получилось работающее. С кавычками вокруг слова &quot;я&quot;. Bolt создал приложение, а я просто писала промпты и копировала ошибки. С каждой итерацией что-то новое начинало работать. Я добавила загрузку инфы, просмотр отзывов, красивые бейджи.</p>
  <p id="retm">Но даже когда приложение работало — оно было хорошим?</p>
  <h2 id="%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E-%D1%81%D0%B2%D0%BE%D1%91-%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0-%D1%81%D1%83%D0%B4">Отправляю своё творение на суд</h2>
  <figure id="A5Pb" class="m_column">
    <img src="https://img1.teletype.in/files/89/8a/898a412e-e195-4fcb-97cb-3d71b6c5c861.png" />
    <figcaption>выглядело это примерно так</figcaption>
  </figure>
  <p id="2iiZ">Я выполнила задачу хакатона: создала что-то смешное, иррелевантное и совершенно бесполезное. Коллеги с удовольствием начали заполнять его худшими туалетами.</p>
  <p id="MUWR">Потом я встретилась с <a href="https://stackoverflow.blog/author/rdonovan/" target="_blank">Ryan Donovan</a> (известный блогер Stack Overflow) для ревью. И тут-то вскрылось, что это творение — полная катастрофа.</p>
  <p id="ahib">Во-первых, он удивился, сколько технологий там работает для такого простого приложения. &quot;Ты знаешь, что такое <a href="https://stackoverflow.blog/2022/06/02/a-beginners-guide-to-json-the-data-format-for-the-internet/" target="_blank">JSON </a>или Redis?&quot; спросил он. &quot;Нет,&quot; ответила я честно.</p>
  <p id="fswj">Райану даже не нужно было смотреть на код. Через инспектор браузера он сразу нашел проблемы. Главная: у приложения нет никаких защит. Любой может получить доступ ко всем данным. Это довольно серьёзно, но к этому вернемся позже.</p>
  <p id="HHOj">Райан предложил выложить код на GitHub и получить фидбэк от сообщества. Но когда я поняла, как всё плохо, я испугалась публичного позора. Не то, чтобы я боялась критики (нечего тут критиковать), а просто ощущение дрожащего страха, как перед разбором домашки учителем.</p>
  <p id="JbSw">К счастью, в Bay Area почти все мои друзья — разработчики. Я попросила их посмотреть. Трусливый ход, конечно, потому что они знали про vibe-coding и были деликатны.</p>
  <h3 id="%D1%84%D0%B8%D0%B4%D0%B1%D1%8D%D0%BA-%D0%BE%D1%82-%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%BE%D0%B2">Фидбэк от друзей-программистов</h3>
  <p id="r6o0"><strong>Главное:</strong> код — полная свалка, невозможно разобрать.</p>
  <p id="YeKJ">Я специально давала мало контекста, надеясь, что файл <code>README.md</code>, который создал Bolt, всё объяснит. Но структура вышла паршивая — я же никогда не работала с GitHub.</p>
  <p id="tgg6">&quot;У тебя хороший <code>README</code>, но почему-то все спрятано в папке <code>./project</code>. Почему бы не выложить на верхний уровень?&quot; — написал один мой знакомый из Palo Alto.</p>
  <p id="khmc">Другой: &quot;Весь стайлинг инлайнирован в tsx-компоненты. Это делает всё запутанным и нечитаемым.&quot;</p>
  <p id="EH8t">Третья добавила: &quot;There are no unit tests.&quot; (Нет <a href="https://stackoverflow.blog/2022/07/04/how-stack-overflow-is-leveling-up-its-unit-testing-game/" target="_blank">юнит-тестов</a>.)</p>
  <p id="6HS6">Я поняла, что она не может даже проверить, имеют ли смысл мои компоненты.</p>
  <h2 id="%D0%BD%D0%B5%D0%BD%D0%B0%D1%80%D1%83%D1%88%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5-%D0%BE%D0%B1%D0%B5%D1%89%D0%B0%D0%BD%D0%B8%D0%B5">Ненарушенное обещание</h2>
  <p id="qYvf">Вот в чём главный разрыв: между vibe-coding и реальной разработкой. Моё приложение было экспериментом, так что плохой код не страшен. Но это точно не должно рекламироваться, как инструмент для поднятия производительности, мост для нетехнических людей и (со временем) замена junior-разработчикам.</p>
  <p id="EAo0">Да, я могу взять фидбэк от друзей и влепить их советы в промпт. Один из них порекомендовал добавить описательные имена классов. Bolt сделал это за секунду — и понимал даже, <em>почему</em> это нужно, хотя я и не знала.</p>
  <p id="rW40">Но что если у меня нет друзей-разработчиков? Что если это не хобби-проект, а реальная работа или идея, которую хочу монетизировать?</p>
  <p id="Hjki">Мой код превратился бы в проблему. Да, приложение работает, но действительно ли оно <em>хорошее</em>? На реальном проекте после меня пришлось бы приходить разработчику и переписывать всё, чтобы будущие коллеги не потерялись в хаосе. Это называется &quot;<a href="https://venturebeat.com/ai/stack-overflow-data-reveals-the-hidden-productivity-tax-of-almost-right-ai-code/" target="_blank">productivity tax</a>&quot; — главная боль программистов от AI-инструментов, которые выдают код, почти (но не совсем) правильный. По опросам Stack Overflow, 66% разработчиков сталкиваются с этой проблемой.</p>
  <h3 id="%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C--%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D0%B9-%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D1%8B%D0%B9-%D1%84%D0%BB%D0%B0%D0%B3">Безопасность — главный красный флаг</h3>
  <p id="glJg">Но есть проблема ещё серьёзнее: безопасность. Помните, что Райан сказал про отсутствие защиты? На моём глупом приложении про туалеты — неважно, никаких ценных данных там нет.</p>
  <p id="z7kA">Но вот представьте: инструменты обещают результаты без опыта разработки. Будут люди без опыта, которые создадут свои пет-проекты на Bolt. И многие из них будут безобидными и будут работать хотя бы с фронтендом. Потом — запросят почтовый индекс, email, дату рождения, пароль. Вы, наверное, уже догадываетесь, к чему я клоню?</p>
  <p id="QgDH">Конечно, на продакшене обычно приходит разработчик и проверяет перед запуском. Но что с любительскими проектами? Я легко представляю, как кто-то создаст что-то для близких с персональными данными — и это попадет в руки мошенников</p>
  <h2 id="%D0%B8%D0%BB%D0%B8-%D0%B2%D1%81%D1%91-%D0%BD%D0%B5-%D1%82%D0%B0%D0%BA-%D0%BF%D0%BB%D0%BE%D1%85%D0%BE">Или всё не так плохо?</h2>
  <p id="nadP">Был ли мой результат достаточно хорош для моих целей? Да. Могла ли я с помощью друзей-разработчиков исправить безопасность и организацию без единой команды терминала? Да, точно.</p>
  <p id="ltEe">Но для технологии, которая обещает сделать junior-разработчиков ненужными, мне потребовалась помощь моих друзей — все они... junior-разработчики.</p>
  <h2 id="%D0%B4%D1%80%D1%83%D0%B3%D0%B0%D1%8F-%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F-%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0-vibe-coding-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82">Другая история: когда vibe-coding работает</h2>
  <p id="GM49">Мой лучший друг — доктор физики Стэнфорда. Хотел остаться в науке, но в академии зарплаты нищие, а мест нет. Он решил кардинально переквалифицироваться и учиться кодить с нуля за пять лет.</p>
  <p id="irEk">Он сказал, что LLM&#x27;ы дали ему буст в обучении в 10 раз. Стал использовать CoPilot, Gemini, ChatGPT как личного репетитора — когда не мог найти баг, AI объяснял. И потом, когда встречалась похожая проблема, он уже знал решение.</p>
  <p id="6Z4N"><strong>Вот это — реальная ситуация, когда vibe-coding может помочь:</strong> учиться кодить без соответствующего образования. Мой друг... не скажешь, что он не умен для программирования. Просто у него не было опыта. И возвращаться в институт на ещё пять лет после Стэнфорда было немыслимо. Vibe-coding дал ему поддержку и знания, чтобы учиться самому.</p>
  <h2 id="%D0%B8%D1%82%D0%BE%D0%B3-%D0%B2%D1%81%D1%91-%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D1%82-%D0%BE%D1%82-%D1%82%D0%BE%D0%B3%D0%BE-%D0%BA%D0%B0%D0%BA-%D1%82%D1%8B-%D1%8D%D1%82%D0%BE-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D1%88%D1%8C">Итог: всё зависит от того, как ты это используешь</h2>
  <figure id="yGt5" class="m_column">
    <img src="https://img3.teletype.in/files/ea/0d/ea0dc02a-8c98-47ac-9b87-e9bac415ce83.png" width="1344" />
    <figcaption>всё зависит от использования</figcaption>
  </figure>
  <p id="1wVW">Как и в любом инструменте — всё зависит от использования.</p>
  <p id="BaVA">Я хочу, чтобы мой опыт вайб-коддинга стал первым шагом в обучении кодированию. Поэтому я выложила свой проект на <a href="https://github.com/bunnywapen/dont-go-in-there" target="_blank">GitHub </a>и прошу фидбэк, критику и советы.</p>
  <p id="j46F">Помогите мне перестать быть худшим программистом в мире.</p>
  <h2 id="%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D0%B5-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D1%8F%D0%B7%D1%8B%D1%87%D0%BD%D0%BE%D0%B9-%D0%B0%D1%83%D0%B4%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B8">Главные выводы из статьи</h2>
  <h3 id="%D0%B4%D0%BB%D1%8F-qa-%D1%81%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%BE%D0%B2-%D0%B8-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D1%89%D0%B8%D0%BA%D0%BE%D0%B2">Для QA-специалистов и тестировщиков</h3>
  <p id="ItGo">Vibe-coding создает новый вид приложений, которые нужно ОБЯЗАТЕЛЬНО тестировать:</p>
  <ul id="w1Bw">
    <li id="7KOh"><strong>Код не следует каким-либо лучшим практикам </strong>— нужны более строгие тесты</li>
    <li id="aVHI"><strong>Безопасность не встроена</strong> — тестирование безопасности становится нужным с самого начала</li>
    <li id="3dM4"><strong>НЕТ ДОКУМЕНТАЦИИ</strong> — нужно самому разбираться в логике через UI и инспектор</li>
  </ul>
  <h3 id="%D0%B4%D0%BB%D1%8F-%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2">Для начинающих разработчиков</h3>
  <p id="AL54">Это не замена классическому обучению, но отличная поддержка:</p>
  <ul id="8jtl">
    <li id="pdGG">Учитесь кодить с AI как с репетитором</li>
    <li id="pS4a">Создавайте свои проекты, а потом просите разработчиков на ревью</li>
    <li id="fBSk">Понимайте, почему код так написан — не просто копируйте</li>
  </ul>
  <h3 id="%D0%B4%D0%BB%D1%8F-%D1%81%D1%82%D0%B0%D1%80%D1%82%D0%B0%D0%BF%D0%BE%D0%B2-%D0%B8-%D0%BC%D0%B0%D0%BB%D1%8B%D1%85-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4">Для стартапов и малых команд</h3>
  <p id="6TAc">Будьте осторожны:</p>
  <ul id="VfXe">
    <li id="CaZk">Код на &quot;ВАЙБЕ&quot; требует дополнительного QA и ревью безопасности</li>
    <li id="pyet">Не выпускайте такой код в продакшен без опытного программиста</li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@lets_load/garbage_collect</guid><link>https://teletype.in/@lets_load/garbage_collect?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load</link><comments>https://teletype.in/@lets_load/garbage_collect?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load#comments</comments><dc:creator>lets_load</dc:creator><title>Сборщик мусора</title><pubDate>Thu, 15 May 2025 05:43:23 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/7f/90/7f90c591-1c83-43c6-bd02-ba55f0d64150.png"></media:content><category>Технологии</category><description><![CDATA[<img src="https://img3.teletype.in/files/ab/90/ab90e053-61a0-48b1-8042-df92ad85f104.png"></img>Если вы начинаете разбираться с производительностью приложений, особенно в Java или .NET, вы рано или поздно столкнётесь с понятием «сборщик мусора». Эта статья поможет вам понять, что это за механизм, как он работает и почему важно учитывать его поведение при нагрузочном тестировании.]]></description><content:encoded><![CDATA[
  <figure id="SSc5" class="m_column">
    <img src="https://img3.teletype.in/files/ab/90/ab90e053-61a0-48b1-8042-df92ad85f104.png" width="1024" />
  </figure>
  <h2 id="zjHC">Что такое сборщик мусора и зачем он нужен тестировщику</h2>
  <p id="pogy">Если вы начинаете разбираться с производительностью приложений, особенно в Java или .NET, вы рано или поздно столкнётесь с понятием «сборщик мусора». Эта статья поможет вам понять, что это за механизм, как он работает и почему важно учитывать его поведение при нагрузочном тестировании.</p>
  <h2 id="uPNL">Немного истории: от ручного управления к автоматике</h2>
  <p id="gKFR">Ранние языки программирования, такие как C и C++, требовали от разработчика вручную управлять памятью: выделять её под нужды программы и освобождать, когда она больше не нужна. Ошибки в этом процессе — забытые освобождённые участки памяти (утечки) или повторное освобождение уже освобождённого блока — приводили к сбоям, нестабильности и уязвимостям.</p>
  <p id="8CO8">С появлением более высокоуровневых языков, таких как Java и C#, появилась автоматическая сборка мусора (Garbage Collection, далее по тексту - <strong>GC</strong>). Задача сборщика — автоматически находить и удалять объекты, которые больше не используются программой, тем самым освобождая память.</p>
  <h2 id="7Rfx">Как работает сборщик мусора</h2>
  <p id="1gbq">Сборщик мусора анализирует память, чтобы понять, какие объекты всё ещё «живы» — то есть на которые есть ссылки в коде — а какие можно удалить. В зависимости от реализации, этот процесс может быть:</p>
  <ul id="ZJvn">
    <li id="55rx"><strong>Параллельным</strong> — GC работает вместе с приложением</li>
    <li id="H8qY"><strong>Стоп-мир (stop-the-world)</strong> — приложение приостанавливается, пока работает GC</li>
    <li id="MbMC"><strong>Инкрементальным</strong> — память очищается частями, небольшими порциями</li>
  </ul>
  <p id="HhQs">Также во многих современных реализациях используется <strong>сборка мусора по поколениям</strong> (generational garbage collection). Этот подход основывается на наблюдении, что:</p>
  <ul id="kjul">
    <li id="jSGH">большинство объектов «умирает» быстро</li>
    <li id="VXIv">объекты, которые пережили несколько сборок, скорее всего будут использоваться долго</li>
  </ul>
  <p id="yScz">В таком случае память делится на поколения:</p>
  <ul id="bcio">
    <li id="S39T"><strong>Young Generation</strong> — для новых объектов. Здесь сборки происходят часто, но быстро (Minor GC)</li>
    <li id="2Ouv"><strong>Old Generation (Tenured)</strong> — для «долгоживущих» объектов. Здесь сборки редкие, но тяжёлые (Major GC)</li>
    <li id="CRXi"><strong>Permanent/Metaspace</strong> — область для хранения метаинформации классов (в JVM)</li>
  </ul>
  <p id="8iaX">Такой подход снижает частоту и длительность полной сборки мусора.</p>
  <h3 id="0qlZ">Виды управления памятью: ручное и автоматическое</h3>
  <p id="dfnd">При ручном управлении разработчик обязан следить за тем, чтобы после использования объекта память была корректно освобождена. Это даёт гибкость и контроль, но требует высокой дисциплины и приводит к большому числу ошибок.</p>
  <p id="GjHC">Пример: <strong>C, C++</strong> — программист сам вызывает команды управления памятью. Ошибки ведут к утечкам памяти, двойному освобождению и крахам приложений.</p>
  <p id="guai">При автоматическом управлении памятью (например, в Java, Python, Go) эти задачи берёт на себя среда выполнения. Сборщик мусора решает, какие объекты больше не нужны и может освободить занимаемую ими память. Такие языки сами управляют памятью — программисту не нужно вручную её освобождать. Это упрощает работу и снижает шанс ошибок, хотя может повлиять на производительность.</p>
  <ul id="6r93">
    <li id="Y6yi"><strong>Java (JVM)</strong> — использует продвинутый сборщик мусора с делением памяти на поколения. Есть гибкие настройки и выбор алгоритма под тип нагрузки (например, G1GC, ZGC).</li>
    <li id="4HDw"><strong>Python</strong> — работает по принципу подсчёта ссылок и запускает отдельный сборщик, чтобы убирать циклические ссылки. Можно вызывать GC вручную через модуль <code>gc</code>.</li>
    <li id="PmL1"><strong>C# (.NET)</strong> — тоже делит память на поколения. Работает &quot;из коробки&quot; без сложной настройки и подходит для большинства задач.</li>
  </ul>
  <p id="4Bwz">Знание особенностей GC в каждом языке поможет избегать утечек памяти и добиться стабильной работы приложения.</p>
  <h2 id="5A3I">Преимущества и недостатки сборщика мусора</h2>
  <p id="Ouyx">Автоматическое управление памятью через сборщик мусора имеет как очевидные плюсы, так и важные ограничения. Особенно важно понимать это при работе с высоконагруженными системами.</p>
  <p id="PQpP"><strong>Преимущества:</strong></p>
  <ul id="HZPo">
    <li id="2zA0"><strong>Упрощение разработки</strong>: программисту не нужно вручную освобождать память, снижая риск ошибок.</li>
    <li id="agxE"><strong>Защита от утечек памяти</strong>: GC автоматически удаляет объекты, на которые больше нет ссылок.</li>
    <li id="Hi7E"><strong>Повышение надёжности</strong>: меньше сбоев, связанных с неправильной работой с памятью.</li>
  </ul>
  <p id="o9aK"><strong>Недостатки:</strong></p>
  <ul id="DYot">
    <li id="Rqpm"><strong>Паузы исполнения</strong>: при некоторых алгоритмах приложение может «замереть» на время сборки.</li>
    <li id="0GCn"><strong>Менее предсказуемое использование ресурсов</strong>: сложнее контролировать точный момент освобождения памяти.</li>
    <li id="Zsh7"><strong>Ресурсоёмкость</strong>: сама работа GC требует CPU и может конкурировать за ресурсы с основным приложением.</li>
  </ul>
  <p id="1ryy">Правильный выбор и настройка GC позволяют минимизировать недостатки и использовать преимущества на полную.</p>
  <h2 id="qFdW">Практические соображения для тестировщика</h2>
  <p id="F032">Инженеры по тестированию часто сталкиваются с ситуациями, когда приложение «тормозит» или внезапно «подвисает». Часто причиной этого становится GC:</p>
  <ul id="F4v3">
    <li id="Mq0G"><strong>Долгие паузы при сборке мусора</strong> могут замедлить отклик системы</li>
    <li id="SuUP"><strong>Частые сборки</strong> могут сигнализировать о неправильной работе с памятью</li>
    <li id="EJFA"><strong>Нарастающее использование памяти</strong> может говорить об утечке</li>
  </ul>
  <p id="F4qD">Вот что важно учитывать:</p>
  <ul id="Oqam">
    <li id="yn01"><strong>Мониторинг GC</strong>: с помощью инструментов вроде JVisualVM, Grafana, Prometheus, вы можете отслеживать количество и продолжительность сборок</li>
    <li id="OaZS"><strong>Понимание логов</strong>: GC оставляет сообщения в логах приложения. Умение читать их — ценное умение</li>
    <li id="pphe"><strong>Выбор правильного сборщика</strong>: в зависимости от типа нагрузки (пиковые запросы, фоновая обработка) может потребоваться настроить другой GC</li>
  </ul>
  <p id="j3p6"></p>
  <blockquote id="ETX3">Сборщик мусора — полезный инструмент, но не волшебная палочка. Чтобы он действительно помог, нужно понимать, как он работает, и правильно его настроить. Один и тот же GC может вести себя по-разному в зависимости от нагрузки. Поэтому важно подбирать стратегию под конкретное приложение, следить за его работой и не забывать, что даже автоматике иногда нужна помощь.</blockquote>
  <p id="w91Q" data-align="right"><br />Источники <a href="https://aerospike.com/blog/understanding-garbage-collection/" target="_blank">aerospike</a> | <a href="https://www.techtarget.com/searchstorage/definition/garbage-collection" target="_blank">techTarget </a></p>
  <p id="FsfT"></p>
  <p id="GvCB"></p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Cz4V" data-align="center"><a href="https://t.me/lets_load" target="_blank">📢 Канал в телеграмм</a></p>
    <p id="9V6R" data-align="center">😊 <a href="https://pay.cloudtips.ru/p/b8dae6a6" target="_blank">Для донатов</a></p>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@lets_load/pull_or_push_1</guid><link>https://teletype.in/@lets_load/pull_or_push_1?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load</link><comments>https://teletype.in/@lets_load/pull_or_push_1?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load#comments</comments><dc:creator>lets_load</dc:creator><title>Pull или Push: какую систему мониторинга выбрать? (1 часть)</title><pubDate>Tue, 18 Feb 2025 22:09:29 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/2d/1b/2d1b5050-7641-4977-bce7-2b24247f3495.png"></media:content><category>Мониторинг</category><description><![CDATA[<img src="https://img3.teletype.in/files/67/d3/67d3756a-0825-4c22-8bd8-838dd5305057.png"></img>В этой статье разбираемся в методах получения метрик: Pull или Push (1 часть)]]></description><content:encoded><![CDATA[
  <figure id="0X7S" class="m_column">
    <img src="https://img3.teletype.in/files/67/d3/67d3756a-0825-4c22-8bd8-838dd5305057.png" width="1792" />
  </figure>
  <h3 id="YAwv">Типы систем мониторинга</h3>
  <p id="kxYq">Мониторинг всегда был основным компонентом ИТ-систем. Он отвечает за обнаружение и помощь в локализации проблем. Разработчикам (и тестировщикам) необходимо обращать внимание на систему мониторинга и участвовать в ее построении и оптимизации. Сейчас существует более сотни систем мониторинга, которые состоят из:</p>
  <ul id="ydT0">
    <li id="Lwpb">Объект мониторинга: </li>
    <ol id="O6LP">
      <li id="lUVu"><em>Общий</em> - общий метод мониторинга, подходит для большинства объектов мониторинга; </li>
      <li id="tWV9"><em>Специализированный</em> - настраивается под конкретную функцию, например, система Java JMX, защита от перегрева процессора, защита от сбоев питания жесткого диска и т.д.</li>
    </ol>
    <li id="U3Bo">Метод сбора данных: </li>
    <ol id="Iw9e">
      <li id="XlFH"><em>Push</em> (CollectD, Zabbix и InfluxDB) - агенты сами пишут в базу данных;</li>
      <li id="66Hc"><em>Pull</em> (Prometheus, SNMP и JMX) - система мониторинга собирает с каждого агента информацию</li>
    </ol>
    <li id="T6Rd">Режим развертывания: </li>
    <ol id="vdDN">
      <li id="Bncd"><em>Coupled (связанный режим)</em> -  мониторинговая система развертывается вместе с основным ПО; </li>
      <li id="cIqe"><em>Standalone (автономный режим)</em> - отдельное развертывание мониторинговой системы, которая работает независимо от других компонентов; </li>
      <li id="dM5u"><em>Distributed (распределённый режим)</em> - cистема мониторинга построена на распределённой архитектуре, что позволяет масштабировать её горизонтально; </li>
      <li id="uS0g"><em>SaaS</em> (<em>software as a service — программное обеспечение как услуга</em>) - не требует развертывания, предоставляется сторонними компаниями. Не нужно разворачивать собственные инстанции — они просто используют готовое решение через облако</li>
    </ol>
    <li id="9fhR">Метод получения данных: </li>
    <ol id="ep8q">
      <li id="Tdqv"><em>Тип интерфейса</em> - данные можно получить только через API;</li>
      <li id="iRkv"><em>DSL (Domain-Specific Language)</em> -  использование специализированного языка запросов, разработанного для конкретной задачи, например PromQL и GraphQL; </li>
      <li id="eDmI"><em>SQL</em> - используется стандартный SQL или его вариации (SQL-like), чтобы запрашивать данные из баз данных</li>
    </ol>
    <li id="XpS9">Инструменты</li>
    <ol id="qGLR">
      <li id="57NT"><em>Open-source и бесплатные</em> - системы с открытым исходным кодом, которые можно использовать бесплатно (например, Prometheus и InfluxDB standalone edition); </li>
      <li id="RNOe"><em>Коммерческие с открытым исходным кодом</em> - эти системы имеют открытый исходный код, но их расширенные функции предоставляются на коммерческой основе (например, InfluxDB cluster edition, Elastic Search X-Pack); </li>
      <li id="PQHM"><em>Коммерческие с закрытым исходным кодом</em> - это полностью проприетарные (закрытые) системы, которые разрабатываются частными компаниями и доступны только на платной основе(например, DataDog, Splunk и AWS Cloud Watch).</li>
    </ol>
  </ul>
  <h2 id="73cV">Pull или Push?</h2>
  <p id="QTtD">Существует множество вариантов построения платформы системы мониторинга для внутреннего использования, будь то самостоятельная сборка с использованием решений с открытым исходным кодом или коммерческих SaaS-продуктов. Однако независимо от того, будет ли это решение с открытым исходным кодом или коммерческий SaaS-продукт, при реальном внедрении необходимо продумать, как передать данные платформе мониторинга или как платформа мониторинга может получить эти данные. Для этого нужно сделать выбор метода получения данных: Pull или Push.</p>
  <figure id="Q4TV" class="m_column">
    <img src="https://img1.teletype.in/files/01/0c/010c011c-b811-4593-99e6-97fc192f95c9.png" width="1050" />
  </figure>
  <p id="gdNB">Система мониторинга на основе Pull-модели, как следует из названия, активно запрашивает метрики у объектов мониторинга, которые должны обладать возможностью быть доступными удалённо. В отличие от неё, Push-модель мониторинга не запрашивает данные самостоятельно — объекты мониторинга сами отправляют метрики в систему. </p>
  <p id="7FTX">Эти два подхода имеют существенные различия в ряде аспектов. При разработке и выборе системы мониторинга важно заранее понимать преимущества и недостатки каждого из методов, чтобы выбрать наиболее подходящий вариант для реализации. В противном случае в будущем могут возникнуть значительные затраты на поддержку стабильности системы, её развертывание и эксплуатацию.</p>
  <p id="hIds"></p>
  <p id="6iad" data-align="right">Источник <a href="https://www.alibabacloud.com/blog/pull-or-push-how-to-select-monitoring-systems_599007" target="_blank">alibabacloud</a> |</p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Cz4V" data-align="center"><a href="https://t.me/lets_load" target="_blank">📢 Канал в телеграмм</a></p>
    <p id="9V6R" data-align="center">😊 <a href="https://pay.cloudtips.ru/p/b8dae6a6" target="_blank">Для донатов</a></p>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@lets_load/mobaxterm_default_text_editor</guid><link>https://teletype.in/@lets_load/mobaxterm_default_text_editor?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load</link><comments>https://teletype.in/@lets_load/mobaxterm_default_text_editor?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load#comments</comments><dc:creator>lets_load</dc:creator><title>MobaXterm - смена текстового редактора по умолчанию</title><pubDate>Wed, 12 Feb 2025 22:26:08 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/07/9f/079f6837-a580-4520-94da-38b467a334c5.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/6a/37/6a370268-b5cd-444c-bbfd-01cf4295db86.png"></img>В этой статье рассмотрим, как в MobaXterm поменять текстовый редактор по умолчанию]]></description><content:encoded><![CDATA[
  <h3 id="NY8y">Проблема</h3>
  <p id="oaOe">Если вы открывали какие-либо файлы в интерфейсе MobaXterm, то могли обратить внимание, что их текстовый редактор, установленный по умолчанию (<em>MobaTextEditor</em>), не может похвастаться большим функционалом и удобством использования</p>
  <figure id="FJMD" class="m_column">
    <img src="https://img3.teletype.in/files/6a/37/6a370268-b5cd-444c-bbfd-01cf4295db86.png" width="638" />
    <figcaption>Еще помните о существовании мема с Дрейком?</figcaption>
  </figure>
  <h3 id="YfcZ">Решение №1 (не самое удачное 🤷‍♂️) </h3>
  <p id="RUXu">Возможно, в такой ситуации вы пробовали открывать файлы в удобном для вас редакторе с помощью нажатия ПКМ -&gt; &quot;Open with...&quot;</p>
  <figure id="1wlY" class="m_column">
    <img src="https://img1.teletype.in/files/cb/c8/cbc8707a-b24d-4c39-a8a3-62461c320bff.png" width="489" />
    <figcaption>ПКМ -&gt; &quot;Open with...&quot;</figcaption>
  </figure>
  <p id="DoBO">...спустя какое-то количество таких постоянных нажатий, вам захочется уволиться... или найти другой способ открывать файлы </p>
  <h3 id="X7OK">Решение №2 (имба 💪)</h3>
  <p id="OaJF">Создатели MobaXterm осознавали, что пользователи будут испытывать боль при использовании их редактора, поэтому дали возможность изменять его на любой другой:</p>
  <ul id="XOZl">
    <li id="pX89">Открываете &quot;Settings&quot;</li>
  </ul>
  <figure id="BjzP" class="m_column">
    <img src="https://img1.teletype.in/files/01/c4/01c41e49-95aa-494d-b3e4-be9dbff89d2d.png" width="725" />
    <figcaption>&quot;Settings&quot;</figcaption>
  </figure>
  <ul id="75CM">
    <li id="g2ih">Далее кликаете на иконку указания пути до выбранного вами редактора </li>
  </ul>
  <figure id="n2FQ" class="m_column">
    <img src="https://img3.teletype.in/files/65/0d/650d793b-a9bf-41a9-bee7-25b23721406e.png" width="822" />
    <figcaption>set default text editor program</figcaption>
  </figure>
  <ul id="T875">
    <li id="1bSq">Выбираете нужный редактор </li>
  </ul>
  <section style="background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="RCw2">Рекомендую использовать <a href="https://code.visualstudio.com/" target="_blank">Visual Studio Code</a>, он работает практически со всеми расширениями файлов. Обычно он находится по пути:</p>
    <p id="fAe5"><code>C:\Users\&lt;ypur_user&gt;\AppData\Local\Programs\Microsoft VS Code\Code.exe</code></p>
  </section>
  <p id="A9W9"></p>
  <p id="p6ch">Теперь файлы будут открываться в выбранном вами текстовом редакторе</p>
  <figure id="6tXp" class="m_column">
    <img src="https://img1.teletype.in/files/46/47/4647d674-fbb7-45bb-badb-d23b6276c05c.png" width="879" />
    <figcaption>Это вторая часть мема с Дрейком</figcaption>
  </figure>
  <p id="t0kL"></p>
  <h3 id="ZMiY">Ну красота же?)</h3>
  <p id="8Ier"></p>
  <p id="6iad" data-align="right"><em>Источник статьи: мой опыт работы 😁</em></p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Cz4V" data-align="center"><a href="https://t.me/lets_load" target="_blank">📢 Канал в телеграмм</a></p>
    <p id="9V6R" data-align="center">😊 <a href="https://pay.cloudtips.ru/p/b8dae6a6" target="_blank">Для донатов</a></p>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@lets_load/methods_for_collect_metrics</guid><link>https://teletype.in/@lets_load/methods_for_collect_metrics?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load</link><comments>https://teletype.in/@lets_load/methods_for_collect_metrics?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load#comments</comments><dc:creator>lets_load</dc:creator><title>USE vs RED vs LTES: Какой метод выбрать для диагностики системы?</title><pubDate>Sat, 08 Feb 2025 23:39:06 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/56/35/563574eb-be13-4ad2-a17b-ff95e17f40d7.png"></media:content><category>Мониторинг</category><description><![CDATA[<img src="https://img1.teletype.in/files/4a/f0/4af0e4fd-9deb-4af1-b43c-b30f1ca07ab3.png"></img>В этой статье я расскажу о том, какие метрики наиболее полезно собирать для приложений и сервисов.]]></description><content:encoded><![CDATA[
  <figure id="N6fF" class="m_column">
    <img src="https://img1.teletype.in/files/4a/f0/4af0e4fd-9deb-4af1-b43c-b30f1ca07ab3.png" width="1024" />
  </figure>
  <h3 id="Olgm">Введение </h3>
  <p id="ZLrq">В этой статье я расскажу о том, какие метрики наиболее полезно собирать для приложений и сервисов.</p>
  <h3 id="TEwe">Начало работы</h3>
  <p id="varK">Допустим, вы развернули сервис на своей платформе и решили добавить для него мониторинг.</p>
  <h3 id="FtSF">С чего начать?</h3>
  <p id="COjY"><strong>Во-первых</strong>, необходимо выяснить, какой именно набор метрик вы хотите снимать.</p>
  <p id="TLjo">Этот набор не всегда будет одинаковым для всех приложений.</p>
  <p id="amOK">Часто бывает нелегко понять, что именно нужно отслеживать, и в таких случаях всегда можно собрать все метрики и выяснить, что из них полезно.</p>
  <p id="AtIS">Чтобы немного сузить круг поиска, мы можем обратиться к методам <strong>RED </strong>и <strong>USE</strong>.</p>
  <hr />
  <h3 id="5WVm">Методы RED / USE</h3>
  <p id="09aa">Вы наверняка слышали о методах RED и USE.</p>
  <hr />
  <h3 id="QC1H">USE</h3>
  <p id="Igrh">USE - это аббревиатура от <a href="http://www.brendangregg.com/usemethod.html" target="_blank">Utilization, Saturation и Errors</a>. В <a href="https://www.brendangregg.com/usemethod.html" target="_blank">статье </a>Брендан Грегг пишет, что </p>
  <blockquote id="7z8t">&quot;USE - это методология анализа производительности любой системы&quot; и что с помощью этого метода можно решить около 80% проблем сервера, затратив 5% усилий.Вы начинаете с создания чек-листа для анализа сервера, который может быть использован для быстрого выявления узких мест или ошибок. Затем вы начинаете задавать вопросы и искать на них ответы. </blockquote>
  <p id="5Ev7">Он сравнивает его с аварийным контрольным списком в руководстве по летной эксплуатации: он должен быть простым, понятным, полным и быстрым.</p>
  <p id="Uj3y">В основе метода USE лежат <strong>три типа метрик</strong> и стратегия метода к комплексной системе.</p>
  <p id="NF4p">Брендан Грегг кратко описал метод USE следующим образом:</p>
  <blockquote id="Iemg"><strong>Для каждого ресурса проверьте использование, насыщенность и ошибки</strong>.</blockquote>
  <p id="tlPY">где:</p>
  <ul id="pLNf">
    <li id="BjA9"><strong>Utilization </strong>(использование<strong> - </strong>процент времени, в течение которого ресурс был занят).</li>
    <li id="LCTZ"><strong>Saturation </strong>(насыщенность - количество работы, которую должен выполнить ресурс).</li>
    <li id="1Mj3"><strong>Errors </strong>(количество ошибок во время выполнения работы)</li>
  </ul>
  <p id="0Ymn">Метод USE предназначен для использования на ранних этапах исследования производительности, чтобы выявить системные узкие места.</p>
  <p id="OrBf">О методе USE можно прочитать <a href="https://www.brendangregg.com/usemethod.html" target="_blank">здесь</a></p>
  <p id="zexy"></p>
  <h3 id="c7a2">RED</h3>
  <p id="r3Q9">В 2015 году Том Уилки из Grafana рассказал о <a href="https://grafana.com/blog/2018/08/02/the-red-method-how-to-instrument-your-services/" target="_blank">методе RED для мониторинга микросервисов</a>.</p>
  <p id="12Yp">В этом выступлении Том Уилки сказал:</p>
  <blockquote id="TQOu">«Метод USE не совсем применим к сервисам; он применим к аппаратному обеспечению, сетевым дискам и тому подобным вещам. Нам очень нужна была философия мониторинга, ориентированная на микросервисы, поэтому мы придумали метод RED».</blockquote>
  <p id="ypIG">Вместо того чтобы отслеживать каждый ресурс на предмет использования, насыщенности и ошибок, Том предлагает следующее:</p>
  <p id="lwWR"><strong>Для каждого ресурса отслеживайте:</strong></p>
  <ul id="42fi">
    <li id="bj0w">Rate (скорость - количество запросов в секунду, которые обслуживают ваши службы).</li>
    <li id="jpn9">Errors (количество неудачных запросов в секунду - ошибок).</li>
    <li id="46lG">Duration (длительность - время отклика ваших сервисов на каждый запрос).</li>
  </ul>
  <p id="0nNW"><br />Используя метод RED, компании будут лучше понимать, насколько довольны клиенты</p>
  <blockquote id="UZgV">Если у вас<strong> высокая частота ошибок</strong>, это означает, что ваши пользователи получают ошибки при загрузке страницы.</blockquote>
  <blockquote id="4knL">Если у вас <strong>высокое время отклика</strong>, значит, ваш сайт работает медленно.</blockquote>
  <p id="OChz"></p>
  <h3 id="nQoS">LTES (или &quot;Четыре золотых сигнала&quot;)</h3>
  <p id="eW8X">Подождите, есть еще один метод. Четыре «золотых сигнала» взяты из книги <a href="https://sre.google/sre-book/monitoring-distributed-systems/#xref_monitoring_golden-signals" target="_blank">Google&#x27;s SRE Book</a></p>
  <blockquote id="u1Yw">Четыре золотых сигнала мониторинга - это <strong>задержка</strong>, <strong>трафик</strong>, <strong>ошибки </strong>и <strong>насыщенность</strong>. Если у вас есть возможность измерить только четыре метрики вашей системы, ориентированной на пользователя, сосредоточьтесь на этих четырех.</blockquote>
  <p id="YF6n">Где:</p>
  <ul id="KY3R">
    <li id="j1eA"><strong>Latency</strong> (Задержка - время, необходимое для обслуживания запроса)</li>
    <li id="maWz"><strong>Traffic </strong>(Трафик - количество запросов к вашей системе)</li>
    <li id="wizS"><strong>Errors </strong>(Ошибки - количество запросов, которые не выполняются)</li>
    <li id="BTQc"><strong>Saturation </strong>(Насыщение <strong>- </strong>насколько «переполнен» ваш сервис).</li>
  </ul>
  <p id="cw6i">Единственное отличие этого метода от метода RED заключается в том, что он включает в себя <strong>насыщение (Saturation )</strong>.</p>
  <p id="dEyb"></p>
  <h3 id="0Pjg">Какой метод вам следует использовать?</h3>
  <p id="VMrp">Том Уилки рекомендует использовать комбинацию методов USE и RED.</p>
  <blockquote id="3JLj">«Метод RED - это забота о пользователях и их счастье, - говорит Том, - а метод USE - это забота о машинах и их счастье. На самом деле это просто два разных взгляда на одну и ту же систему. Они дополняют друг друга».</blockquote>
  <p id="6iad" data-align="right">Источник <a href="https://faun.pub/use-vs-red-vs-the-four-golden-signals-50655e93fad7" target="_blank">Medium</a> |</p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Cz4V" data-align="center"><a href="https://t.me/lets_load" target="_blank">📢 Канал в телеграмм</a></p>
    <p id="9V6R" data-align="center">😊 <a href="https://pay.cloudtips.ru/p/b8dae6a6" target="_blank">Для донатов</a></p>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@lets_load/what_is_proxy</guid><link>https://teletype.in/@lets_load/what_is_proxy?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load</link><comments>https://teletype.in/@lets_load/what_is_proxy?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load#comments</comments><dc:creator>lets_load</dc:creator><title>Прокси, обратный прокси и балансировщик нагрузки</title><pubDate>Fri, 24 Jan 2025 21:51:28 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/f2/5c/f25ca19e-6bf1-4a7e-9702-1771b45f8f13.png"></media:content><category>Технологии</category><description><![CDATA[<img src="https://img1.teletype.in/files/c8/b6/c8b609f3-e0ec-4695-af30-0f259c6e6051.jpeg"></img>Разбираемся в том, как работает прокси, обратный-прокси и балансировщик нагрузки]]></description><content:encoded><![CDATA[
  <figure id="iU0J" class="m_column">
    <img src="https://img1.teletype.in/files/c8/b6/c8b609f3-e0ec-4695-af30-0f259c6e6051.jpeg" width="1024" />
  </figure>
  <p id="S8Gl">Сначала давайте получим представление о прокси-серверах, а после этого вы сможете легко понять обратные прокси-серверы и балансировщики нагрузки.</p>
  <p id="oU9W">Но прежде чем мы перейдем к техническим обсуждениям, связанным с прокси или обратными прокси, я хотел бы вспомнить одну ситуацию из детства, которая наверняка была у каждого из вас.</p>
  <figure id="i54A" class="m_column">
    <img src="https://img2.teletype.in/files/13/d7/13d7b378-0f39-464a-9807-87181d1f2dea.jpeg" width="1280" />
    <figcaption>Рисунок 1 - Родители всегда стоят у нас на пути 😅</figcaption>
  </figure>
  <p id="Yvmb">В детстве, когда нам что-то нужно, мы просим об этом родителей. Потому что нам не разрешают напрямую контактировать с посторонними людьми. Например, когда мы просим у родителей игрушечную машинку, они решают, правильная это просьба или нет. Если просьба обоснована, родители пойдут в магазин игрушек и принесут нам игрушечную машинку. В противном случае они просто отклонят нашу просьбу. Вот видите, когда мы были детьми,<strong> наши родители выступали в роли щита, защищающего нас от посторонних</strong>.</p>
  <p id="RgTa">Надеюсь, вы получили представление об этом простом сценарии, теперь давайте посмотрим, как это связано с прокси-сервером.</p>
  <h2 id="YmIw">Прокси-сервер</h2>
  <figure id="tdmS" class="m_column">
    <img src="https://img2.teletype.in/files/59/57/5957f1dc-10b1-4d64-bdc6-ab3ee78d74b8.jpeg" width="720" />
    <figcaption>Рисунок 2</figcaption>
  </figure>
  <p id="pdMp">На рисунке 2 представлено простое клиент-серверное приложение. Все клиенты отправляют свои запросы на прокси-сервер, а затем прокси-сервер отправляет запросы клиентов на сервер. Таким образом, прокси-сервер выполняет роль брандмауэра или щита на стороне клиента, обрабатывает все клиентские запросы и отправляет их на сервер соответствующим образом. Основная цель такого рода прокси - <strong>защитить клиентские приложения от внешних серверов и других уязвимостей безопасности</strong>. Как это работает? Это работает так, что клиенты и их IP-адреса не раскрываются внешнему миру, а вот прокси-сервер будет раскрывать себя от имени клиентских приложений. Надеюсь, вы помните приведенный выше сценарий «ребенок-родитель». 😃</p>
  <p id="o3bb">Надеюсь, теперь у вас есть четкое представление о прокси-сервере и его роли. Теперь перейдем к обратным прокси-серверам.</p>
  <h2 id="YZm8">Обратный прокси-сервер</h2>
  <figure id="ZMqh" class="m_column">
    <img src="https://img4.teletype.in/files/7f/e1/7fe16c55-c399-47fd-bc74-eb1ccb2fd44f.jpeg" width="1280" />
    <figcaption>Рисунок 3</figcaption>
  </figure>
  <p id="UBMP">Концепция обратного прокси-сервера очень похожа на концепцию прямого прокси-сервера. Предположим, что у нас есть несколько экземпляров сервера, работающих на бэкенде. Но помните, что не обязательно иметь несколько экземпляров, в некоторых случаях будет достаточно одного сервера. 😉 На рисунке 3 показано, что обратный прокси расположен на стороне серверов. Вместо того чтобы защищать клиентские приложения,<strong> обратный прокси защищает экземпляры сервера на бэкенде от внешних сторон или клиентов</strong>. Таким образом, клиенты никогда не узнают, какой экземпляр сервера будет отвечать на их запросы. Каждый запрос клиента будет отфильтрован на обратном прокси, а затем обратный прокси-сервер перенаправит эти запросы на соответствующие сервера для дальнейшей обработки.</p>
  <p id="OIYC">У обратных прокси-серверов есть и другие преимущества. Такие прокси могут кэшировать статический и динамический контент. Если клиенты снова и снова запрашивают один и тот же ресурс, мы можем кэшировать это содержимое на уровне прокси. Таким образом, нам не придется снова и снова отправлять один и тот же запрос на сервера. Следующее преимущество этих прокси-серверов заключается в том, что они могут сжимать данные, которые будут проходить через сеть, используя различные алгоритмы. Еще одно важное преимущество обратных прокси-серверов заключается в том, что они могут выступать в качестве балансировщика нагрузки. Итак, давайте разберемся и с этим.</p>
  <h2 id="wYN5">Балансировщик нагрузки</h2>
  <p id="2R6g">Как я уже говорил, обратный прокси-сервер может выступать в качестве балансировщика нагрузки. Помните, что не каждый обратный прокси-сервер будет выступать в роли балансировщика нагрузки, но <strong>каждый балансировщик нагрузки должен быть обратным прокси-сервером</strong>. Итак, роль балансировщика нагрузки заключается в <strong>распределении нагрузки клиентских запросов между экземплярами сервера</strong>. Например, у нас есть приложение, которое получает более 5 миллионов запросов в день. Таким образом, если на стороне сервера будет только один экземпляр, он не сможет справиться с таким огромным трафиком. Поэтому нам нужно иметь несколько экземпляров сервера. Вы можете задаться вопросом: если у нас есть несколько экземпляров, как мы можем распределить трафик между этими серверами? Как раз в этом случае на помощь приходит балансировщик нагрузки 😉.</p>
  <figure id="EoHM" class="m_column">
    <img src="https://img3.teletype.in/files/22/ee/22eefbe9-657e-4bc8-9c6d-3bdd3bccbf0d.jpeg" width="1280" />
    <figcaption>Рисунок 4</figcaption>
  </figure>
  <p id="EFMy">Балансировщик нагрузки принимает все запросы клиентов и распределяет их между экземплярами сервера в соответствии с различными алгоритмами. В данном конкретном случае (рисунок 4) он использует <u><em>алгоритм балансировки нагрузок циклическим перебором (Round-Robin)</em></u> для распределения нагрузки между экземплярами сервера. В алгоритме Round-Robin каждый новый клиентский запрос будет переадресован следующему соседнему серверному экземпляру в последовательном порядке. Таким образом, вместо того чтобы один сервер разрешал все запросы, все серверы будут участвовать в разрешении клиентских запросов по правильному и эффективному алгоритму. Существует не только Round Robin, но и ряд других алгоритмов, таких как Hash, IP Hash, Least Connections и так далее.</p>
  <hr />
  <p id="nnHI">Отлично! Вот и все для этой статьи. Спасибо, что дочитали до конца. Надеюсь, вы узнали что-то ценное. Продолжайте учиться, продолжайте расти.</p>
  <p id="Vt7F">УДАЧИ!!!</p>
  <p id="qMvi" data-align="right">Источник <a href="https://medium.com/tech-it-out/proxy-vs-reverse-proxy-vs-load-balancer-3937915631c8" target="_blank">Medium</a> |</p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Cz4V" data-align="center"><a href="https://t.me/lets_load" target="_blank">📢 Канал в телеграмм</a></p>
    <p id="9V6R" data-align="center">😊 <a href="https://pay.cloudtips.ru/p/b8dae6a6" target="_blank">Для донатов</a></p>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@lets_load/why_use_performance_testing</guid><link>https://teletype.in/@lets_load/why_use_performance_testing?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load</link><comments>https://teletype.in/@lets_load/why_use_performance_testing?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load#comments</comments><dc:creator>lets_load</dc:creator><title>Для чего нужно тестирование производительности?</title><pubDate>Tue, 14 Jan 2025 22:20:20 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/8a/fa/8afa6318-b835-4f31-aeda-3df3d9142f52.png"></media:content><category>Введение в тестирование производительности</category><description><![CDATA[<img src="https://img2.teletype.in/files/1a/81/1a812396-32a5-4b0c-b201-75d1971d5e35.jpeg"></img>В этой статье рассмотрим причины использования тестирования производительности]]></description><content:encoded><![CDATA[
  <figure id="x9cH" class="m_column">
    <img src="https://img2.teletype.in/files/1a/81/1a812396-32a5-4b0c-b201-75d1971d5e35.jpeg" width="1024" />
  </figure>
  <p id="1SQO">Тестирование производительности — это тестирование, которое оценивает скорость, отзывчивость и стабильность компьютера, сети, программного обеспечения или устройства под рабочей нагрузкой. </p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="HaTn">Организации будут проводить тесты производительности для выявления  узких мест, связанных с производительностью</p>
  </section>
  <p id="cXSn">Целью тестирования производительности является <strong>выявление и устранение узких мест в программных приложениях</strong>, что помогает обеспечить качество программного обеспечения. </p>
  <h2 id="WNBp"></h2>
  <h2 id="5hA1">Зачем использовать тестирование производительности?</h2>
  <p id="QTWs">Существует ряд причин, по которым организация может захотеть использовать тестирование производительности, в том числе следующие:</p>
  <ul id="rqxs">
    <li id="F3PQ">В качестве <strong>диагностического способа</strong> выявления узких мест в системе. </li>
    <li id="o1sU">Чтобы <strong>помочь определить</strong> природу проблемы производительности, связанной с программным обеспечением, путем определения мест, где приложение может не работать или отставать. Организации также могут использовать этот вид тестирования для обеспечения готовности к предсказуемому крупному событию.</li>
    <li id="3rlU">Для <strong>проверки требований</strong>, чтобы убедиться, что система соответствует спецификациям, заявленным в её требованиях. </li>
    <li id="Ypcs"><strong>Предоставление информации</strong> заинтересованным сторонам для информирования участников проекта об обновлениях производительности приложения, касающихся скорости, стабильности и масштабируемости.</li>
    <li id="jcbV"><strong>Во избежание получения плохой оценки от пользователей</strong>, так как приложение, выпущенное без тестирования производительности, может работать плохо, что может привести к негативной репутации.</li>
    <li id="NQdV"><strong>Для сравнения</strong> двух или более систем, чтобы организация могла сравнить скорость работы, отзывчивость и стабильность программного обеспечения.</li>
  </ul>
  <p id="okxs" data-align="right">Источник <a href="https://www.techtarget.com/searchsoftwarequality/definition/performance-testing" target="_blank">Techtarget </a>|</p>
  <p id="esjK"></p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Cz4V" data-align="center"><a href="https://t.me/lets_load" target="_blank">📢 Канал в телеграмм</a></p>
    <p id="9V6R" data-align="center">😊 <a href="https://pay.cloudtips.ru/p/b8dae6a6" target="_blank">Для донатов</a></p>
  </section>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@lets_load/profiles_for_load_testing</guid><link>https://teletype.in/@lets_load/profiles_for_load_testing?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load</link><comments>https://teletype.in/@lets_load/profiles_for_load_testing?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=lets_load#comments</comments><dc:creator>lets_load</dc:creator><title>Моделирование профиля для нагрузочного тестирования</title><pubDate>Fri, 10 Jan 2025 08:14:00 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/3a/15/3a1567ed-938f-460d-99bb-6b140e02b7a1.png"></media:content><category>Введение в тестирование производительности</category><description><![CDATA[<img src="https://img3.teletype.in/files/ec/48/ec48ac21-4946-45ad-9bbc-16c091daf8a3.jpeg"></img>В этой статье мы рассмотрим вопросы, на которые стоит ответить, чтобы определить рабочий профиль нагрузки для вашего приложения]]></description><content:encoded><![CDATA[
  <figure id="99ai" class="m_column">
    <img src="https://img3.teletype.in/files/ec/48/ec48ac21-4946-45ad-9bbc-16c091daf8a3.jpeg" width="1024" />
  </figure>
  <p id="8Mkm">Любой проект нагрузочного тестирования должен начинаться с разработки модели пользовательской нагрузки. Она должна учитывать различные аспекты производительности приложения и инфраструктуры, на которую будет воздействовать данная рабочая нагрузка. </p>
  <p id="UpMO">Профиль рабочей нагрузки является <strong>ключевым компонентом</strong> такой модели. В зависимости от типа и целей нагрузочного теста может быть уместен один или несколько профилей. Выбор профилей нагрузки, отражающих предполагаемую реальную нагрузку в течение определенного времени (будь то сценарий повседневного использования или высокий пик), позволяет получить более точные ответы на «основные вопросы нагрузочного тестирования», такие как:</p>
  <ul id="TIHX">
    <li id="FwMR">Поддержит ли мой сайт одновременный поиск N пользователей? </li>
    <li id="YavF">Какое наибольшее количество пользователей может поддерживать мой сайт, оставаясь при этом в рамках заданных требований к качеству и производительности?</li>
  </ul>
  <p id="IzAr">В этой статье мы рассмотрим вопросы, на которые стоит ответить, чтобы определить рабочий профиль нагрузки для вашего приложения</p>
  <h2 id="Xoca">Каков набор возможных действий, которые может выполнить пользователь?</h2>
  <p id="PD6m">Такие действия зависят от специфики вашего веб-приложения. Для продуктового приложения это могут быть:</p>
  <ol id="QSBy">
    <li id="0Ld8">Открыть главную страницу.</li>
    <li id="izel">Авторизоваться.</li>
    <li id="2o7z">Просмотреть каталог товаров.</li>
    <li id="ozAk">Найти нужный товар через поиск.</li>
    <li id="cZMu">Добавить товары в корзину.</li>
    <li id="FhNG">Проверить корзину и оформить заказ.</li>
    <li id="Nvtw">Выйти из приложения</li>
  </ol>
  <p id="ldRY"></p>
  <h2 id="uGE2">Какие могут быть пользовательские профили для приложения? Достаточно ли одного пользовательского профиля?</h2>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="hZuH"><strong>Профиль пользователя</strong> - это часть модели нагрузочного тестирования, которая строится на основе типичного случая использования или сценария взаимодействия реального пользователя с тестируемым приложением. </p>
  </section>
  <p id="1bWH">Например, на сайте по продаже товаров есть группы пользователей, которые просто подключаются и просматривают каталог товаров, а есть другие пользователи, которые заходят на сайт, ищут конкретные товары, получают информацию о ценах, возможно, добавляют несколько вариантов в избранное, а затем выходят из системы и т. д. Основываясь на этом подходе, вы можете определить, какие профили пользователей наиболее релевантны. </p>
  <p id="uXJK">Например, для вашего нагрузочного теста список пользовательских профилей может быть таким:</p>
  <ol id="onf8">
    <li id="Woog">Профиль просмотра</li>
    <li id="8KMU">Профиль поиска</li>
    <li id="Ny7c">Профиль размещения заказа</li>
  </ol>
  <p id="Foem">Обратите внимание, что если в нагрузочном тесте используется несколько пользовательских профилей, то лучше всего отлаживать каждый из них отдельно. После того как вы убедитесь, что каждый профиль работает адекватно сам по себе, можно приступать к объединению нескольких профилей в один тест.</p>
  <p id="HWd4"></p>
  <h2 id="mQZf">Какие действия выполняет пользователь, представляющий каждый пользовательский профиль?</h2>
  <p id="nlbf">В большинстве случаев действия пользователя должны быть относительно очевидны на основе сценариев использования, которые использовались при разработке приложения. Возможно, некоторые действия выполняются более одного раза, и такая статистика может быть приближена на основе моделирования пользователей или журналов сервера для существующих приложений.</p>
  <p id="iiA8">Например, предположим, что в среднем каждый пользователь, покупающий товары на в вашем приложении, приобретает три товара за одну сессию. Статистика различных действий в профиле пользователя будет выглядеть вот так:</p>
  <hr />
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="bLOD"><strong>Операция                                                         Количество выполнений за одну сессию</strong></p>
    <hr />
    <p id="qtMa">Открыть главную страницу                                                          1</p>
    <hr />
    <p id="o5Vs">Авторизоваться                                                                              1</p>
    <hr />
    <p id="yOAJ"><em>Просмотреть каталог товаров</em>                                                     4</p>
    <hr />
    <p id="Z9nO">Найти нужный товар через поиск,                                              2</p>
    <hr />
    <p id="9S40">Добавить товары в корзину                                                         3</p>
    <hr />
    <p id="BXnk">Проверить корзину и оформить заказ,                                       1 </p>
    <hr />
    <p id="PXaH">Выйти из приложения                                                                   1</p>
  </section>
  <hr />
  <p id="GKrT"><em>*Этот анализ необходимо выполнить для всех профилей пользователей</em></p>
  <p id="5EvT"></p>
  <h2 id="LB4g">Каково среднее &quot;время обдумывания&quot; пользователя между действиями?</h2>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="wUaI">Время, которое пользователь проводит между двумя последовательными действиями на странице, в языке нагрузочного тестирования называется <strong>«временем обдумывания»</strong>. </p>
  </section>
  <p id="198T">В течение «времени обдумывания» пользователь может просматривать информацию, отображаемую на странице, или вводить такие данные, как адреса, номера карт, параметры поиска и т. д.</p>
  <p id="P0V8">Время обдумывания может варьироваться в зависимости от сложности информации на странице. Например, время обдумывания страницы входа в систему меньше, чем время обдумывания страницы оформления заказа, на которой пользователь должен ввести данные карты.</p>
  <p id="818r">Большинство <a href="https://www.blazemeter.com/" target="_blank">инструментов</a> нагрузочного тестирования, которые позволяют записывать действия пользователя прямо в браузере, фиксируют фактические задержки между действиями. Впоследствии эти значения можно изменить, усреднить по всем запросам или заменить автоматически сгенерированными значениями с заданным набором статистических параметров.</p>
  <p id="sgWj"></p>
  <h2 id="xp41">Каково ожидаемое соотношение сценариев профилей пользователей?</h2>
  <p id="L5ba">Комбинирование различных профилей позволяет создать более реалистичную имитацию веб-трафика для тестов. Соотношение бизнес-действий, выполняемых различными профилями пользователей, можно оценить или измерить. Например, типичная модель использования приложения для покупки товаров может состоять из 77 % пользователей, просматривающих приложение, 20%, ищущих конкретные товары, и 3 %, оформляющих заказ. Соотношение зависит от вашего приложения, вашего бизнеса и ваших пользователей. </p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="kNu7">Важно, чтобы соотношение отражало реальные транзакции на вашем сайте</p>
  </section>
  <p id="5KIJ"></p>
  <h2 id="JIQv">Как меняется количество пользователей, заходящих на ваш сайт, с течением времени?</h2>
  <p id="t7Lm">В реальной ситуации количество пользователей будет зависеть от времени суток, недели года, новостей и т. д. Понимание и учет этих изменений позволит вам разработать лучший профиль рабочей нагрузки.</p>
  <p id="IvJP">Сайт доставки цветов может иметь относительно скромную стабильную нагрузку в течение дня. А затем сайт достигает сверхвысокой стабильной пиковой нагрузки в течение недели, предшествующей Дню святого Валентина. У приложения для онлайн-банкинга может быть совсем другая модель использования.</p>
  <p id="qJFo">Для некоторых нагрузочных тестов важно, чтобы профиль нагрузки соответствовал этой вариации в определенном масштабе, а для некоторых это не так важно. Изменения нагрузки в течение дня должны быть учтены в длительном тестировании производительности с целью «имитации» реального профиля нагрузки, который будет испытывать сервер, и анализа показателей инфраструктуры. С другой стороны, на ранних этапах разработки может быть проще запустить постоянную/непрерывную или ступенчато возрастающую нагрузку, поскольку такие профили облегчают интерпретацию результатов.</p>
  <p id="Jwtb"></p>
  <h2 id="iqau">Каково максимальное ожидаемое количество пользователей, посещающих ваше приложение?</h2>
  <p id="uQWA">Это число представляет собой предельную пропускную способность вашего приложения. </p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="edzO"><strong>Одновременные пользователи</strong> - это пользователи, имеющие активные соединения с одним и тем же веб-сайтом в одно и то же время. </p>
  </section>
  <p id="7soW">Если вы разрабатываете новое приложение, источником этих данных может быть документ с требованиями к приложению (который основан на прогнозируемом использовании вашего приложения по наилучшим предположениям вашего отдела аналитики). Для существующих приложений вы можете определить количество одновременных пользователей, проанализировав журналы сервера и/или информацию, предоставляемую службой аналитики.</p>
  <p id="mjPX"></p>
  <h2 id="3T7n">В течение какого времени должен выполняться тест?</h2>
  <p id="tRpF">Продолжительность тестирования зависит от специфики вашего приложения и может составлять от 20 минут до недели. Рассмотрим следующие сценарии:</p>
  <ul id="l0P1">
    <li id="Ok8I">Вам необходимо протестировать механизм входа в систему, чтобы убедиться, что необходимое количество пользователей может войти на сайт в течение определенного периода времени. Этот сценарий можно протестировать за короткий промежуток времени (15-20 минут), а результаты экстраполировать на более длительные периоды. Если 100 пользователей могут войти на сайт в течение 15 минут, можно экстраполировать результаты на 400 пользователей в течение часа.</li>
    <li id="qzgZ">Вы можете проводить тесты непрерывно в течение длительного периода времени (дней, а возможно, и недель) с постоянной нагрузкой, чтобы проследить, как работает ваше приложение в течение длительного времени. Это позволит выявить медленные утечки памяти, которые становятся очевидными только через длительный период времени.</li>
  </ul>
  <p id="A4yn">Надеемся, эти рекомендации помогут вам в построении профиля рабочей нагрузки, отражающей характер использования вашего веб-приложения, что сделает ваши нагрузочные тесты гораздо более близкими к реальным сценариям. </p>
  <blockquote id="JMSr" data-align="right">Источник <a href="https://smartbear.com/blog/workload-modeling-and-profiles-for-load-testing" target="_blank">SmartBear</a></blockquote>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="GN8o" data-align="center"><a href="https://t.me/lets_load" target="_blank">📢 Канал в телеграмм</a></p>
    <p id="SH46" data-align="center">😊 <a href="https://pay.cloudtips.ru/p/b8dae6a6" target="_blank">Для донатов</a></p>
  </section>

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