Pull to refresh
1
0

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

Send message

Чистый код. Часть 2

Reading time14 min
Views12K

Привет! Продолжаем цикл постов про чистый код по мотивам видеолекций Дяди Боба, первая часть тут. В этом посте поговорим про структуру функций и не только.

Передача булевых аргументов

Чаще всего передача булевых аргументов говорит о том, что функция делает сразу две вещи, а это значит, что она нарушает принцип единственности ответственности, и у нас должно быть две функции. Например, есть какая-нибудь функция createPayment, которая делает что-то одно, если это токен, и делает что-то другое, если это карточный платеж.

Читать далее

Что нужно знать, перед тем как использовать Prisma у себя в проекте

Reading time8 min
Views8.5K

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

Основным языком разработки у нас, в TIMELESS, является TypeScript, как на frontend,  так и на backend.  Поэтому в рамках идеи типизации всего и вся для работы с БД мы выбрали Prisma, которая позиционирует себя как “Next generation ORM for Node.js and TypeScript”.

Спустя год применения Prisma хотелось бы поделиться опытом ее использования при работе с PostgreSQL из Node.js приложения.

Читать далее

GraphQL: от восторга до разочарования

Reading time14 min
Views22K

Задаётесь вопросом, стоит ли использовать GraphQL в своём проекте? Ваши разработчики спорят, выдвигая аргументы типа «GraphQL — это будущее» и «REST проще»? Мы с моей командой обсуждали эту тему бесконечно. В статье я приведу краткие выводы.

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

Как выигрывать соревнования по программированию

Level of difficultyEasy
Reading time12 min
Views19K

Я регулярно участвую в различных хакатонах и конкурсах по программированию, и довольно часто удаётся выигрывать.Рассказываю о внутренней кухне, вспоминаю поучительные истории с хакатонов и делюсь секретами успеха.

Читать далее

Клиент-серверное и межсервисное взаимодействие: разбираемся в REST, GraphQL, RPC и WebSocket

Level of difficultyEasy
Reading time9 min
Views46K

Привет всем! Меня зовут Андрей, и я разработчик. На своей практике я успел столкнуться с разными протоколами. И, конечно же, были холивары в команде какой и почему выбрать. Адепты подхода REST спорят с GraphQL-щиками. А поклонники gRPC тихо смеются над ними. Давайте все разложим по полочкам.

В зависимости от системы, ограничений и личных предпочтений команды понадобятся самые разные способы общения и передачи данных. REST, GraphQL, RPC и других — сегодня разберемся во всем многообразии протоколов, где и зачем они используются.

Читать далее

В стране потоков — Кафка, часть 4: «Мой кластер потерян!» — принятие неудачи

Reading time4 min
Views2K

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

Серия статей состоит из следующих связанных частей:

Часть 1: Сообщение producer’а;

Часть 2: Подъем consumer’ов;

Часть 3: Смещения и как с ними справляться;

Часть 4: Мой кластер потерян! — Принятие неудачи.

Обычно предприятия используют Kafka в качестве основы для своей платформы обработки данных. Дело в том, что она справляется с широким спектром критически важных для бизнеса рабочих нагрузок. Но рано или поздно все может быть обречено на провал. Вот почему важно учитывать неудачи при проектировании (да, ошибки реальны) вашей общей архитектуры и мыслить терминами резервного копирования и аварийного восстановления.

Читать далее

Анкета менеджера it-проектов

Level of difficultyMedium
Reading time1 min
Views3.4K

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

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

Основной упор — выявить актуальные или потенциальные проблемы в бэклоге, инфраструктуре проекта, кодовой базе и бизнес-процессах.

Читать далее

Как сделать релиз и не превратить ваш проект в затонувший «Титаник»

Level of difficultyEasy
Reading time8 min
Views1.6K

Привет, это Антон Павлов — Head of Products в ITSM 365. 

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

Однако во время релиза легко совершить ошибки и обрушить надолго сервис всем пользователям. Это может перечеркнуть все позитивные аспекты релизов. 

Рассказываю на пятилетнем опыте выпуска релизов для сложных B2B-клиентов, какие меры предосторожности нужно предпринять, чтобы ничего не чинить после обновления.  

