Как стать автором
Обновить
-7
0

Software Agency Owner

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

Python микросервисы с Kafka без боли

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

В этой статье я бы хотел поделиться способом написания асинхронных микросервисов на Python, в основе которых библиотека Faust. А в качестве брокера сообщений Kafka. Ну и немного мониторинга с Prometheus и Grafana.

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

Грабли на пути к keep-alive

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

Увеличение активности обмена данными между микросервисами зачастую является проблемой в архитектуре современных IT решений. Выжать максимум и выжить любой ценой — серьёзный вызов для любой разработки. Поэтому поиск оптимальных решений — это не прекращающийся процесс. В статье кратко изложены проблемы, которые могут возникнуть при высоконагруженном использовании http запросов и пути их обхода.

Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии6

Envoy для самых маленьких

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


Всем привет!


Я работаю бэкенд-разработчиком в компании Tinkoff, где участвую в разработке платформы CRM-системы для обслуживания физических и юридических лиц.


Использование edge proxy и балансировщика в частности — это почти мастхэв при построении современных систем. Сегодня на рынке представлено большое количество разнообразных решений, у каждого из которых есть преимущества и недостатки. Мы остановимся на одном из самых свежих — Envoy.


Envoy — это высокопроизводительный балансировщик, реализованный на C++. Его разработала компания Lyft — сервис заказа такси в Штатах, прямой конкурент Uber — для использования как с отдельными сервисами, так и в качестве связующего звена в сложных микросервисных системах. В том числе для реализации относительно свежего архитектурного явления — service mesh.


Формируя основной фундамент нашей платформы, он реализует cors, access-control, rate limiting, outlier detection, проверку jwt и многое другое.


На Хабре есть отличная статья, которая разбирает его основные отличия от ближайших соседей и проливает свет на внутреннее устройство. Мы же сфокусируемся больше на прикладных моментах, разберемся с запуском и настройкой, попробуем сразу несколько видов балансировки трафика. Поехали!

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

Envoy. 1. Введение

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

Приветствую! Это небольшая статья, отвечающая на вопросы: "что такое envoy?", "зачем он нужен?" и "с чего начать?".


Что это


Envoy — это L4-L7 балансировщик написанный на С++, ориентированный на высокую производительность и доступность. С одной стороны, это в некотором роде аналог nginx и haproxy, соизмеримый с ними по производительности. С другой, он больше ориентирован под микросервисную архитектуру и обладает функционалом не хуже балансировщиков на java и go, таких как zuul или traefik.


Таблица сравнения haproxy/nginx/envoy, она не претендует на абсолютную истину, но дает общую картину.


nginx haproxy envoy traefik
звезд на github 11.2k/mirror 1.1k/mirror 12.4k 27.6k
написан на C C C++ go
API нет socket only/push dataplane/pull pull
active healthcheck нет да да да
Open tracing внешний плагин нет да да
JWT внешний плагин нет да нет
Расширение Lua/C Lua/C Lua/C++ нет
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии19

Введение в Data Engineering. ETL, схема «звезды» и Airflow

Время на прочтение10 мин
Количество просмотров54K
Способность data scientist-а извлекать ценность из данных тесно связана с тем, насколько развита инфраструктура хранения и обработки данных в компании. Это значит, что аналитик должен не только уметь строить модели, но и обладать достаточными навыками в области data engineering, чтобы соответствовать потребностям компании и браться за все более амбициозные проекты.

При этом, несмотря на всю важность, образование в сфере data engineering продолжает оставаться весьма ограниченным. Мне повезло, поскольку я успел поработать со многими инженерами, которые терпеливо объясняли мне каждый аспект работы с данными, но не все обладают такой возможностью. Именно поэтому я решил написать эту статью — введение в data engineering, в которой я расскажу о том, что такое ETL, разнице между SQL- и JVM-ориентированными ETL, нормализации и партиционировании данных и, наконец, рассмотрим пример запроса в Airflow.


Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии1

Apache Kafka – мой конспект

Время на прочтение9 мин
Количество просмотров326K
Это мой конспект, в котором коротко и по сути затрону такие понятия Kafka как:

— Тема (Topic)
— Подписчики (consumer)
— Издатель (producer)
— Группа (group), раздел (partition)
— Потоки (streams)

Kafka — основное


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

Apache Kafka – диспетчер сообщений на Java платформе. В Kafka есть тема сообщения в которую издатели пишут сообщения и есть подписчики в темах, которые читают эти сообщения, все сообщения в процессе диспетчеризации пишутся на диск и не зависит от потребителей.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии10

Как пользоваться интерфейсами в Go

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


В свободное от основной работы время автор материала консультирует по Go и разбирает код. Естественно, что в ходе такой деятельности он читает много кода, написанного другими людьми. В последнее время у автора этой статьи сложилось впечатление (да именно впечатление, никакой статистики), что программеры стали чаще работать с интерфейсами в «стиле Java».

Этот пост содержит рекомендации автора материала об оптимальном использовании интерфейсов в Go, основанные на его опыте в написании кода.


В примерах этого поста мы будет пользоваться двумя пакетами animal и circus. Многие вещи в этом посте описывают работу с кодом, граничащим с регулярным применением пакетов.

Как делать не надо


Очень распространенное явление, которое я наблюдаю:

package animals 

type Animal interface {
	Speaks() string
}

// применение Animal
type Dog struct{}
func (a Dog) Speaks() string { return "woof" }
Читать дальше →
Всего голосов 20: ↑14 и ↓6+8
Комментарии9

REST-сервисы на ASP.NET Core под Linux в продакшене

Время на прочтение29 мин
Количество просмотров29K
В основе этой статьи доклад Дениса Иванова (@DenisIvanov) на РИТ++ 2017, в котором он поделился опытом разработки и запуска в продакшен REST-сервиса на ASP.NET Core на Kubernetes. На текущий момент это сделать уже можно без особенных проблем и бояться использовать .NET Core, судя по опыту 2ГИС, не стоит.

Конфигурация: ASP.NetCore на Linux позволила не только использовать существующую on-premise платформу, но и принесла еще несколько дополнительных плюсов, в частности, в виде полноценных Docker и Kubernetes, которые сильно упрощают жизнь.



О сервисе


С 1 апреля 2017 года в продуктах 2ГИС появилась иконка, на которую можно нажать и начнет проигрываться видео. Рекламодатели, которые размещаются в справочнике, теперь могут купить новый способ размещения рекламы, а все продукты нашей компании (мобильные, онлайн, API), ходят на сервис, про который я буду сегодня рассказывать.

Топология этого сервиса примерно представлена на картинке ниже. Сервис помечен облачком в центре, он, по сути дела, является бэкендом для продуктов. Когда продукт приходит и говорит: «Дай мне для этого рекламодателя всю информацию о видеорекламе», сервис ему послушно ее отдает. Это информация такого плана: такая-то обложка лежит на таком-то CDN, такой-то видеофайл в таких-то разрешениях лежит там-то и там-то, само видео длится такое количество времени и прочее.


Осторожно: много информации и кода.
Всего голосов 48: ↑45 и ↓3+42
Комментарии14

Краткая шпаргалка по tmux (менеджеру терминалов)

Время на прочтение1 мин
Количество просмотров415K
tmux — это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Как screen, только лучше (в первую очередь потому, что использует модель клиент—сервер).

image

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

Читать дальше →
Всего голосов 59: ↑53 и ↓6+47
Комментарии50

Практический опыт использования Blynk для датчика СО2. Часть 1

Время на прочтение8 мин
Количество просмотров59K
Всем привет. Это еще одна статья из разряда ESP8266 + Blynk = . Прошу не воспринимать как рекламу, а только как дань уважения разработчикам платформы Blynk и личный опыт, который может быть полезен кому то еще, кроме меня.

Начало


Идея проекта родилась несколько лет назад, когда в порыве DYI-энтузиазма на Ali был куплен датчик качества воздуха MQ-135. По спецификации этот датчик реагирует на наличие в воздухе таких веществ как: NH3, NOx, спирт, бензин, дым и CO2 и выдает свою абстрактную оценку качества воздуха на аналоговом выходе [да я знаю, что существуют подстроечные резисторы и способы калибровки, но как то это слишком сложно].

Испытания показали, что на всякие вредные и «вонючие» соединения датчик реагирует отлично, показывая достаточно резкое изменение выходного уровня. Хуже дело обстояло с определением невидимого врага, а именно углекислого газа СО2. Про вред и очевидную повсеместность этого диоксида сказано немало, повторяться не будем.

Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии22

Работа с Anaconda на примере поиска корреляции курсов криптовалют

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


Цель этой статьи — предоставить легкое введение в анализ данных с использованием Anaconda. Мы пройдем через написание простого скрипта Python для извлечения, анализа и визуализации данных по различным криптовалютам.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии6

Attention! S in Ethereum stands for Security. Part 1. Blockchain things

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


С этой статьи мы начинаем цикл, посвященный типичным уязвимостям, атакам и проблемным местам, присущим смарт-контрактам на языке Solidity, и платформе Ethereum в целом. В первой части мы поговорим вот о чем:


  • почему сложно реализовать децентрализованную биржу на смарт-контрактах
  • как сгенерировать случайное число
  • как вывести из строя всю Proof-of-Authority сеть
Читать дальше →
Всего голосов 62: ↑58 и ↓4+54
Комментарии21

Эксперименты с контрактами Solidity в тестовой сети Rinkeby блокчейна Ethereum

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


Эта статья представляет собой небольшое практическое руководство, которое поможет вам быстро настроить среду разработки смарт-контрактов на языке Solidity для блокчейна Ethereum. Вы опубликуете первый контракт, сохраните его в тестовом блокчейне Rinkeby и научитесь вызывать методы контракта. Это будет ваш первый шаг на пути создания децентрализованных приложений DApp (Decentralized Application).

Несмотря на обилие книг, статей и руководств, посвященной теме этой статьи, новичку довольно трудно приступить к публикации контрактов и работе с ними. При попытке что-то сделать по книгам, руководствам и статьям нередко оказывается, что примеры не работают, а команды возвращают непонятные ошибки. Я попытаюсь в некоторой степени упростить первый этап освоения, отразив в этой статье свой опыт изучения Ethereum.

При погружении в эту тему я использовал приложение (браузер) Mist в среде Microsoft Windows, а также интерфейс командной строки Geth узла Ethereum в среде Ubuntu. В этой статье мы расскажем о работе с Geth, а также немного о том, как вызывать методы контрактов из Node.js.

С благодарностью приму замечания и пожелания по дальнейшим статьям про блокчейн Ethereum, разработку контрактов на языке Solidity и приложений DApp.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии24

Структура и модель выполнения .NET Core приложений

Время на прочтение15 мин
Количество просмотров51K
В этой статье я рассмотрю компоненты платформы .NET Core 2.0, необходимые для загрузки и выполнения .NET Core-приложений, а также артефакты для двух возможных типов развертывания.

Текст объемный и рассчитан на:

  • начинающих разработчиков, которые только знакомятся с платформой .NET Core;
  • опытных разработчиков, выполняющих роль DevOps-инженеров в produсtion-окружении.

В статье не упоминается процесс создания приложений при помощи SDK (dotnet CLI), однако эта информация будет полезной для понимания, как работает SDK, а именно её основной компонент (ядро) — «драйвер» dotnet.dll, поскольку эта библиотека является управляемой сборкой и выполняется на .NET Core.

Примеры процессов выполнения описаны для ОС Windows, но работают по тому же принципу и на других ОС (с учетом различных расширений исполняемых файлов и нативных библиотек).
Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии10

Как фронтенд-разработчику настроить базу данных

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


