Меня зовут Александр Вирочкин, я руковожу командой инфраструктуры мини-приложений ВКонтакте. За последние два года мы мигрировали один из ключевых сервисов с PHP на Go — путь выдался непростым, но, уверен, наш опыт будет полезен многим. Не все получилось с первой попытки: мы столкнулись с типичными и не очень проблемами, зато смогли по-настоящему оценить роль внутренней PaaS-платформы и экспертизу коллег.
Во ВКонтакте сейчас идет масштабная трансформация: постепенно уходим от монолитной архитектуры к сервисной, создали единую платформу для разработки и внедряем единые технологии во все соцплатформы компании. Недавно мой коллега Олег уже рассказывал на Хабре о PaaS. Наша команда была одной из первых, кто попробовал инструменты на реальных задачах и увидела, как с их развитием меняются и наши подходы к миграции.
В статье поделюсь историей о том, как мы дважды предпринимали попытки переписать сервис, как между ними эволюционировала платформа для разработки, и что нам это дало на практике. Возможно, наш опыт поможет вам избежать похожих проблем и вдохновит на собственные технические эксперименты.
Читать далееПрогресс ИИ толкает дискуссию о развитии технологий в сторону дискуссии о будущем человеческой цивилизации. Граница между инженерной деятельностью и политической философией размывается прямо на глазах: если ИИ может определить будущее человеческой цивилизации — каким оно будет и как она будет устроена, — то ИИ-инженеры опосредованно становятся инженерами человеческой цивилизации. Это — факт. Его надо принять и, вместо того чтобы быть пассивно втянутым в эту роль, — осознанно взять её на себя: если «редизайн» цивилизации неизбежен, то, вместо того чтобы «получить» дизайн нового дивного мира будущего в результате лотереи, — лучше разработать этот дизайн самим.
И одним из главных вопросов нового дизайна цивилизации является, конечно же, дизайн экономической системы. Кто-то подумает: «А чем рынок плох? Стильно, модно, молодёжно». Но на данном этапе естественного прогресса рыночных отношений сам же рынок и обеспечивает основную пропаганду крамольных ещё вчера мыслей вроде: «Так, а кроме рынка ещё варианты есть?»
Читать далееО паттернах отказоустойчивой архитектуры написано уже немало. Но когда дело доходит до реальных кейсов, особенно в специфических отраслях вроде лотерейной — информации почти нет. А ведь здесь, как и в любой высоконагруженной системе, отказоустойчивость — не просто галочка в ТЗ, а вопрос пользовательского доверия и бизнес-репутации.
В этой статье расскажем, как мы в «Столото» подошли к проектированию Lottery Payment System. Это полностью вымышленный сервис для выплат выигрышей, построенный на опыте реальных вызовов и ограничений для того, чтобы на его примере описать, как работают ключевые паттерны отказоустойчивой архитектуры: Retry, Idempotency Key, Deadlines, Rate Limit и Circuit Breaker. Также покажем, как они применяются в контексте распределённой системы, которая должна стабильно работать, даже когда вокруг всё пошло не по плану.
В нашем вымышленном сценарии мы представили, что компания прошла через архитектурную трансформацию и решила переосмыслить доменные области. Слишком громоздкий и хрупкий процессинг тормозил развитие. В какой-то момент он стал похож на башню из кубиков, которую боишься задеть. Поэтому мы выбрали путь здорового прагматизма — выплаты вынесли в отдельный сервис, чтобы дать этому направлению и стабильность, и простор для развития. В зоне его ответственности — всё, что связано с переводами пользователям, которые хотят получать выигрыши по лотерейным билетам и исполнять свои мечты.
Будет немного архитектуры, чуть-чуть лирики и много практики. Это не скучный туториал — это живая история гипотетического продукта, в котором отказоустойчивость стала краеугольным камнем. Если вы работаете с высоконагруженными системами, и вам важно, чтобы ваши системы не падали — добро пожаловать.
Читать далееВ этой статье разбираются реальные кейсы и технические приёмы для эффективного управления распределёнными open-source командами, объединяющими разработчиков из разных культурных и временных зон. Поделюсь личным опытом, покажу примеры кода для синхронизации процессов и расскажу о неожиданных «подводных камнях», с которыми сталкивался сам.
Когда над проектом работают люди из Берлина, Сан-Франциско, Шанхая и Москвы, возникает масса вопросов: как согласовать митинг, чтобы никто не проснулся в три ночи? Как выстроить код-ревью, чтобы тон шутки не стал причиной конфликта? В своём первом крупном OSS-проекте я чуть не вылетел из роли мейнтейнера из-за одного некорректного эмодзи в комментарии. С тех пор я выработал несколько практических приёмов, которыми и делюсь ниже.
Читать далееВ первой части мы разбирались, как Firebird забирает строку таблицы с диска. Во второй и третьей частях мы разбирались, что происходит с прочитанной строкой в процессе выполнения SELECT-запроса. Но остался неотвеченным такой вопрос: а как указать на строку таблицы, которую надо прочитать? Этим вопросом мы и займёмся.
Читать далееПродолжаем обсуждать примечательные инструменты для автоматизации и управления рабочими процессами (и напоминаем про MWS Tables — платформу для командной работы, включающую таблицы, трекер задач, отчётность и другие инструменты, собранные в одном сервисе; можно с лёгкостью создать рабочее пространство для себя или небольшой команды).
Сегодня рассмотрим узкоспециализированные решения для различных областей знаний: Covalent, Cromwell, Cylc и Martian. Эти решения используются для высокопроизводительных вычислений, в работе с квантовыми алгоритмами, климатическом моделировании и анализе медицинских данных.
Читать далееПривет, Хабр!
Сегодня мы рассмотрим Fast Lane / Slow Lane для Kafka: как одним росчерком кода защитить SLA‑критичный поток от толстых сообщений, не перекраивая пол‑стека и не устраивая зоопарк из очередей.
Что вам даст Университет Иннополис по мнению выпускника: старт в карьере, фундаментальное образование или только разочарование
Читать далееВ жизни менеджера много загадок. Почему отдел, который всегда перевыполняет план, вдруг начал срывать сроки? Почему введение премий не мотивирует, а уменьшает желание работать? Почему команда слушается не руководителя, а рядового сотрудника?
Мы собрали 15 загадок про управление. Каждая — это ситуация, которая в реальной жизни может стоить компании денег, репутации или ключевых сотрудников.
Читать далееПривет, Хабр! Меня зовут Виктор, я программирую на TypeScript/Java и это моя первая статья, в которой я хочу поделиться историей создания fsd-forge — CLI-инструмента для упрощения работы с архитектурой Feature-Sliced Design (FSD) в проектах на React и TypeScript. В этой статье я расскажу, почему решил создать этот инструмент, как он устроен, какие проблемы решает, и какие уроки я вынес из процесса разработки.
Что такое Feature-Sliced Design и зачем нужен CLI?
Feature-Sliced Design — это архитектурный подход для структурирования фронтенд-приложений, который помогает организовать код в масштабируемых проектах. FSD делит приложение на слои (app, pages, features, widgets, entities, shared), делая код модульным, читаемым и легким для поддержки. Однако создание новой структуры FSD или добавление сущностей (например, страниц или виджетов) вручную занимает время и чревато ошибками, особенно в больших командах.
Идея fsd-forge родилась из личной потребности. Работая над несколькими React-проектами, параллельно переписывая с Angular на React еще один, я заметил, что:
Читать далееНедавно на подкасте Spring АйО мы обсуждали новые свитчи в Джаве — с паттерн‑матчингом и деструктуризацией. Я тогда ещё выразил мнение, что всё это неправославно, по‑зумерски и отход от принципов ООП.
Не от инкапсуляции, полиморфизма и наследования, а вообще от подхода. Новые свитчи будут провоцировать разработчиков писать код по‑новому, а не так, как завещали нам наши далёкие предки. С нарушением традиций, норм и устоев. Как учит Кейси Муратори, если вы понимаете о ком я.
Но какие они вообще были эти устои? Каким было ООП, когда всё только началось и чем это отличается от свитчей, до которых мы в конце концов докатились?
Читать далееВ статье рассказывается о типичной проблеме синхронизации данных между микросервисами через связку «снапшот + инкременты» и предлагается решение на основе Kafka Compact Topics. Это своего рода «волшебная тетрадь», которая автоматически оставляет только последние версии записей, избавляя от головной боли с рассинхронизацией.
Разбираются практические кейсы применения, подводные камни, тонкости настройки и интеграция с Debezium для автоматической выгрузки из PostgreSQL.
Что получите: понимание, когда компактные топики решают проблему, а когда лучше использовать классические подходы, плюс готовые конфиги для быстрого старта
Читать далееВот сидишь ты с чаем у окна — вроде бы мечта сбылась, свой дом. А дует: то в шею, то в спину. Углы сырые, окна всё время потеют, в ванной на плитке вылезла плесень.
Летом в доме как в духовке. Включаешь кондиционер — гонит на полную, счётчик щёлкает, а прохлады нет. Зимой топишь изо всех сил — и всё равно холодно. Дом обошёлся как крыло от самолета, а по ощущениям — как будто снял бытовку.
Дальше начинается хождение по мукам. Меняешь батареи, покупаешь осушители воздуха. А проблема остается. Потому что лечишь симптомы, а не причину.
Читать далееSnake Keylogger — один из тех .NET-образцов, что на первый взгляд кажутся простыми, но на деле используют нетривиальный способ упаковки полезной нагрузки. В этом материале я пошагово разберу процесс распаковки, покажу, как извлекаются скрытые PE-файлы, и объясню, что делает зловред после их загрузки в память.
Читать далееПредыстория
Моя команда занимается разработкой медицинского ПО: приложения для передачи направлений пациентов в системе здравоохранения Австралии.
Принцип заключается в следующем: если терапевту нужно направить пациента для предоставления вторичных услуг здравоохранения, например, в стационар или в специализированную клинику, он должен написать направление с информацией о пациенте, его истории и причине направления. В прошлом эти операции выполнялись по факсу; это явно устаревшая технология, к тому же многие направления отклонялись, потому что в них отсутствовала часть необходимой информации.
Система электронных направлений удобна для всех. Когда врач создаёт новое направление, мы автоматически извлекаем информацию из PMS (patient management software, системы управления пациентами, которой владеет наша компания) с данными пациента, этнической принадлежностью, индексом массы тела, принимаемыми лекарствами, медицинской историей и всем остальным, что необходимо для направления. В бланке направления есть валидируемая «форма специализации» с полями, относящимися к конкретной услуге, для которой выписывается направление.
Благодаря этому в направлении содержится вся необходимая информация. И, разумеется, в форме также есть большое текстовое поле для свободного текста (referral letter), в котором терапевт может объяснить, почему он решил выписать пациенту направление.
При отправке направления данные передаются в цифровом виде. Они преобразуются в один из нескольких форматов в зависимости от получателя. Некоторые получатели используют для приёма направлений наш продукт Referral Manager; в этом случае нам не нужно ничего преобразовывать, они просто получают доступ в веб-интерфейсе к тем данным, которые хранятся в базе данных. Однако обычно данные преобразуются в HL7 (старый текстовый формат файлов медицинской информации), CDA (XML-документ с отдельной таблицей стилей) или просто в PDF с человекочитаемой информацией. Благодаря этому данные совместимы со множеством различных электронных систем других компаний.
Также выполняется сохранение PDF-копии направления в PMS врача для ведения его собственной картотеки. Это позволяет ему просматривать всю историю пациента в PMS без необходимости поиска документов в куче приложений разных разработчиков.
Читать далееЕщё недавно создание 3D-моделей было задачей исключительно для специалистов. Нужно было знать сложные программы, уметь работать с формой, светом и текстурами. Сегодня всё иначе. Искусственный интеллект уверенно берёт на себя рутинные этапы и даёт возможность любому почувствовать себя 3D-дизайнером.
Чтобы проверить, как всё это работает на практике, мы собрали пять сервисов для генерации 3D-моделей и решили немного повеселиться.
Сегодня мы будем создавать модели персонажей из известных мультфильмов нашего детства!
Приятного прочтения!
Читать далееПоговорим о том, как механизм baseline может упростить внедрение статического анализатора в проект, а также о том, как бороться с ложноположительными срабатываниями.
Читать далееНейропомощников появилось превеликое множество и применение у них самое разное. Повсеместно начинаю замечать, что многие коллеги и друзья, так или иначе, пользуются текстовыми помощниками. Мне захотелось не просто рассмотреть эти технологии, но и сделать что-то полезное для себя — чтобы помогало в повседневной жизни. Меня зовут Михаил — я разработчик компании БАРС Груп. В этой статье расскажу, как родилась идея бота для поиска тусовок в городах России, с какими проблемами я столкнулся и к чему пришел.
Читать далееАльянс в сфере искусственного интеллекта опубликовал третий ежегодный рейтинг российских университетов, готовящих специалистов для ИИ-отрасли. В этом году в список вошли 203 вуза из 68 регионов страны.
Читать далееСегодня портативных и мобильных решений, позволяющих пощупать виртуальную или дополненную реальность, не так много: производителей подобных устройств можно посчитать по пальцам. Трендам в современном мире свойственно сменять друг друга, а в последнее время сменяют они друг друга довольно часто. Давайте же вспомним, как это было!
Читать далее