Читать далее

Мимо тёщиного дома я без метрик не хожу (обзор и видео доклада)

Level of difficultyHard
Reading time15 min
Views11K

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

Читать далее

Istio в разрезе: что умеет и не умеет самый популярный Service Mesh (обзор и видео доклада)

Level of difficultyHard
Reading time15 min
Views69K

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

Это мой второй доклад про Istio и Service Mesh. Первый я сделал на конференции Kuber Conf 2021: «Что ждать от внедрения Istio?». Рекомендую ознакомиться сначала с ним, будет несколько проще.

Читать далее

Как наладить код-ревью, если ты совсем один

Level of difficultyEasy
Reading time3 min
Views8.6K

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

А как быть программисту, работающему в одиночку? Ведь голова у него – всего одна, если конечно он не мутант. И именно этой головой разработчик пишет код – который потом неплохо бы поревьювить. Как отревьювить свой же код, если ты сам его автор,э и просто физически не можешь взглянуть на него глазами другого человека? Казалось бы, в таком случае выполнить код-ревью невозможно, это – неразрешимая проблема, тупик!

Читать далее

SQL инъекции для самых маленьких Часть 2. UNION запросы

Level of difficultyEasy
Reading time5 min
Views16K

Это вторая по счету статься из цикла про SQL инъекции. В данном статье мы с вами рассмотрим особенности SQL инъекций при использовании команды UNION.

Читать далее

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

Level of difficultyEasy
Reading time21 min
Views7.5K

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

Напомню, что текст рассчитан в первую очередь на разработчиков, которые имеют мало практического опыта работы в конкурентной и/или микросервисной среде, поэтому многие вещи я объясню на пальцах. Для тех, кто захочет ознакомиться с более строгими формулировками, сразу скажу, что здесь будут затронуты упрощённые идеи паттернов Transactional Outbox и Saga.

Читать дальше

Когда НЕ нужно использовать Apache Kafka?

Level of difficultyMedium
Reading time18 min
Views12K
image

Apache Kafka де-факто превратился в стандарт потоковой передачи событий для обработки данных на лету. По мере его широкого распространения в отрасли появляются вопросы: «А когда НЕ нужно использовать Apache Kafka? Какие ограничения у этой платформы? В каких ситуациях он не предлагает необходимые возможности? Как понять, что Kafka — неподходящий инструмент для какой-то задачи?»


В статье, перевод которой мы подготовили, автор Kai Waehner постарается ответить на эти вопросы. В отдельных главах приводится объяснение, когда стоит использовать Kafka, когда — нет, а когда — возможно.

Читать дальше →

Практические советы по устранению утечек памяти в Go

Level of difficultyMedium
Reading time6 min
Views18K

В этой статье я расскажу, что делать при обнаружении утечки в Go-приложении: чем могут быть вызваны утечки и с чего начать поиск источника проблемы.

Причины утечек

Для начала перечислим возможные причины утечки памяти:

1) Утечка горутин

При утечки горутины утекают также переменные, которые находятся в области ее видимости. Кроме того, стек горутины выделяется в куче

2) Бесконечная запись в глобальные переменные

Приложение может бесконечно писать в какую-нибудь глобальную мапу, в результате чего память будет утекать. Один раз я пытался найти утечку у приложения, которое использовало gorilla context. Особенность этой библиотеки в том, что при обработке http запроса она сохраняет указатель на запрос в глобальную мапу и не удаляет ключ мапы без явного указания в пользовательском коде. Начиная с Go 1.7, разработчики gorilla рекомендуют использовать http.Request.Context()

Читать далее

Большие данные мертвы. Это нужно принять

Level of difficultyMedium
Reading time17 min
Views75K

Уже более десяти лет тот факт, что люди с трудом извлекают из своих данных полезную информацию, сбрасывают на чересчур большой размер этих данных. «Объем собираемой информации слишком велик для ваших хилых систем», — такой нам ставили диагноз. А лекарство, соответственно, заключалось в том, чтобы купить какую‑нибудь новую причудливую технологию, которая сможет работать в больших масштабах. Конечно, после того, как целевая группа по Big Data покупала новые инструменты и мигрировала с устаревших систем, компании снова обнаруживали, что у них по‑прежнему возникают проблемы с пониманием своих данных.

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

