Search
Write a publication
Pull to refresh
3
0.4

Пользователь

Send message

Лучшие практики создания отказоустойчивых систем

Level of difficultyMedium
Reading time23 min
Views12K

Разработка отказоустойчивых систем представляет собой важнейшую компетенцию для инженеров, занятых созданием распределённых и масштабируемых приложений. Под отказоустойчивостью понимается способность системы сохранять работоспособность в условиях сбоев отдельных компонентов или недоступности внешних сервисов. В данной статье рассматриваются практики обеспечения устойчивости на уровне программного кода, в частности в контексте серверных приложений, реализованных на языках Python и Java.

Особое внимание уделяется методам повышения надёжности при временных сбоях, включая: повторные попытки выполнения операций с экспоненциальной задержкой (exponential backoff), использование шаблона circuit breaker, механизмы плавной деградации функциональности (graceful degradation), задание таймаутов, реализация идемпотентности, ограничение одновременных вызовов (bulkhead isolation), а также внедрение систем мониторинга и алертинга. Приводимые примеры охватывают типовые сценарии — обращение к внешним API, взаимодействие с базами данных и выполнение фоновых задач.

Читать далее

Как полюбить математику и подружиться с ней на всю жизнь, если ты уже не школьник

Level of difficultyEasy
Reading time10 min
Views111K

«Вспоминаю, как в 7-м классе ничего не понимал, когда мы начинали разбирать тригонометрию. С учителем мы не смогли найти общий язык, поэтому к 8–9-му классу я был уверен, что никогда не буду заниматься математикой, а уж тем более сидеть по несколько часов в день, утыкаясь в учебники Беклемишева или Кожевникова и параллельно просматривая лекции Физтеха…»

Всем привет! Идею этой статьи я вынашивал довольно долго, пока не набрался опыта в том, что сейчас стало моей каждодневной практикой. Надеюсь, мой опыт поможет кому-то из вас комфортнее и эффективнее подойти к изучению математики (а может, и других наук). Предлагаю познакомиться:

Меня зовут Ренат, мне 23 года, я родился в Москве, окончил обычную школу и вплоть до 19 лет не понимал, чем хочу заниматься — что называется «что меня драйвит». Сейчас живу на Кипре, работаю тут аналитиком, продолжаю параллельно учиться в России и скоро заканчиваю там университет.

За последние несколько лет я успел поработать аналитиком в Ozon, затем продуктовым аналитиком в Тинькофф (ныне Т-банк), перешёл в лондонский стартап, а сейчас тружусь над проектами в сфере Trust & Safety. И вот в один прекрасный день я решился «серьёзно ботать математику»: уже несколько месяцев уделяю 10–15 часов в неделю задачам, лекциям и подготовке к поступлению в магистратуру (решая вступительные от МГУ, ВШЭ, МФТИ). Именно об этом пути — как я ищу мотивацию, борюсь с прокрастинацией и стараюсь не выгореть — я и хочу вам рассказать.

Читать далее

Почему я использую doc-as-a-code

Level of difficultyMedium
Reading time12 min
Views13K

В этой статье я постараюсь рассказать и показать, почему я использую подход doc-as-a-code, как помогает git системному аналитику и зачем это всё.

Читать далее

Deckhouse Prom++: мы добавили плюсы к Prometheus и сократили потребление памяти в 7,8 раза

Level of difficultyHard
Reading time18 min
Views14K

Хотя Prometheus и стал стандартом мониторинга для микросервисов в Kubernetes, он потребляет слишком много ресурсов. А что, если мы скажем, что добавили пару плюсов к Prometheus и получили почти бесплатный мониторинг? Все подробности — под катом.

Узнать о Deckhouse Prom++

Часть 1. Обзор подходов RAG

Level of difficultyEasy
Reading time9 min
Views16K

Языковые модели сталкиваются с такими проблемами, как галлюцинации, устаревшие знания и непрозрачные, неотслеживаемые процессы рассуждений. RAG решает эти проблемы, интегрируя знания из внешних баз данных. В этом обзорном цикле статей подробно рассматривается развитие парадигм RAG, включая наивный RAG, продвинутый RAG и модульный RAG. В ней тщательно анализируется трёхкомпонентная основа RAG, включающая поиск, генерацию и дополнение. В статье объясняются передовые механизмы, что позволяет глубже понять их идею. Кроме того, в цикле представлены современные методы оценки и бенчмарки технологий RAG. В заключительной (5-й части) авторы описывают текущие проблемы и указывают перспективные направления для исследований и разработок.

