Как стать автором
Обновить
17
0
Артур Геращенко @arturich

Технический менеджер / ex-teamlead

Отправить сообщение

Асинхронный python без головной боли (часть 2)

Время на прочтение9 мин
Количество просмотров63K

Продолжаем вкусно готовить asyncio

Теперь мы уже знаем достаточно, чтобы написать модный асинхронный микросервис, реализующий паттерн "API-шлюз". И попутно познакомимся с асинхронным логгированием и доступом к базе данных.

Выпей меня
Всего голосов 11: ↑10 и ↓1+11
Комментарии17

Пишем веб-приложение вместе с ChatGPT и Stable Diffusion

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров16K

Всем привет! Ни для кого не секрет, что ChatGPT 4, получившая развитие в прошлом году, уже активно внедряется в обиход разработчиков. Во время новогодних каникул я решил испытать новинку, и попробовать разработать совместно с ботом небольшое веб-приложение на базе Angular 17. Что из этого вышло, читайте далее.

Читать далее
Всего голосов 13: ↑10 и ↓3+9
Комментарии34

Представления знаний в интеллектуальных системах, экспертные системы

Время на прочтение7 мин
Количество просмотров92K

Введение


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


Экскурс в историю экспертных систем


История экспертных систем берет свое начало в 1965 году. Брюс Бучанан и Эдвард Фейгенбаум начали работу над созданием информационной системы для определения структуры химических соединений.


Результатом работы была система под названием Dendral. В основе системы формировалась последовательность правил подобных к «IF – THEN». Информационная система не перестала развиваться и получила множество наследников, таких как ONCOIN – информационная система для диагностики раковых заболеваний, MYCIN – информационная система для диагностики легочных инфекционных заболеваний.

Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии5

Стартуем микросервис на Node.js + fastify + Typescript + prisma + mongodb + grpc

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров13K

Зачастую возникает необходимость начать новый микросервис.

Вот и у меня совсем недавно возникла такая потребность. А ведь еще хочется и чего-то новенького попробовать.

Сперва был определен стек и хотя процесс для меня не новый, но я столкнулся с множеством подводных камней. В результате решил сделать этот туториал!

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии4

Как мы внедряли процесс Performance Overview для грейдинга команды разработки. Часть 1

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.8K

В интернете можно найти много статей о Performance Overview, но я хочу поделиться нашим опытом проведения этого процесса. В цикле из 3 статей, я постараюсь передать вам полную картину – теоретическую часть и практическую часть на основе нашего опыта. При подготовке к проведению, любой сторонний опыт будет полезен.

Performance Overview – это ретроспективный процесс, который позволяет оценить сильные и слабые стороны каждого сотрудника и компании в целом. Основная цель – проверить и синхронизировать ожидания работника и организации, а также поощрять сотрудников на основе их общего вклада, а не только экспертизы.

Процесс проводится в 5-6 этапов:

Читать далее
Всего голосов 7: ↑3 и ↓4+1
Комментарии9

Как проходят архитектурные секции собеседования в Яндексе: практика дизайна распределённых систем

Время на прочтение25 мин
Количество просмотров146K
Привет, меня зовут Костя Кардаманов, я работаю в отделе технологий разработки Яндекса. Обычно такой же фразой я приветствую и кандидатов на собеседовании. А сегодня я хотел бы рассказать вам, как и зачем мы проводим интервью по дизайну систем с бэкенд-разработчиками. Сразу скажу: для фронтендеров, мобильных разработчиков и ML-инженеров подобный тип собеседований применим слабо, так что эти специальности мы здесь обсуждать не будем.

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

Что такое дизайн информационных систем


Основная цель любой IT-компании — производить сервисы, которые решают задачи пользователей. Мы должны уметь собирать элементы системы в единый механизм, который будет эффективно выполнять поставленную цель, и если первый тип собеседований нацелен в первую очередь на проверку необходимого минимума, то интервью про дизайн систем проверяет достаточность навыков кандидата в достижении конечной цели. Далекому от IT пользователю принципы и устройство систем могут казаться бесконечно сложными, но мы, их разработчики, должны иметь (не обязательно детальное) представление о принципах функционирования и роли каждого компонента.

