Date | Title | Description |
13.09.2024 | Navigating the Microservices Maze: A Guide for Developers | In the world of software development, microservices are the new black. They promise flexibility, scalability, and the ability to innovate at lightning speed. But diving into microservices can feel like stepping into a labyrinth. Developers ... |
13.09.2024 | Тестирование исключений | Размышления о тестировании за пределами «идеального сценария» (happy path).
Разработка через тестирование (TDD) — это отличный метод, который позволяет быстро получать обратную связь по идеям дизайна и реализации, а также быстрее прийти к р... |
12.09.2024 | Микросервисы для тех, кто прикидывается разработчиком. Часть 2 | И вот настал тот день, когда я наконец соизволил встать с дивана и дописать следующую статью о микросервисах. Кто не в теме - в прошлой части мы выяснили, как сильно неправильная пунктуация и тупые приколы могут раздражать. Ну и немного обс... |
04.09.2024 | Диаграммы последовательности — единственная хорошая вещь, которую UML привнес в разработку ПО | От переводчика:
Я веду телеграмм‑канал, посвященный системному анализу, и провожу тренинги, и в какой‑то момент задался вопросом — а актуален ли сейчас UML? Если посмотреть обсуждения на SO, Reddit'e и в блогах — видно очень много постов в ... |
03.09.2024 | Building a Robust API: Lessons from a Decade of Development | In the fast-paced world of technology, building a reliable API is akin to constructing a bridge. It must withstand the test of time, handle heavy traffic, and remain flexible enough to adapt to changing needs. The journey of creating a robu... |
03.09.2024 | Тестирование ML систем | Приходят как-то на синк разработчик, тестировщик и time.sleep(1), а он им и говорит: ребята, мы что, в анекдоте?
→ Ну почти: они в подводке к статье про то, как тестировать мл системы, что бы не потерять $100k.1. Зачем тестировать ML-систем... |
02.09.2024 | Как создать идеальную команду | Всем привет. Знакомые, коллеги, друзья, часто спрашивают меня, как построить команду. «Вот ты свои строишь так, что они спустя некоторое время горы сворачивают, хотя отдельные сотрудники не являются гениями. Как ты это делаешь?» Как‑то само... |
28.08.2024 | От десятков до сотен тысяч RPS: как мы создали API, который развивается 10 лет без дропа обратной совместимости | Привет! Меня зовут Вадим Клеба, я руковожу командой бэкенд-разработки в Телемосте. Последние девять лет я разрабатываю высоконагруженные распределённые системы. Раньше я разрабатывал search-as-a-service-решение с эффективным полнотекстовым ... |
08.08.2024 | Владелец кода, отзовись! Как построить и применить систему владения кодом | Привет, Хабр! Меня зовут Марат, я работаю Android-инженером в большом проекте в приложении СберИвестиции. Над ним трудится около 30 разработчиков и множество кроссфункциональных команд, написано более миллиона строк кода, расположенного в б... |
05.08.2024 | ООП не определяет архитектуру проекта | Изначально этот материал планировался как урок в PHP-курсе по полиморфизму. Но он, в конце концов, перерос сам урок, и я решил сделать из него отдельную статью. В ней практически ничего PHP-специфичного, поэтому рекомендуется для прочтения ... |
30.07.2024 | Инверсия управления Контейнеров и паттерн Инъекции Зависимостей — перевод | Это перевод статьи Мартина Фаулера “Inversion of Control Containers and the Dependency Injection pattern
В сообществе Java наблюдается бурный рост числа легковесных контейнеров (lightweight containers), которые помогают собрать компоненты и... |
27.07.2024 | The Art of Reading: A Guide to Essential and Avoidable Books | Books are windows to new worlds. They can inspire, educate, and transform. Yet, not all books are created equal. Some are gems, while others are duds. In this article, we will explore a curated list of must-read books that can enhance your ... |
23.07.2024 | Мой список лучших и худших книг | Сегодня я расскажу про книги которые помогли мне узнать что-то новое и полезное, а также расскажу про те книги, которые не в коем случае не надо читать. Место в списке ничего не значит, книги про разное и расставить их в топ невозможно.Спис... |
23.07.2024 | Стабы и моки нарушают инкапсуляцию | Отдавайте предпочтение фейкам, а не динамическим мокам.
С некоторых пор я предпочитаю использовать фейки вместо стабов и моков, поскольку использование фейковых объектов вместо других тестовых дублёров делает тестовые наборы более надёжными... |
26.06.2024 | Анализ влияния тестирования | Test Impact Analysis (TIA, анализ влияния тестирования) — это современный способ ускорить этап автоматизации тестирования, который работает путём анализа графа вызовов исходного кода. Благодаря этому можно определить, какие тесты необходимо... |
25.06.2024 | Как отказаться от скриншотов в тестировании | Часто ли вы сталкивались с ситуацией, когда тесты падали из-за небольшой разницы между скриншотами? Например, не успел исчезнуть спиннер, не докрутился скроллбар, уведомление исчезло чуть быстрее, чем нужно и так далее.
Часто ли вы сталкива... |
24.06.2024 | О неотъемлемой сложности систем | В зависимости от личных предпочтений и потребностей, от уровня абстракций, на котором моделируется мир, а также от места в спектре между идеализмом и цинизмом, можно с полным правом сказать, что работа разработчиков ПО заключается в следующ... |
22.06.2024 | Мартышка и АйТи | Generated by Dall-E 4Введение
День добрый, господа хорошие. На данный момент я в IT уже порядка 15 лет. Большую часть времени я был разработчиком, и даже уход в ветку менеджмента скорее дал толчок к работе над личными пет-проектами, чем к о... |
20.06.2024 | Клятва на крови: контрактные тесты с Pact в .NET. Часть первая | Вторая часть статьи о тестировании асинхронных сценариев и PactBroker - тут.
Необходимость написания тестов каждый определяет сам для себя. Модульные и интеграционные тесты вполне могут спасти нас от ошибок, вызванных нашей забывчивостью: у... |
17.06.2024 | Древние свитки CI/CD: смыслы, которые мы потеряли | Привет, Хабр. Меня зовут Владимир Утратенко, я — Head of Infrastructure and Security в Uzum Market. У меня богатый опыт найма DevOps-инженеров, ведь последние 6 лет я — нанимающий менеджер. А ещё много лет подряд занимаюсь DevOps как модель... |
10.06.2024 | Интеграционные тесты | Интеграционные тесты помогают определить, правильно ли работают после соединения разные юниты программного обеспечения, которые были разработаны независимо друг от друга. Термин «интеграционные тесты» стал размытым даже в рамках неточных ст... |
05.06.2024 | Избавляемся от легаси: паттерн «Перехват Событий» | Когда мы постепенно переводим легаси систему на новые рельсы, возникает множество случаев, когда само легаси и то, чем мы его заменяем должны взаимодействовать. Поскольку внесение изменений в легаси — это всегда долго, дорого и сложно, нам ... |
22.05.2024 | Распределённый BPMS. Опыт Московской Биржи | Всем привет!
Меня зовут Сергей Максимов и я руковожу разработкой в Центре Управления Процессами (ЦУП) Московской Биржи. В статье я хочу рассказать о нашем опыте автоматизации бизнес-процессов (БП), когда система должна быть не только удобно... |
16.05.2024 | µDjango — технология создания асинхронных микросервисов | µDjango — технология для асинхронных микросервисов
Примерно 5 годами ранее появления FastAPI была обнародована идеология построения легковесных микросервисов на Django, которая стала актуальной только после внедрения асинхронности в этом фр... |
15.05.2024 | Бегство от реальности: как перестать подгонять свой код под устаревшие шаблоны | Привет, Хабр!
Как описать хороший код в трех словах? Исходя из опыта — это код, который [приятно поддерживать и эксплуатировать]. СОЛИД, SOLID, СОЛИД... Редко код ревью обходится без упоминания этих принципов, но для разработчика это не озн... |
03.05.2024 | Lombok — как с ним жить, а не страдать или вариант best practics для lombok | Когда я впервые увидел - lombok, у меня возникло, дикое сопротивление. Было очевидное ощущение, что что-то не так. Я думаю, у многих консервативных разработчиков возникло такое же ощущение. Однако, lombok популярен. Люди его любят, люди его... |
29.03.2024 | Проектируем микросервисы с Reactive Manifesto: 4 принципа распределенных систем | Работаете с распределенными системами или только пытаетесь к ним подобраться? Проектировать их с нуля бывает сложно и страшно: чтобы учесть все нюансы, нужен определенный багаж знаний.
На помощь приходит Reactive Manifesto — документ, котор... |
28.03.2024 | А в чем проблема работать с файлами? | Приветствую.
Год назад меня сильно увлекла тема отказоустойчивости приложений. Я начал изучать различные аспекты ее реализации в программах и больше всего меня заинтересовал процесс работы с диском. Ресурсов для изучения много, но они все р... |
18.03.2024 | Анемичная модель предметной области и логика в сервисах | Анемичная модель предметной области (Anemic domain model) это такая модель, где сущности содержат только свойства, а бизнес-логика находится в сервисах. Ее противоположность это богатая модель предметной области (Rich domain model), где лог... |
15.03.2024 | Элегантный стек данных для встроенной аналитики | Контекст
По работе мне доводилось иметь дело с аналитическими стеками любых конфигураций и размеров. Мы на собственном опыте изучили, что цена стека для встроенной аналитики данных, расположенного за фронтендом, может моментально вырасти на... |
13.03.2024 | Тестирование без моков: язык паттернов. Часть 2 | Продолжение первой части.Паттерны инфраструктуры
Инфраструктурный код предназначен для взаимодействия с внешним миром. Хотя он может содержать некоторую логику, она должна быть направлена на облегчение работы с инфраструктурой. Всё остально... |
07.03.2024 | Тестирование без моков: язык шаблонов. Часть 1 | Автоматизированные тесты очень важны. Без них программистам приходится тратить огромное количество времени на ручную проверку и исправление кода.
К сожалению, многие автотесты также тратят огромное количество времени. Простым и очевидным ва... |
29.02.2024 | Изоляция в тестах с Kafka | Опыт запуска Kafka в тестовых сценариях достиг высокого уровня удобства благодаря использованию Testcontainers и улучшенной поддержке в Spring Boot 3.1 с помощью аннотации @ServiceConnection. Однако написание и поддержка интеграционных тест... |
16.02.2024 | Микросервисы и RabbitMQ в Docker | Микросервисная архитектура предполагает декомпозицию монолитного приложения на несколько полностью независимо развёртываемых и масштабируемых сервисов. За пределами этого базового определения, то, что представляет собой микросервис, может б... |
12.02.2024 | Анализируем виды тестов для Frontend | С развитием веба сайты превратились в сложные приложения, которыми ежедневно пользуются десятки и сотни миллионов людей: почта, облачные хранилища, соцсети, маркетплейсы, стриминговые платформы и т. д. И каждое из них должно работать коррек... |
09.02.2024 | Меняем моки репозиториев на in-memory реализации | Одним из важнейших аспектов тестирования наряду с поиском ошибок в приложении является время, необходимое для его проведения. Если тестирование приложения занимает от нескольких минут до нескольких часов, то оно не подходит для разработки с... |
12.01.2024 | Четыре метрики, изменившие мой проект | Привет, Хабр! Я Федор Щудло, team lead и fullstack-разработчик. Всего я в разработке 15 лет, из них 11 в роли team lead.
Три года назад я сменил работу и занялся проектом, состояние которого можно описать кратко: ему 25 лет.
За этот долгий ... |
07.01.2024 | Чистая архитектура на примере | Приветствую!
Недавно познакомил друга с понятием "Чистая архитектура". С того момента он часто атаковал меня вопросами по типу "А как это сделать? А как то сделать?". В один момент хотел просто кинуть ему ссылку с тутори... |
30.12.2023 | Тестирование новых версий сервисов с помощью Canary Deployment (Kubernetes) | Обзор текущей ситуации.
Что такое Canary deployment.
Развертывание Canary Deployment c помощью Kubernetes.
Разделение трафика
Мониторинг и проверка
Масштабирование canary-deployment.
Заключение.
Список источников.
Не так давно я начал изуче... |
29.12.2023 | Как Додо Пицца доставляет свежий код: история мобильного CI для iOS | Мобильная разработка под iOS особенная: собрать приложение можно только на macOS, среда разработки по сути только одна, большая часть принятого в сообществе тулинга написана на Ruby, свой пакетный менеджер появился только пару лет назад. Тя... |
20.12.2023 | Победа над ORM путем кодогенерации | Сразу хочу отметить перед читателем, что это не просто вольные рассуждения на тему, а в том числе и презентация моей библиотеки для Python, которую можно найти на github и установить через pip, и которая трудится в моей многопользовательско... |
08.12.2023 | Детализированные стратегии кэширования динамических запросов | Сегодня я хотел бы поговорить о стратегиях кэширования для совокупных запросов к часто обновляемым данным, основанным на времени. На предыдущем месте работы я провел немало «мозговых циклов» и с удовольствием поделюсь некоторыми своими нахо... |
24.11.2023 | Сервисы дружитес. Как платформа упрощает создание интеграций без ошибок | Всем привет! Кратко обо мне: меня зовут Никита и я уже третий год работаю над тем, чтобы платформа СберМаркета становилась лучше день ото дня. Мой основной язык программирования — Go, но, учитывая специфику платформенной разработки, еще и b... |
12.11.2023 | Утверждение, что «199 из 200 соискателей не умеют писать код», некорректно | Насколько правомерно утверждение, что 199 из 200 соискателей вакансий в сфере программирования по факту программировать не умеют? Откуда взялось это утверждение, и какие основания под собой имеет?
Заголовок получился громоздкий, но в его ос... |
30.10.2023 | О сложности и монолитах | Изображение сгенерировано с помощью DALL·E. Запрос: a complex monolith in a server room, with the faces of IT consultants with suits engraved in it with twisted faces, mathematical formulations about complexity floating around, and with a m... |
19.10.2023 | Простые шаги к эффективному code review | Всем привет! Меня зовут Владислав Шиханов, я ведущий программист в CDEK. В нашей компании работает 500+ IT-специалистов, именно мы создаём продукты и сервисы, из которых и состоит СДЭК. Моя команда разрабатывает сервисы для автоматизации пр... |
16.10.2023 | Зачем нужны модульные тесты и как заставить их работать на вас | Программное обеспечение
Преимущество программного обеспечения заключается в том, что оно может изменяться. Именно поэтому его называют "soft" обеспечение - оно более податливо, чем аппаратное обеспечение. Отличная команда инженеро... |
09.10.2023 | Микросервисы победили. Или не совсем | «Мы хотим сделать систему по учету персонала. Только у наших архитекторов есть требование, что все у нас должно быть на микросервисах». Это, пожалуй, самый бесячий заход, который нам приходится слышать, как разработчику Jmix – платформы быс... |
07.10.2023 | Масштабирование приёмочных тестов | Эта глава является продолжением главы "Введение в приёмочные тесты". Готовый код этой главы можно найти на GitHub.
Приёмочные тесты очень важны, они напрямую влияют на вашу способность уверенно развивать систему с течением времени... |
06.10.2023 | Введение в приёмочные тесты | В компании $WORK мы столкнулись с необходимостью "плавного завершения работы" наших сервисов. Грациозное завершение работы позволяет убедиться в том, что система правильно финиширует перед завершением. В качестве аналогии можно пр... |
03.09.2023 | Моки и мокизмы, программистский идеализм, правильная изоляция в тестировании | Не так давно у меня появился интерес узнать, какие вообще нынче есть подходы и отношения к Юнит тестированию. Сделано это было скорее в познавательных целях. Сравнив труды по популярности, я решил ознакомиться с книгой "Unit Testing: P... |
29.08.2023 | Инструменты тимлида: как управлять техническим бэклогом | Привет! Меня зовут Дима Симушев, я технический руководитель юнита Fashion&Electronics в Авито. И это ещё одна статья про управление техническим бэклогом. В отличие от многих других статей, я не хочу фокусироваться на классификации и при... |
17.08.2023 | Зачем писать юнит-тесты на фронтенд? | Привет, хабр! Меня зовут Александр, я работаю фронтенд-разработчиком в компании Nord Clan.
Сегодня речь пойдет про тесты… Про юнит-тесты. Думаю, что почти все слышали про юнит-тесты, пробовали их писать, и, возможно бросали это «гиблое дело... |
23.07.2023 | Элегантные «квантовые» микросервисы | 1. Введение
Полтора года назад автор опубликовал на Хабре статью "Математические аспекты хорошего кода" [1]. Примерно в это же время автору случилось войти в команду, которой предстояло разработать микросервисную АСУ.
Изложенные в... |
18.07.2023 | Почему разрабатывать ПО действительно сложно? | Неизменные изменения
Давайте начнем с тривиального, но неоспоримого факта: программное обеспечение постоянно развивается – устаревает и обновляется, видоизменяется и дает дорогу новому.
Заметным исключением является наборная система TeX, ра... |
11.07.2023 | Изнанка архитектуры, или Менять нельзя оставить | Около десяти лет назад мы в CUSTIS реализовали систему распределения товара для «Спортмастера». Со времени ее запуска изменилось многое: корректировались цели заказчика, менялись возможности и потребности рынка, появились новые способы авто... |
05.07.2023 | Как я проходил опросник по c# | Только что мне предложили пройти анкету с вопросами по c#, ну я быстро ответил и довольный отправил. Удивило потом то что я оказывается мало на что ответил правильно. Было странно, вопросы то вроде простые, ну я начал разбираться и сравнива... |
27.06.2023 | Stop the world в Kafka или спасти рядового consumer :) | Меня зовут Андрей Бугаков, разработчик в компании Datanomica. Я решил написать эту статью после ошибки в production, думаю, она может оказаться полезной другим разработчикам. Ниже рассказал, как в рамках разработки нового сервиса мы выбирал... |
26.06.2023 | Мобильная разработка за неделю #494 (19 — 25 июня) | В этом выпуске перечисления Swift и осознанная оптимизация Compose, конфетные сетевые запросы и воображаемые проблемы, приложение для поиска друзей, пустые состояния, цвета Ripple, декораторы и многое другое. Заходите!
В нашем Telegram-кана... |
19.06.2023 | Реализация Transactional outbox pattern и немного DDD | Уверен, что многие, кто интересовался подходами к разработке микросервисной архитектуры, знакомы с трудами Криса Ричардсона на эту тему и уже встречали transactional outbox pattern. А для тех, кто не знаком, кратко расскажу основную идею:
В... |
05.06.2023 | Продакты VS Разработчики: как недоверие и отказ от сотрудничества замедляют выход продукта | Секрет успешного стартапа — в тесном сотрудничестве продуктовой команды и команды разработчиков. Но каждая команда по-своему представляет успех в работе и цели, которые нужно реализовать. Например, программисты хотят создать идеально масшта... |
30.05.2023 | Как Cypress развивался в качестве инструмента автоматизации тестирования фронтенда в QuintoAndar | От хакатона 2 года назад до 20+ фронтенд-приложений, выполняющих интеграционные тесты с Cypress. Проблемы и решения, с которыми мы столкнулись при автоматизации тестирования интерфейсов на данный момент.Почему Cypress
Cypress — это мощный и... |
23.05.2023 | О многообразии форм однонаправленных архитектур в Swift | Как SwiftUI и async/await изменили концепцию контейнеров состояний за последние шесть лет
Я уже писал о концепции “контейнеров состояний” в 2017 году. Шесть лет спустя мне все еще нравится строить на их основе большинство своих приложений, ... |
16.05.2023 | Тебе не нужно классическое ООП в твоём бэкенд микросервисе | Результат генерации по запросу «Классическое объектно-ориентированное программирование», стиль: 4k. Все изображения в статье сгенерированы нейросетью Kandinsky 2.1.
Заявление звучит довольно громко и, я бы даже сказал, провокационно. Но в п... |
11.05.2023 | Thoughtworks Celebrates 30 Years of Software Excellence and Innovation | HONG KONG, May 11, 2023 /PRNewswire/ -- On May 10, 2023, Thoughtworks (NASDAQ: TWKS), a global technology consultancy that integrates strategy, design and engineering, celebrates our 30-year anniversary of solving our clients' most complex ... |
08.05.2023 | Про тестирование мобильных приложений. Часть 3. Cквозное (UI, e2e) тестирование | Ранее мы с вами познакомились с пирамидой тестирования и ее основанием. В данной же статье предлагаю перейти к сразу к вершине пирамиды.
На вершине пирамиды, представленной в статье 1, расположены сквозные тесты. В контексте сквозных тестов... |
04.05.2023 | Укрощение имен. Как нейминг помогает оптимизировать код | Что такое имя? Имя — это ярлык, дескриптор, указатель в вашей памяти. Это краткое изложение сложной идеи. Оно позволяет ссылаться на «экономику» или «догфудинг» в середине предложения, избегая развернутого на три абзаца объяснения термина.
... |
30.04.2023 | Оптимизация бэкенда приложения с примерами на Symfony. Часть 2 | Всех приветствую!
Это продолжение серии статей, где мы рассмотрим еще несколько методов, которые помогут улучшить производительность приложения. Мы поговорим о том, как использовать entity manager, unit of work, bulk inserts и batching proc... |
20.04.2023 | Применение InnerSource в энтерпрайзе | InnerSource мне, как инженеру, очень симпатизирует, потому что позволяет сделать цепочку поставки бизнес-ценности децентрализованной. При всей красоте этого подхода у него есть трудности в реализации. Эти сложности можно разделить на технич... |
04.04.2023 | Как эффективно тестировать мобильные приложения? Пятиуровневая пирамида тестирования | Тестирование, вероятно, является одной из самых горячих тем в разработке программного обеспечения. Все согласны с необходимостью качественного тестирования и определенного количества тестов (или покрытия кода). Но каков масштаб, цель и зада... |
31.03.2023 | Как не превратить микросервисы в киберпанк-дистопию | Моя личная сага о микросервисах и книга, которая помогла мне найти путь в светлое будущее
Вашему вниманию представлена квинтэссенция подготовленной мной серии докладов под названием «Распределенное понимание распределенных систем» (“Distrib... |
28.03.2023 | Как прогнать все UI-тесты на мерж-реквесте и не состариться | Рано или поздно большой продукт сталкивается с проблемой количества тестов, а точнее с тем, сколько времени нужно, чтобы их прогнать. При этом не все команды готовы тратить кучу сил на оптимизацию этого процесса. Гораздо проще решить пробле... |
11.03.2023 | Переходите на микрофронтовую архитектуру | Содержание статьи
Что такое микрофронтенд?
Проблема монолитного приложения
На что стоит обращать внимание при выборе архитектуры?
Примеры архитектурных решений
В каких ситуациях стоит использовать Module Federation?
Проблемы
Полезные ссылки... |
07.03.2023 | Data Mesh: что это такое и для чего он нужен инженерам | Команда VK Cloud перевела статью о новом подходе к построению архитектуры данных Data Mesh с помощью lakeFS — системы управления версиями данных с открытым исходным кодом, которая преобразует хранилище объектов в Git-подобные репозитории. Р... |
06.03.2023 | Spring-потрошитель: жизненный цикл Spring Framework | Введение
Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.
Но насколько ... |
18.02.2023 | Гайд по эвент-сорсингу | Считается, что эвент-сорсинг это просто паттерн работы с данными, но применение эвент-сорсинга на деле приводит к большому числу изменений в дизайне приложений. К тому же, сделать эвент-сорсинг правильно не так просто, с одной стороны потом... |
09.02.2023 | Что такое GitOps и почему он (почти) бесполезен | Новый авиалайнер. Входит стюардесса в пассажирский салон: «Вы находитесь на нашем новом авиалайнере, в носовой части самолёта у нас находится кинозал, в хвостовой — зал игровых автоматов, на нижней палубе — бассейн, на верхней — сауна. А те... |
09.02.2023 | Делай нейминг как сеньор | В чём разница между сочинением третьеклассника и статьёй в крупном таблоиде? Любой из нас сходу определит, что есть что. Даже если оба текста описывают одно и то же событие. А чем отличается код сеньора от кода мидла?
Разница в мелочах. В м... |
09.02.2023 | Делай нейминг как сеньор | В чём разница между сочинением третьеклассника и статьёй в крупном таблоиде? Любой из нас сходу определит, что есть что. Даже если оба текста описывают одно и то же событие. А чем отличается код сеньора от кода мидла?
Разница в мелочах. В м... |
31.01.2023 | JavaScript: заметка об операторе конвейера | Привет, друзья!
В этой небольшой заметке я хочу рассказать вам об одном интересном предложении по дальнейшему совершенствованию всеми нами любого JavaScript, а именно: об операторе конвейера (pipe operator) |>.
На сегодняшний день данное... |
27.01.2023 | Фича-тогглы: инструкция по применению | Всем привет! Я Павел, тимлид команды SLA, и занимаюсь оценкой надёжности Авито. В своей прошлой статье я рассказал про стратегии ветвления и Trunk Based Development. Если не читали, переходите по ссылке. А сейчас я хочу рассказать про фича-... |
23.01.2023 | Функциональное мышление | TL;DR: Конструирование приложения с чистой функцией в основе может стать первым шагом к идеалу «функционально-центричной императивной оболочки», что может упростить тестирование приложения и снизить планку его сложности.
Зачем?
Упрощение.
П... |
17.01.2023 | Nextdata launches to transform a vision of ‘data mesh’ into reality
Show your support for our mission by joining our Cube Club and Cube Event Community of experts. Join the community that includes Am... | Nextdata quietly emerged from stealth mode today, providing a glimpse of a company that intends to build technology to help organizations decentralize data at large scale.
The goal of the firm is to realize the concept of the “data mesh” an... |
17.01.2023 | Nextdata launches tools to transform its vision of a ‘data mesh’ into reality
Show your support for our mission by joining our Cube Club and Cube Event Community of experts. Join the community that i... | Nextdata is emerging from stealth mode today with the launch of a new toolset that’s designed to help organizations decentralize analytical data at large scale and finally realize the concept of the “data mesh” and its promise of revolution... |
13.01.2023 | Spring Modulith: достигли ли мы зрелости модульности | Одной из основных причин разработки микросервисов является то, что они обеспечивают четкие границы модулей.
Однако минусы микросервисов настолько велики, что это все равно, что отрубить себе правую руку, чтобы научиться писать левой. Есть б... |
25.12.2022 | Моделирование данных в слоеной архитектуре | Разделение данных на слои
Согласно Мартину Фаулеру при разработке архитектуры полезно разделять на 3 слоя: Презентационный, Доменный и Доступа к данным.
Польза от выделения слоев состоит в:
Уменьшение области внимания при разработке каждого... |
22.12.2022 | Какие проблемы решает Release Train в мобильной разработке | Влияет ли размер приложения и команды на то, как мы его релизим? Давайте представим себе стартап с небольшой командой. В этом случае обычно не задумываешься о процессе релизов: сделал фичу — зарелизил.
А теперь представим большой проект, на... |
15.12.2022 | Key Data And Analytics Trends To Watch In 2023 | Suresh is a Data and AI Engineering lead for the financial services industry at Microsoft and a senior member of IEEE Computer Society. |
02.12.2022 | Мысли о разумном Maintainability в этом несовершенном мире | Привет, Хабр! Сегодня мне хотелось бы поговорить о такой интересной метрике, как Maintainability - возможность вести доработки и улучшения при создании сложных систем. Ведь при развитии любого программного продукта возникает вопрос, сколько... |
02.12.2022 | Как провести эффективное тестирование мобильных приложений? Стратегия пятиуровневой пирамиды тестов | Никто не спорит с тем фактом, что в процессе разработки необходимо проводить качественное тестирование, которое обеспечит достаточное тестовое покрытие. Но какова область и цель тестов? В какой среде их нужно проводить и как быть с зависимо... |
19.11.2022 | Шаблоны согласования потока событий в реальном времени | Контекст
В настоящее время многие программные системы полагаются на обработку потока событий в реальном времени. При обработке потока событий согласование данных является важным этапом/процессом, который необходимо выполнить для обеспечения... |
13.11.2022 | Как НЕ надо строить надежные системы | При проектировании системы знание анти-паттернов и подвохов зачастую оказывается более полезным, чем знание самих паттернов. Отталкиваясь от этой идеи, я решил написать данную статью, чтобы рассказать о факторах, которые, на мой взгляд, при... |
21.10.2022 | Исключения из принципа YAGNI | В общем и целом, я убежден в верности принципа YAGNI (You Aren't Gonna Need It – Это вам не понадобится), согласно которому нужно внедрять в ПО функциональность – это касается также универсальности и абстракции, – только когда станет ясно, ... |
20.10.2022 | Service Locator — антипаттерн | Service Locator (или “локатор служб”) — хорошо всем нам известный паттерн. Поскольку он был описан Мартином Фаулером, он должен быть хорошим, ведь так?
К сожалению нет, на практике это классический пример антипаттерна, который следует избег... |
05.10.2022 | Очередь недоставленных сообщений для обработки ошибок в Apache Kafka | Любому надёжному конвейеру потоковой обработки данных нужны механизмы обнаружения и обработки ошибок. В этой статье вы узнаете, как реализовать обработку ошибок с помощью очереди недоставленных сообщений (Dead Letter Queue) в инфраструктуре... |
04.10.2022 | Пара слов о паттерне “Пассивное Представление” (Passive View) | Компоненты, связанные с логикой отображения и поведением приложения, перенесены в контроллер, в результате чего вся работа по управлению состоянием виджетов выполняется исключительно в контроллере.
Это выдержка из моей книги Further Enterpr... |
28.09.2022 | Стратегии тестирования микросервисов | В оригинальной статье используется большое количество терминов, для которых в русском языке нет устоявшихся аналогов. Поэтому в спорных моментах будут указываться как переведенные термины, так и оригинальные английские понятия.
От автора: в... |
22.09.2022 | Ловушка приоритетов Angular Guards | Angular имеет отличный инструмент для ограничения навигации между страницам из коробки. Но, как и любом большом проекте, у него есть свои подводные камни. Сегодня я расскажу вам об одном из них.
Перед прочтением статьи освежите знания по An... |
12.09.2022 | Миграция монолитов в микросервисы на практике | На тему миграции с монолита на микросервисную архитектуру были написаны замечательные статьи, например, эта, возможно, относится к лучшим примерам. Преимущества и недостатки этих архитектур должны быть достаточно очевидны. Однако я хочу пог... |
12.09.2022 | Как запустить DevOps-конвейер на полную мощность | У нас в Газпромбанке сложилась довольно интересная ситуация. Банк относительно недавно начал активно работать с розницей, которая как локомотив начала тянуть все внутрибанковское IT и менять характер работы всех подразделений.
Одна из главн... |