Мир в 2023 году выглядит иначе, чем когда зазвенели первые тревожные звоночки по поводу Big Data. Катаклизм обработки информации, который все предсказывали, не состоялся. Объемы данных, возможно, немного возросли, но возможности аппаратного обеспечения росли еще быстрее. Поставщики услуг все еще продвигают свои возможности масштабирования, но люди, которые сталкиваются с ними на практике, начинают задаваться вопросом, как они вообще связаны с их реальными проблемами.

А дальше будет и того интереснее.

Читать далее

Kafka как интеграционная платформа: от источников данных к потребителям и в хранилище (часть 1)

Reading time12 min
Views14K

Привет! Меня зовут Илья Макаров, я работаю архитектором решений и в статье расскажу про архитектуру цифровой платформы НЛМК, из каких компонент, помимо Apache Kafka, она состоит, к каким соглашениям по именованию топиков и договоренностям по передаче данных мы пришли, как всем этим управляем.

А это сразу ссылка на часть 2.

Читать далее

Вы тоже можете стать жертвой паралича разработчика

Reading time3 min
Views93K
Дорогие разработчики, вы чувствуете себя неуютно, потому что вы быстро пишете только на восьми языках для трех семейств устройств? Вздрагиваете ли вы, едва заслышав о переходе на очередной фреймворк? Откладывали ли вы любимый проект из-за того, что не могли определить, какая облачная платформа подойдет лучше всего?
Возможно, у вас тоже паралич разработчика. Бойтесь! Это не лечится.

Богатство доступных программистам опций сегодня просто чудовищно. Мы задохнулись под тем, что извергает рог изобилия. Последние несколько лет я зарабатывал на том, что писал на Java, Objective-C, C, C++, Python, Ruby, JavaScript, PHP (прошу прощения) с разными вариантами SQL/баз данных (MySQL, PostgreSQL, MongoDB, BigTable, Redis, Memcached и другими). Нравится ли это мне? Черт побери, нет. По большей части я просто чувствую вину за то, что не делал ничего на Erlang, Clojure, Rust, Go, C#, Scala, Haskell, Julia, Scheme, Swift или OCaml.
image

Я — жертва паралича разработчика: чувства ущербности из-за того, что индустрия софта развивается быстрее, чем может успеть один человек.
Читать дальше →

Очередь недоставленных сообщений для обработки ошибок в Apache Kafka

Reading time12 min
Views25K

Любому надёжному конвейеру потоковой обработки данных нужны механизмы обнаружения и обработки ошибок. В этой статье вы узнаете, как реализовать обработку ошибок с помощью очереди недоставленных сообщений (Dead Letter Queue) в инфраструктуре Apache Kafka.

Мы рассмотрим несколько вариантов: кастомная реализация, Kafka Streams, Kafka Connect, Spring Framework и Parallel Consumer. Вы увидите, как Uber, CrowdStrike и Santander Bank реализуют надёжные механизмы обработки ошибок в реальном времени и в огромном масштабе.

Читать далее

Как Apache Flink хранит стейт: взгляд изнутри

Reading time13 min
Views5.6K

Привет! В этой статье мы рассмотрим важнейший аспект практически любого потокового приложения – работу со стейтом. Сегодня в роли подопытного выступит фреймворк Apache Flink.

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

Небольшой дисклеймер

Подавляющая часть информации, представленной в этой статье, справедлива для всех релизов Apache Flink, начиная с версии 1.8. В версии 1.13 (последняя на момент выхода этой статьи) произошли небольшие правки API, которые в некоторой мере изменили видимую пользователю «оболочку» хранения стейта, но общие принципы остались прежними. Подробнее об этом можно прочитать здесь.

Если вы только начинаете знакомство с Apache Flink, то рекомендую посмотреть наш YouTube-митап по основам этого замечательного фреймворка.

Читать далее

Information

Rating
Does not participate
Location
Израиль
Date of birth
Registered
Activity