Опытный читатель может сказать — в мире полно платных и бесплатных решений, из которых я могу собрать систему как из деталей конструктора, зачем мне понимать устройство этих деталей?
Читать дальше →
Всего голосов 67: ↑65 и ↓2+90
Комментарии37

System Design для самых маленьких. Reference к интервью

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров22K

Эта статья-инструкция по построению высоконагруженных распределенных систем. Описанный подход может быть полезен как reference при подготовке к интервью по system design в FAANG и не только.

Читать далее
Всего голосов 15: ↑13 и ↓2+15
Комментарии3

Как построить систему, способную выдерживать нагрузку в 5 млн rps

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров52K

Всем привет! 

Меня зовут Владимир Олохтонов, я руковожу командой разработки в отделе Message Bus, который является частью платформы Ozon. Мы занимаемся разработкой самых разных систем вокруг Kafka, etcd и Vault. В этой статье я расскажу о том, как мы строили линейно масштабируемую gRPC-прокси перед Kafka, способную обслуживать миллионы запросов в секунду, используя Go.

Читать далее
Всего голосов 102: ↑99 и ↓3+108
Комментарии58

D&D как инструмент тимлида: решаем проблемы команды с помощью разговорных ролевых игр

Уровень сложностиПростой
Время на прочтение37 мин
Количество просмотров25K

Если вы сталкивались с недостатком общения и эмпатии у себя в команде, если вы иногда жалеете, что ваша команда редко встречается лично, то, думаю, вам может пригодиться мой опыт.

Команда разработки и вообще любая группа людей — это сложный клубок из межличностных отношений и персональных компетенций. Я руковожу командами разработки и эксплуатации уже 8 лет, и за это время встречался с разными командными проблемами. Хочу предложить вам свою методологию их решения при помощи разговорных ролевых игр (РРИ).

Под катом вас ждет:

История о том, как я сам пришёл к тому, чтобы проводить РРИ для коллег.

Краткий рассказ о том, что из себя представляют такие игры.

Примеры решения реальных командных задач.

Полная методология подготовки и проведения игры. Полезно будет вам и вашему мастеру.

Вперёд к приключениям
Всего голосов 99: ↑96 и ↓3+107
Комментарии33

Ошибки, которые я совершил, будучи молодым менеджером

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров19K

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

Ниже я дам небольшую, старательно собранную подборку собственных ошибок и стратегий, которые помогли их преодолеть.
Читать дальше →
Всего голосов 34: ↑30 и ↓4+39
Комментарии4

Как подготовить и провести A/B-тестирование. Базовый роадмэп для новичков

Время на прочтение12 мин
Количество просмотров24K

Хабр, привет! 

Меня зовут Полина Окунева, я работаю ведущим аналитиком в компании GlowByte в команде Advanced Analytics, а также автор курса по A/B тестам. Сегодня в статье я предлагаю интересующимся небольшой гайд по A/B-тестам.

Когда я начала погружаться в тему A/B-тестирования пару лет назад, меня кидало из стороны в сторону: то перечитывала фундаментальные учебники по статистике, то переключалась на статьи о конкретных методиках. Но во всем этом многообразии материалов для меня на тот момент был огромный недостаток — я не могла собрать все в кучу и разобраться, а как же проводить-то этот A/B-тест? Я знала, что есть разные виды тестов, множественное тестирование и поправки, полезный и популярный Bootstrap… Но как все это соединить было не очевидно. Хотелось понять, какие этапы есть у A/B-тестирования и когда на что обращать внимание. Хотя бы какие термины гуглить и когда.