Недавно меня спросили, как фронтенд-разработчику проще всего сохранить пользовательские данные? Под катом — моя краткая инструкция для тех, кто с базами данных «на вы».
Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии5

Работаем с долгими API в ASP.NET Core правильно или тонкости переезда на новую платформу

Время на прочтение9 мин
Количество просмотров19K
Microsoft очень постарался, создавая новую платформу для веб-разработки. Новый ASP.NET Core похож на старенький ASP.NET MVC только, быть может, самой MVC-архитектурой. Ушли сложности и привычные вещи из старой платформы, появился встроенный DI и легковесные view-компоненты, HTTP модули и хэндлеры уступили место middleware и т.д. Вкупе с кроссплатформенностью и хорошей производительностью всё это делает платформу очень привлекательной для выбора. В этой статье я расскажу, как мне удалось решить специфическую задачу логирования длительных запросов к сторонним API для повышения удобства анализа инцидентов.
Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии48

Линия — видеонаблюдение: 30 бесплатных возможностей

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


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

Нам такое «двойное дно» не по душе и мы стремимся сделать все для того, чтобы пользователь за одну определенную цену получил все необходимое для построения своей системы видеонаблюдения.

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

Для тех, кому лень читать, сразу мотайте в конец, там специальное предложение для дилеров или инсталляторов систем видеонаблюдения. Даже если вы не тот и не другой, но очень хочется попробовать и начать, то вам это тоже будет очень интересно!
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии44

Практика с dapp. Часть 2. Деплой Docker-образов в Kubernetes с помощью Helm

Время на прочтение13 мин
Количество просмотров17K
dapp — наша Open Source-утилита, помогающая DevOps-инженерам сопровождать процессы CI/CD (Обновлено 13 августа 2019 г.: в настоящее время проект dapp переименован в werf, его код полностью переписан на Go, а документация значительно улучшена) (подробнее о ней читайте в анонсе). В документации к ней приведён пример сборки простого приложения, а подробнее этот процесс (с демонстрацией основных возможностей dapp) был представлен в первой части статьи. Теперь, на основе того же простого приложения, покажу, как dapp работает с кластером Kubernetes.

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

Ускорьте ваш сайт с помощью машинного обучения

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

Многие из нас постоянно думают о производительности веб-приложений: добиваются 60 FPS на медленных телефонах, загружают свои ассеты в идеальном порядке, кэшируют всё что можно, и много чего ещё.

Но не является ли такое представление о производительности веб-приложений слишком ограниченным? С позиции пользователя все эти действия — лишь крошечный кусок большого пирога производительности.

В этой статье мы пройдёмся по всем этапам использования сайта, как если бы это делал обычный человек, измерив длительность каждого из них. И особое внимание уделим конкретному шагу на одном конкретном сайте, который может быть ещё больше оптимизирован. Хочется верить, что решение (которым будет машинное обучение) может быть использовано во многих различных случаях на разных сайтах.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии6

Автоматическое распознавание текста в видео

Время на прочтение18 мин
Количество просмотров17K
Данная статья является переводом статьи «Automatic text recognition in digital videos» за авторством Райнера Линхарта и Франка Штубера, Университет Маннхайма, Германия.

Краткий обзор


Мы занимаемся разработкой алгоритмов для автоматической сегментации символов в фильмах, которые извлекают текст из предисловия, титров и заключения. Наши алгоритмы используют стандартные символы текста в видео, чтобы повысить качество сегментации и, как следствие, эффективность распознавания. Как результат мы имеем отдельные символы из кадров. Их можно проанализировать с помощью любого ПО OCR. Результаты распознавания нескольких экземпляров одного и того же символа во всех последующих кадрах объединяются для повышения качества распознавания и для вычисления конечного результата. Мы протестировали наши алгоритмы в серии экспериментов с видеоклипами, записанными с телевизора, и достигли хороших результатов сегментации.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии0
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Украина
Дата рождения
Зарегистрирован
Активность