Читать далее

Пишем стек TCP/IP с нуля: основы TCP и Handshake

Level of difficultyEasy
Reading time9 min
Views12K

Первая часть: Ethernet, ARP, IPv4 и ICMPv4

Пока наш стек TCP/IP пользовательского пространства содержит минимальные реализации Ethernet и IPv4. Настало время заняться пугающим Transmission Control Protocol (TCP).

TCP, работающий на четвёртом (транспортном) сетевом слое OSI1, отвечает за починку ошибочных подключений и сбоев в доставке пакетов. TCP — «рабочая лошадка» Интернета, обеспечивающая надёжную связь практически во всех компьютерных сетях.

TCP — не особо новый протокол, первая его спецификация вышла в 1974 году2. С тех пор многое поменялось, TCP дополнился множеством расширений и исправлений3.

В этом посте мы изучим базовую теорию TCP, а также рассмотрим заголовок TCP и поговорим об установке соединения (TCP handshaking). Под конец мы продемонстрируем первую функциональность TCP в нашем сетевом стеке.

Читать далее

Как я победил в RAG Challenge: от нуля до SoTA за один конкурс

Level of difficultyMedium
Reading time23 min
Views36K

Когда новичок пытается построить свою первую вопросно-ответную LLM систему, он быстро узнаёт, что базовый RAG - это для малышей и его нужно "прокачивать" модными техниками: Hybrid Search, Parent Document Retrieval, Reranking и десятки других непонятных терминов.
Глаза разбегаются, наступает паралич выбора, ладошки потеют.

А что, если попробовать их все?
Я решил потратить на подготовку к соревнованию 200+ часов и собственноручно проверить каждую из этих методик.
Получилось настолько удачно, что я выиграл конкурс во всех номинациях.

Теперь рассказываю, какие техники оказались полезными, а какие нет, и как повторить мой результат.

Читать далее

Планировщик Go — самый подробный гайд простым языком

Level of difficultyMedium
Reading time27 min
Views52K

Давайте спроектируем с нуля планировщик Go — начнём с самой простой и понятной наивной реализации, а затем шаг за шагом будем разбираться, какие изъяны в ней есть, и придумывать как их решать, постепенно усложняя общую модель.

Это один из лучших способов понять сложную систему или концепцию — пройти путь её поэтапного проектирования. Система сложна, осознать её очень непросто, но мы разобьём её на простые шаги, понять которые очень легко. После этого пазл сам собой сложится в голове, и общая картина системы будет для вас такой же простой и очевидной.

Приступить к проектированию

Скриншотное тестирование во фронтенде: современный подход к поиску визуальных багов

Reading time11 min
Views12K

За последние годы скорость развития технологий для создания фронтенд-приложений выросла в разы. Новые фреймворки, библиотеки, инструменты сборки и подходы к разработке появляются практически каждый год. Однако, несмотря на это, основная точка взаимодействия пользователя с продуктом остаётся неизменной — это интерфейс. Именно он формирует впечатление о продукте и, по сути, является окончательной «витриной» всей вашей работы.

Традиционные подходы к тестированию на многих уровнях уже не успевают за реалиями разработки: ручное тестирование становится слишком трудоёмким, а написание unit- или end-to-end-тестов не всегда позволяет отследить именно визуальные изменения. И здесь на помощь приходит методология скриншотного тестирования — мощный инструмент для выявления визуальных багов, появляющихся в интерфейсе. Он позволяет убедиться в том, что ваш продукт отображается так, как задумано, и избавляет команду от многих сюрпризов.

Читать далее

Почему мы построили монолит на чистой архитектуре. И почему это взбесило системных аналитиков

Level of difficultyMedium
Reading time12 min
Views19K

Привет! Меня зовут Павел Лукьянов, я заместитель CTO в AGIMA. На одной из прошлых работ мы с ребятами попробовали внедрить так называемую чистую архитектуру на монолитном проекте. И это был интригующий опыт. Во-первых, мы начали намного рациональнее подходить к оценке задач. Во-вторых, заметно сократили time-to-market. А в-третьих, сильно разозлили наших аналитиков. Считаю, такими впечатляющими результатами стоит делиться.

Читать далее

HMM: ловим мошеннические транзакции

Reading time5 min
Views5.7K

Три года я проработал в Сербии iOS-евангелистом - было два профильный проекта и один Machine Learning-овый.

Если вам стало интересно - добро пожаловать в мир HMM.

Читать далее

Как я сделал RAG для своей компании

Level of difficultyMedium
Reading time8 min
Views19K

Появилась свободное время, и я решил сделать RAG (Retrieval Augmented Generation) для нашей компании. Компания небольшая, но документации технической и бизнес накопилось очень много, в основном на wiki.

Цель - подключить бота в slack, который быстро может выдать инфу по нужной теме.

Источник знаний:

Читать и срочно делать свой RAG

Конспект по архитектуре ПО и System Design

Level of difficultyMedium
Reading time1 min
Views37K

Это компиляция основных знаний по проектированию архитектуры ПО, которые мне удалось собрать. Конспект доступен по ссылке на Miro-доску.

Можно сказать, что это взгляд на System Design с точки зрения фронтенд-разработчика, который пытается разобраться в теме.

Читать статью целиком

Модель C4 в Structurizr: шаблоны для системного аналитика

Level of difficultyEasy
Reading time8 min
Views4.4K

Привет Хабр! Меня зовут Татьяна Ошуркова, я разработчик и системный аналитик. Большой объем документации и её классическое представление сегодня нередко уходят на второй план, а популярность подхода «Документация как код» (Docs as Code) растет с каждым днем. Поэтому сейчас особенно актуально использование инструментов для текстового описания различных диаграмм.

Одним из таких инструментов для моделирования архитектуры программного обеспечения является Structurizr. В этой статье я разберу построение диаграмм модели C4 с его использованием и дам их исходное описание.

Читать далее

Deep Learning в иллюстрациях: Рекуррентные нейронные сети

Level of difficultyEasy
Reading time14 min
Views9.5K

Рад приветствовать вас в очередной части нашего иллюстрированного погружения в Deep Learning! Сегодня мы будем разбираться в рекуррентных нейронных сетях. Мы будем обсуждать уже хорошо знакомые нам понятия, такие как входы, выходы и функции активации, но с неожиданным сюжетным поворотом.

Читать далее

Как сделать красивое резюме используя JSON

Level of difficultyMedium
Reading time5 min
Views12K

Я устал от постоянного редактирования дизайна резюме и решил действовать по-своему. В статье я рассказываю, как мне удалось создать инструмент, который позволяет хранить все сведения о моем опыте в одном месте и обновлять их без лишних хлопот.

Если вам знакомо чувство, когда форматирование отнимает много времени – читайте мой опыт разработки решения, которое избавляет от постоянных правок и помогает сосредоточиться на самом главном.

Буду рад услышать ваши идеи в комментариях к статье.

Читать далее

Документация в проекте

Reading time5 min
Views3.9K

Привет, Хабр! В этой статье поговорим о ключевой роли документации в проектах разработки программного обеспечения и о том, почему важно подходить к её созданию профессионально, соблюдая стандарты и лучшие практики на примере backend-проекта.

Читать далее

Математика для взрослых. Дорожная карта от выпускника Хармфульского клуба математики

Reading time9 min
Views73K

Математика для взрослых. Дорожная карта от выпускника Хармфульского клуба математики.

(1) Школа. (2) Матанализ. (3) Аналитическая геометрия. (4) Линейная алгебра.

Все плейлисты, материалы, курсы в открытом доступе и бесплатны.

Читать далее

SSL и SSL-сертификаты для новичков

Level of difficultyEasy
Reading time8 min
Views38K

Представляю вашему вниманию перевод статьи SSL and SSL Certificates Explained For Beginners. Я долго разбирался с SSL, сертификатами, центрами сертификации - это единственная статья, после которой у меня что-то отложилось в голове :) Поэтому возникла идея перевести ее и донести до широких масс.

Читать далее

Information

Rating
3,310-th
Location
Россия
Registered
Activity

Specialization

Fullstack Developer, Web Developer
Middle