Сегодня я представляю вашему вниманию пазл, который сложился в моей голове по итогу плотной работы в этой теме. Я не претендую на истину в последней инстанции — шаги могут и должны(!) быть адаптированы конкретно под вашу задачу. Но если вы только начинаете входить в сферу A/B-тестирования, надеюсь, статья будет очень полезна. Я не буду подробно останавливаться на каждом понятии. Моя цель — обозначить технические этапы и показать новичкам модельную картину A/B-тестирования.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Как мы автоматизировали работу с Kafka: через тернии к Cruise Control

Время на прочтение33 мин
Количество просмотров12K

В 2022 году искушённого хабрачитателя уже не удивить очередной статьёй о том, как готовить Kafka. На эту тему уже есть куча полезных материалов. Например: тут, тут, тут и тут. А вот информации об инструментах, входящих в экосистему Kafka, ещё не так много.  

Когда у вас тысячи топиков и десятки брокеров в нескольких дата-центрах, то вручную балансировать реплики партиций ещё возможно. Но где-то на этом этапе работа по переносу реплик с одного брокера на другой становится рутиной. А при увеличении объёмов без автоматизации уже не обойтись. Поэтому мы задумались о том, какие инструменты могут в этом помочь. 

Сегодня я поделюсь нашей историей запуска инструмента Kafka Cruise Control от LinkedIn. Наш путь по запуску на наших объёмах был тернист, и получился интересным, почти детективным рассказом. А если вы думаете, как автоматизировать рутинные операции по администрированию Kafka-кластеров, то, уверен, почерпнёте для себя что-то полезное. 

Читать далее
Всего голосов 58: ↑57 и ↓1+60
Комментарии28

Yappa: запускаем python web-приложения. Просто. Бессерверно. В Яндекс Облаке

Время на прочтение4 мин
Количество просмотров11K

$ yappa deploy

Все. 

Твое python приложение доступно в яндекс облаке, у него есть свой урл, оно готово к любому наплыву посетителей. А платишь ты только за время цпу, затраченное на обработку запросов.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии8

Мультиарендный подход к инфраструктуре работы с данными. Доклад Яндекса

Время на прочтение16 мин
Количество просмотров3.1K
Времена, когда для экземпляра базы данных выделялся отдельный компьютер, давно прошли. Сейчас повсюду управляемые решения, поднимающие необходимые процессы в виртуальных машинах. Для вычислений применяется еще более прогрессивный подход — «бессерверные вычисления», например AWS Lambda или Yandex Cloud Funtions. И уж совсем на острие прогресса находятся бессерверные БД. Руководитель отдела разработки систем хранения и обработки данных Yandex.Cloud Андрей Фомичёв Anfo рассказал о бессерверных решениях, которые еще до всеобщего хайпа стали популярны в Яндексе и по-прежнему используются для хранения и обработки данных.

— Всем привет. Если вы не очень знаете, что означает слово «мультиарендный» (multitenant) в названии доклада — ничего страшного, я расскажу поподробнее, и станет понятно.

Доклад будет из четырех разделов. Сначала я расскажу, что такое многопользовательские и multitenant-системы и чем они отличаются. Потом приведу примеры мультиарендных multitenant-систем в Яндексе: Yandex Database (YDB) и Yandex Query. Затем расскажу, как мы все эти системы реализовываем, какие в них особенности. В заключение подведу итоги доклада.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+8
Комментарии4

Страх и ненависть локализации в больших проектах. Доклад Яндекса

Время на прочтение16 мин
Количество просмотров4.6K
Если вы думаете, что локализация — это просто (нужно только вынести все тексты из кода приложения и перевести их), то в большом проекте всё иначе. Если над ним работают десятки разработчиков и ежедневно релизится новая функциональность, то с каждым релизом появляются новые текстовые блоки и меняются старые. Переведенные фрагменты смешиваются с новыми, а новые — это коктейль текстов из разных продуктовых задач. Так рождается хаос, который пожирает сначала разработчиков, а потом и пользователей.



В докладе я рассказал, как мы организовали локализацию в проекте с десятками тысяч фрагментов текста и командой более чем из 40 человек. В конце поста есть видео с рассказом.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+12
Комментарии11

