DevFM
Open in Telegram
О разработке: AI, технологии, инструменты, system design, процессы, команды Для связи @sa_bul
Show more2 902
Subscribers
-124 hours
+107 days
+730 days
Posts Archive
2 902
Как находить время "на почитать"
Я всегда любил читать. Раньше больше художку, потом больше нон-фикшн. Однажды заметил, что совсем перестал читать. И не из-за того что не хочется, а потому что всегда находится что-то важнее, всегда есть какой то вытесняющий фактор.
В итоге задумался, а что я делаю каждый день, на что я всегда нахожу время? Каждый день я пью кофе, полчаса точно, а значит, именно это время я могу выделить на почитать. И так делаю уже пару лет. Каждый день минимум полчаса на чтение — неплохой результат, если до этого было ноль.
Разумеется, не обязательно пить кофе по утрам, и, вероятно, вы и так вдоволь читаете, но вектор понятен.
Мы писали про анализ предметной области перед стартом проекта и откуда вообще брать источники технической литературы. Рекомендации от нас по интересным книгам вы найдёте по тегу #books.
Какую последнюю книгу вы прочитали и готовы рекомендовать?
#edu
2 902
Event storming для проектирования сервисов
Скажу честно, я в event storming не бум-бум и никогда не применял на практике. На просторах хабра нашел вводную статью — Моделирование микросервисов с помощью Event storming.
Event Storming помогает быстро получить стратегический дизайн, определив границы, в рамках которых технические решения можно принимать автономно.
Сомневаюсь, что буду применять на практике этот метод, но какие-то идеи точно стоит взять на вооружение. Например, правильное распределение приоритетов разработки и выделение контекстов.
А вот официальный сайт, если заинтересовались концепцией.
#systemdesign
2 902
Пятничное развлекательное
Anki-карточки — отличный способ набить словарный запас, заучивая фразы и предложения на релевантные для вас темы.
Ещё давно, когда ничего не знал про anki, использовал этот метод. Делал подписи на бумажках, чтобы готовиться к госам и ботать формулировки разных, не очень интересных теорем.
Существующие решения обычно просят бабосики и имеют перегруженный функционал. Недавно нашли приятное опенсорсное решении — Scholarsome (github) с минимально достаточным функционалом.
#fun #edu
2 902
Как документировать архитектуру
В архитектуру входят сервисы, базы данных, брокеры сообщений, внешние интеграции и хорошо бы понимать, кто на ком стоял и кто с кем взаимодействует.
Замечательная статья, охватывающая многие аспекты документирования. Начинает автор с главного, объясняя, зачем нужно документировать архитектуру.
В качестве структурного шаблона для документирования предлагается использовать arc42. Для визуализации — C4 model. Кстати, C4 оказалась вполне удобной, и мы активно применяем её у себя.
Из приятного — для arc42 и C4 автор приводит ссылки на хорошие примеры реализации.
В конце автор рассказывает, как можно всё описанное организовать, применяя подход — documentation as code, а так же приводит полезные тулзы для этого.
#systemdesign #tools
2 902
Научитесь эффективно взаимодействовать с другими командами при разработке новых фич и создавать реально качественный technical design proposal на курсе System Design
За 4 недели вы поймёте как собирать требования, оценивать нагрузку, выбирать подходящие СУБД, масштабировать системы и повышать их надёжность и отзывчивость, а также выделять и последовательно проектировать подсистемы для хранения данных, поиска и аналитики как своими силами, так и с помощью готовых продуктов.
Вы научитесь дизайнить сервис такси, приложение для знакомств и любую высоконагруженных систем — всё под руководством Валерия Бабушкина, Vice President, Data Science в Blockchainꓸcom.
А также поймёте, как устроены собеседования в Big Tech, и получите детальный план ответа на собеседовании.
Новый поток стартует уже 17 июля! Ждем вас.
[Зарегистрироваться]
#реклама
2 902
Пятничное развлекательное
Недавно нашел милый гиковский проект Cooklang для тех, кто любит готовить.
Позволяет управлять своими рецептами, составлять по рецепту список покупок. Также есть приложение, веб-морда и даже cli-интерфейс.
А ещё есть видео, где ребята рассказывают, как этим всем пользоваться.
#fun
2 902
Бесплатный курс "Командная строка для разработчиков"
Мы довольно давно готовим молодых python-разработчиков, и начинаем именно с базовых знаний в Linux, прививая желание и умение работать в терминале. Вдохновляясь курсом "Поколения Python" на степике, мы решили сделать свой бесплатный курс "Командная строка для разработчиков", посвящённый терминалу Ubuntu, языку bash и базовому администрированию. Начинающим разработчикам поможем преодолеть неловкость перед текстовым терминалом, опытным разработчикам покажем неочевидные и полезные в работе фишки для увеличения продуктивности.
Курс начинался с оффлайна, а переход в онлайн требует существенной переработки материала. Поэтому релизимся поэтапно, выпуская новые уроки по мере готовности.
Введение и первое занятие уже доступно на степике. Примерная программа курса тут, будем рады замечаниям, дополнениям и лайкам.
#devfm
2 902
Мониторинг — боль
Интересное чтиво на тему мониторинга.
Казалось бы, логи и метрики облегчают жизнь, наблюдаемость системы растет, отладка становится проще. Или не совсем?
Автор проходится по основным моментам логирования и сбора метрик. Описывает боли, с которыми неоднократно сталкивался. Многое из написанного оказалось знакомо.
По каждому из пунктов даются практические советы. Один из интересных подходов, который хочется попробовать — семплирование логов.
Отдельно автор останавливается на трассировке, как на недооценённом инструменте.
В общем, по прочтении статьи появляется пища для размышлений и желание более критически посмотреть на то, что мы собираем.
#skills #logging
2 902
Retrying consumer in Kafka
В кафке консьюмер получает сообщение из топика и приступает к его обработке. Но в процессе обработки могут возникать разного рода проблемы. Если проблема временная, то её можно решить, сделав ретрай через какое-то время.
Кафка не предоставляет возможность пропустить сообщение и вернуться к нему позже.
Самое топорное решение, которое приходит на ум – сделать ретраи на уровне обработчика сообщений. Просто в цикле гонять обработку сообщения, пока не будет успех. Но при такой реализации мы заблокируем процесс обработки новых сообщений из топика.
В статье автор предлагает организовать систему ретраев через добавление новых топиков и специальной логики работы с ними.
После прочтения, возможно, возникнет лёгкий дискомфорт, с ощущением того, что предлагается сделать какую-то вундервафлю. Соглашусь, решение получается громоздкое, но более элегантного я не видел.
#skills
2 902
Путь от монолита к микросервисам
Лёгкая для понимания статья, проводящая грань между монолитом, микросервисным монолитом, микросервисами и так называемым оркестратором бизнес-сервисов (последнее – это какая-то ненаучная фантастика).
Каждый из вариантов имеет свои плюсы и свои недостатки, о которых говорит автор. Пожалуй, самое грустное – зависнуть на микросервисном монолите и словить все проблемы, какие только можно придумать.
Статья мне понравилось ещё тем, что по пути автор даёт ссылки на интересные материалы для погружения в тему. Например, о CirquitBreaker от Мартина Фаулера.
Тема достаточно холиварная, поэтому советую ещё заглянуть в комменты.
#systemdesign
2 902
Типы кабелей
Немного выбивающаяся из общей канвы канала статья, но всё же. Довольно любопытное чтиво для общего развития. В статье рассказывается о разных кабелях с большим количеством картинок.
– силовые кабели
– витая пара и DAC-кабель. Какие категории кабелей бывают и как и что на это влияет: скорость передачи данных, экранирование
– оптика. Что за мода такая, что за сердцевина, какие бывают коннекторы
Из полезного: позволяет немного погрузиться в тему и, например, не растеряться, когда будете выбирать кабель для домашних или рабочих нужд.
2 902
Backup: подборка по базам
Экспертиза в базах данных – супер востребованный скилл среди разработчиков. У нас накопилось приличное количество постов, посвящённых базам данных. Собрали все в один пост, чтобы было удобно.
Практика
– Подробный гайд по работе с json в postgres
– Какой тип данных использовать для хранения строк в postgres
– Куда смотреть, если postgres начала тупить
– Базовые настройки Postgres
– Работа с NULL в Postgres
– Тестирование миграций alembic
– Сравниваем базы данных с помощью data-diff
Теория
– TOAST – проблемы откуда не ждали
– Индексы в PostgreSQL
– Буфферный кеш в PostgreSQL
– Этапы выполнения запросов в PostgreSQL
– ACID в PostgreSQL
–Понимаем EXPLAIN в PostgreSQL
– Миграции без даунтайма
– Храним данные по-разному, в зависимости от цели – создаем аналитическую базу
– Введение в Greenplum и пример реального использования
– Введение в Manticore и сравнение с Elastic
– Тернистый путь к ClickHouse
Эту подборку мы добавим в закреплённое сообщение и будем поддерживать в актуальном состоянии. Пробейте палец вверх, если считаете подобные тематические подборки полезными.
#backup
2 902
Зачем разработчику нужен Linux вообще и терминал в частности
Эта статья существует! Вчерашний анонс из-за путешествий во времени вышел не вовремя. Так зачем вам терминал?
– легко поставить софт
– легко автоматизировать процессы
– легко вспомнить
– легко настроить под себя
легко…(злобный закадровый смешок)
Покажем, чем терминал важен для разработчиков и не только на разных примерах.
#devfm #skills
2 902
За что мы любим командную строку
В повседневной деятельности мы активно применяем командную строку. Иногда слышим вопросы, о том зачем это вообще нужно, вроде и без нее все хорошо? Этот вопрос вполне логичен, если не погружался в эту тему, не пытался решать реальные задачи.
На хабре мы написали легкую статью, где на примерах рассказали за что мы любим командную строку. Профессиональный навык работы с командной строкой – один из шагов к 10х программисту.
2 902
Управление данными в микросервисах
В микросервисной архитектуре у каждого сервиса обычно своя база данных. Для организации доступа одного сервиса к данным другого сервиса нужно либо каждый раз делать запрос к сервису, ответственному за данные, либо иметь копию нужных данных. И тут важен баланс.
Например, у нас есть сервис, который хранит и обслуживает актуальный справочник городов. А навигационный сервис предоставляет информацию о маршрутах общественного транспорта в выбранном городе. Как правильно организовать доступ навигационного сервиса к справочнику городов?
В статье автор рассказывает о способах управления данными в микросервисной архитектуре:
– Дублирование мастер-систем. Каждый сервис хранит и поддерживает данные независимо друг от друга
– API. Сервис, ответственный за данные, предоставляет доступ к данным по API другим сервисам
– DWH. Сервис, ответственный за данные, сливает их в единое хранилище, а другие сервисы имеют доступ к хранилищу
– Очереди. Сервис, ответственный за данные, публикует информацию обо всех изменениях в очередь. А другие сервисы, считывая данные из очереди, хранят на своей стороне и актуализируют.
По каждому способу автор рассказывает о достоинствах и недостатках. Подробнее останавливается на последнем, как на наиболее интересном, и рассказывает о нюансах реализации.
Способ через очереди мне особенно нравится тем, что позволяет делать сервисы более независимыми, хотя он, конечно, более трудозатратный.
#systemdesign
2 902
Попробуйте ruff
Ранее мы рассказывали о целом наборе линтеров, которые постоянно применяем в своих проектах.
Недавно обратили внимание на достаточно молодой и интересный линтер для python – ruff. Он объединяет в себе правила многих других линтеров – по сути всех, которые используем.
Мы уже сделали для себя конфиг и испробовали его на одном из сервисов. Полёт нормальный, ощущения только положительные.
Из плюсов:
– ощутимая скорость. Линтеры у нас прогоняются с помощью pre-commit на каждом коммите, поэтому скорость имеет значение. Пару раз даже ловил себя на мысли, что не делаю лишний коммит, чтобы не ждать прогона линтеров. А ruff отрабатывает практически моментально
– в pre-commit не нужно держать целый зоопарк линтеров. Достаточно один раз сконфигурировать и подключить ruff
Так что категорически рекомендую попробовать. У них, кстати, есть playground для этих целей.
#python
2 902
Backup: май
Архитектура проекта
1. Load balancing
2. Zero-Downtime Deployments with Docker Compose
3. Как проектировать микросервисы
4. Кеширование на бекенде
5. Асинхронное взаимодействие сервисов с применением Kafka
Копаем вглубь
1. Пагинируем по-всякому
2. Как работает ChatGPT
3. Попробуйте HTMX
4. Работа с памятью
Базы данных
1. О производительности Postgres
2. TOAST – проблемы откуда не ждали
Разное
1. Как мы стали делать офигенно длинные собрания, и почему это больше не вселенское зло
2. Роберт Сапольски — Биология религиозности
3. Вы, конечно, шутите, мистер Фейнман!
4. Сравниваем лампы и батарейки
Если пропустили, то подборка за апрель.
#backup
2 902
Пятничное развлекательное
Мы уже говорили о Роберте Сапольски. Хочется порекомендовать ещё одну захватывающую лекцию. На этот раз о религии. Просто послушайте и делайте выводы сами.
А кто хочет лёгкого и интересного чтения обратите внимание на его книгу о жизни и работе в Африке – Записки примата. Необычайная жизнь ученого среди павианов. Путешествия по континенту, исследование влияния стресса на другие биологические показатели, быт местных племен.
#fun #books