Лучшие практики для деплоя высокодоступных приложений в Kubernetes. Часть 1

Время на прочтение13 мин
Количество просмотров28K

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

Функциональность, которая не доступна в Kubernetes «из коробки», здесь почти не будет затрагиваться. Также мы не будем привязываться к конкретным CD-решениям и опустим вопросы шаблонизации/генерации Kubernetes-манифестов. Рассмотрены только общие правила, касающиеся того, как Kubernetes-манифесты могут выглядеть в конечном итоге при деплое в кластер.

Читать далее
Всего голосов 57: ↑56 и ↓1+66
Комментарии19

Архитектура отказоустойчивого планировщика задач. Доклад Яндекса

Время на прочтение21 мин
Количество просмотров5.6K
В Яндексе десятки тысяч машин, которые постоянно нагружены под завязку разными вычислительными задачами. Бо́льшая часть этих вычислений относится к так называемой batch-нагрузке — как правило, оформленной в виде операций в парадигме MapReduce. Мы используем собственную систему YT, которая предоставляет распределённый storage и интерфейс запуска распределённых вычислений с произвольным пользовательским кодом. В докладе я рассказал о задачах, возникающих при попытке написать софт, который будет что-то планировать на кластерах из большого количества машин.

— Давайте первым делом обсудим, чем вообще занимаются вычислительные кластеры Яндекса.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

Вы — не Google

Время на прочтение7 мин
Количество просмотров103K
Мы, программисты, иногда почему-то сходим с ума. Причём по каким-то совершенно нелепым причинам. Нам нравится думать о себе, как о супер-рациональных людях, но когда дело доходит до выбора ключевой технологии нового продукта, мы погружаемся в какое-то безумие. Вдруг оказывается, что кто-то слышал что-то об одной классной вещи, а его коллега читал комментарий о другой на Хабре, а третий человек видел пост в блоге о ещё чём-то похожем… и вот мы уже пребываем в полнейшем ступоре, беспомощно барахтаясь в попытках выбора между совершенно противоположными по своей сути системами, уже и забыв, что мы вообще пытаемся выбрать и почему.

Рациональные люди не принимают решения таким образом. Но именно так программисты часто решают использовать что-то вроде MapReduce.

Вот как комментировал этот выбор Joe Hellerstein своим студентам (на 54-той минуте):

Дело в том, что в мире сейчас есть где-то 5 компаний, обрабатывающие данные подобных объёмов. Все остальные гоняют все эти данные туда-сюда, добиваясь отказоустойчивости, которая им на самом деле не нужна. Люди страдают гигантоманией и гугломанией где-то с середины 2000-ых годов: «мы сделаем всё так, как делает Google, ведь мы же строим один из крупнейших (в будущем) сервисов по обработке данных в мире!»

image

Сколько этажей в вашем датацентре? Google сейчас строит четырёхэтажные, как вот этот в Оклахоме.
Читать дальше →
Всего голосов 252: ↑249 и ↓3+246
Комментарии197

JSONB запросы в PostgreSQL

Время на прочтение7 мин
Количество просмотров286K
Ранее я писал, как включить поддержку jsonb в postgres/psycopg2. Сегодня экспериментировал с тем, как запрашивать данные в колонках типа JSON.
На эту тему есть документация, но мне было не совсем понятно, как работают различные операции:

CREATE TABLE json_test (
  id serial primary key,
  data jsonb
);

INSERT INTO json_test (data) VALUES 
  ('{}'),
  ('{"a": 1}'),
  ('{"a": 2, "b": ["c", "d"]}'),
  ('{"a": 1, "b": {"c": "d", "e": true}}'),
  ('{"b": 2}');

Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии12

36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql

Время на прочтение5 мин
Количество просмотров115K
Сложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.

Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.

У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
Читать дальше →
Всего голосов 111: ↑96 и ↓15+81
Комментарии102
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность