Привет, Хабр! Меня зовут Владимир Калугин, я руковожу бэкенд-разработкой в МТС Travel. Сегодня расскажу про KrakenD, готовое решение, которое мы используем для реализации API-шлюза, важной штуки для продуктов с микросервисной архитектурой. Уверен, наш опыт может пригодиться разработчикам из других сервисов.
IT-шник
Как написать удобный API — 15 рекомендаций
Разработка хорошего API требует особого внимания к деталям и соблюдения ключевых принципов программирования прикладных интерфейсов. Поэтому важно, чтобы у разработчиков были необходимые знания. Меня зовут Анастасия Иванова, я работаю в МТТ (входит в экосистему МТС) техническим писателем МТС Exolve. В этой статье я дам рекомендации по созданию API, которые помогут вам сделать его надёжным, масштабируемым и удобным в использовании. Самое интересное — под катом.
Трассировка сервисов, OpenTracing и Jaeger
В наших проектах мы используем микросервисную архитектуру. При возникновении узких мест в производительности достаточно много времени тратится на мониторинг и разбор логов. При логировании таймингов отдельных операций в лог-файл, как правило, сложно понять что привело к вызову этих операций, отследить последовательность действий или смещение во времени одной операции относительно другой в разных сервисах.
Для минимизации ручного труда мы решили воспользоваться одним из инструментов трассировки. О том, как и для чего можно использовать трассировку и как это делали мы, и пойдет речь в этой статье.
Что такое транзакция
Транзация — это набор операций по работе с базой данных, объединенных в одну атомарную пачку.
Транзакционные базы данных (базы, работающие через транзакции) выполняют требования ACID, которые обеспечивают безопасность данных. В том числе финансовых данных ? Поэтому разработчики их и выбирают.
Я расскажу о том, что такое транзакция. Как ее открыть, и как закрыть. И почему это важно — закрывать транзакцию. И тогда при написании запросов к базе у вас будет осознанное понимание, что происходит там, под капотом, и зачем же нужен этот обязательный коммит после апдейта.
PEP 257 на русском. (Соглашение о Docstrings)
Продвинутое конфигурирование Docker Compose (перевод)
Контроль порядка запуска
Docker Compose запускает контейнеры в порядке зависимостей, используя опцию depends_on, чтобы указывать, когда запускается сервис. Для определения порядка запуска Compose применяет depends_on, links, volumes_from и network_mode: «service: ...».
Если контейнер должен дождаться состояния “ready” другого контейнера, можно использовать инструменты wait-for-it или dockerize. Они будут проверять хосты и порты до тех пор, пока TCP соединение не будет подтверждено. Для включения принудительного ожидания в композицию необходимо добавить entrypoint:
version: '2'
services:
web:
build: .
ports:
- "80:8000"
depends_on:
- db
entrypoint: "./wait-for-it.sh db:5432"
db:
image: postgres
Вы всегда можете самостоятельно написать скрипт-обёртку, если возникнет необходимость в усилении контроля.
Если бы я учил Frontend сегодня. Советы начинающим
В этой статье я бы хотел ясно изложить, какие технологии необходимо изучить новичку, а также поделиться методами их освоения. Гайд ориентирован на людей, которые делают свои первые шаги в веб-разработке, и в нем я постараюсь подробно пояснять суть каждой технологии. Также в конце я расскажу, куда двигаться дальше.
Итак, ты хочешь стать Frontend разработчиком. Что для этого нужно?
Angular для Vue разработчиков
Сейчас во фронтенде среди фреймворков есть три явных лидера: Angular, React и Vue. Думаю, мы можем судить о любви разработчиков к проекту по количеству звезд на GitHub. На момент написания данной статьи у Vue уже 161 тысяча звезд, на втором месте находится React с 146 тысячами, а на третьем месте — Angular со своими скромными 59.6 тысячами.
С первого взгляда может показаться, что Angular не настолько популярный, как другие фреймворки, но если обратиться к результатам исследования статистики с портала Tecla, то мы увидим, что Angular занимает довольно большую долю рынка. Например, по данным исследования Angular работает на более чем 400 тысячах сайтов, в то время как Vue — на 100 тысячах. Предлагаю в этом разобраться. Рассмотрим, за что разработчики любят Vue, почему много приложений написаны на Angular и какие выгоды может получить разработчик при использовании фреймворка от Google конкретно для себя.
Вы правда знаете о том, что такое массивы?
Каковы сходства и различия массивов в JavaScript и в PHP?
Одно дело — умение писать код. И совершенно другое — понимание внутренних механизмов используемых языков.
Ответ на этот единственный вопрос даёт мне целое море сведений о собеседуемом. Ведь почти в каждом распространённом языке есть массивы. Легко выдвинуть предположение, в соответствии с которым массивы в разных языках — это, более или менее, одно и то же. Многие программисты так и делают.
Это — некорректное предположение, ведущее к множеству мелких ошибок, к написанию нерационально устроенного кода, к невозможности эффективно пользоваться сильными сторонами языка.
Doctrine ResultSetMapping на примерах
Онлайн митапы на всю неделю c 10 апреля по DevOps, бэку, фронту, QA, управлению командой и аналитике
Привет! Меня зовут Алиса и мы вместе с командой meetups-online.ru подготовили список интересных митапов в сети на ближайшую неделю.
Пока встречаться с друзьями получается только в online-барах, можно развлечь себя прогулкой на митап, например, не по своей теме. Или можно ввязаться в холивар (хоть и обещали себе никогда так не делать) на дебатах про TDD или дискуссии про необходимость аналитиков.
Не забывайте, что всегда можно устроить спонтанное афтепати через веб-камеры.
Указатели в Python: в чём суть?
Если вы когда-нибудь работали с такими низкоуровневыми языками, как С или С++, то наверняка слышали про указатели. Они позволяют сильно повышать эффективность разных кусков кода. Но также они могут запутывать новичков — и даже опытных разработчиков — и приводить к багам управления памятью. А есть ли указатели в Python, можно их как-то эмулировать?
Указатели широко применяются в С и С++. По сути, это переменные, которые содержат адреса памяти, по которым находятся другие переменные. Чтобы освежить знания об указателях, почитайте этот обзор.
Благодаря этой статье вы лучше поймёте модель объектов в Python и узнаете, почему в этом языке на самом деле не существуют указатели. На случай, если вам понадобится сымитировать поведение указателей, вы научитесь эмулировать их без сопутствующего кошмара управления памятью.
SQL: пара приемов в SELECT-запросах
Автор: Юрий Цыганенко, Senior QA
Тестирование новых функций часто проводят на данных, взятых с уже функционирующей системы. В этом случае тестировщикам порою приходится строить запросы для хитрых случаев. Например, нужно протестировать новую функциональность интернет-магазина, причём играют роль интервалы между покупками. Нам доступны данные с работающей версии — можно загрузить их на тестовый стенд и проверить работу новой версии продукта. (NB!: конечно, имея дело с «живыми» данными, нужно исключить из них приватную информацию и обеспечить возможность логина интересующим нас пользователям).
Для выбора интересных нам пользовательских аккаунтов нужно сопоставить максимальные интервалы между покупками у разных пользователей.
От тестировщика требуется построить SQL-запрос, выдающий N пользователей, у которых интервалы между датами заказов будут наибольшими.
Аналогичные задачи и их разбор — под катом.
Аутентификация и авторизация в микросервисных приложениях
Автор: Вячеслав Михайлов, Solutions Architect
Это вводная часть материала, основанного на докладе, прочитанном мной прошлым летом. Печатный материал предполагает больше информации, т.к. в одном докладе обычно не получается рассказать обо всех деталях.
Мы разберемся с процессом аутентификации пользователя, работой технологии единого входа (Single sign-on/SSO), дадим общее представлении о технологии OAuth2 и принципах ее работы, не углубляясь в особенности конкретной технической реализации. В следующей статье в качестве примера удачной реализации мы рассмотрим библиотеку Thinktecture Identity Server v3, подробнее остановимся на ее функциональных возможностях, поговорим, как собрать минимальный набор компонент, необходимый для работы в микросервисной архитектуре и достойный использования в боевой системе. В третьей части мы покажем, как расширять эту библиотеку, подстраиваясь под нужды вашей системы, а завершит цикл статей разбор различных сценариев, встречавшихся в жизни многих разработчиков с рекомендациями для каждого случая.
Зачем нужен Refresh Token, если есть Access Token?
Кот под колпаком. Часть 1
В своей работе мы активно используем hashcat, но нам стало не хватать в этом продукте некоторых функций. Например: возможность отправки уведомлений, наличие единого интерфейса к управлению взломом хешей, удобного хранения "взломанных" хешей (через некоторое время смотреть в hashcat.potfile становится больно глазам). В некоторых ситуациях необходимо выполнять параллельный взлом хешей, то есть распределить задачи взлома между несколькими хостами.
В данном цикле статей мы хотим поделиться своими "находками" по теме интерфейсов управления и/или распределенного запуска программы hashcat, хранению статистики по "взломанным" хешам. В первой части рассмотрим некоторые существующие решения, далее подробнее рассмотрим продукт Hashtopolis.
В общем если тема вам близка — просим "под кат" и в комментарии.
Еще раз о passport.js
Топ-5 инструментов управления Agile-проектами
Agile-манифест
Испытывают ли разработчики ПО необходимость в инструментах для управления проектом? Могут ли такие инструменты помочь в написании качественного продукта?
Процесс разработки со стороны не кажется таким уж сложным: команда программистов получает задание и финансирование, на выходе выдает продукт, который нужен заказчику.
Идеальный рабочий процесс.
Описанный выше сценарий чаще всего может встретиться, когда небольшая (до трех человек) команда выпускает рабочие версии приложения с постоянной периодичностью.
Если проводить аналогию с живым организмом, каждый релиз стабильной версии продукта можно сравнить с пульсом. Если стабильный пульс — хороший показатель, неравномерный — сигнал о наличии внутренних проблем.
Для небольшого проекта обнаружить причин ухудшения — задача не сверхсложная. К сожалению, это нельзя сказать о проектах, в которых сразу несколько команд вовлечены в процесс разработки одного и того же продукта.
Эффективность и качество разработки зависят от целого ряда факторов:
- индивидуальная продуктивность разработчиков;
- стабильность выпускаемого релиза
- скорость адаптации к изменяющимся условиям и гибкость проекта;
- использование удаленных ресурсов;
- уровень и способы взаимодействия между клиентом и разработчиками.
Вне сомнений, неотъемлемая часть выпуска успешного программного продукта — грамотная организация рабочего процесса. Инструменты управления проектами как раз и призваны помогать в решении подобных проблем.
Использование хороших инструментов управления позволяет клиенту получить ясную картину, как команда справляется с поставленным задачами, оценить степень готовности продукта к концу очередного спринта/итерации.
Подходы к проектированию RESTful API
Автор: Вячеслав Михайлов, Solutions Architect.
В этой статье я поделюсь опытом проектирования RESTful API — на конкретных примерах покажу, как делать хотя бы простые сервисы красиво. Также мы поговорим, что такое API и зачем он нужен, поговорим об основах REST — обсудим, на чем его можно реализовывать; коснемся основных веб-практик, которые зависят и не зависят от этой технологии. Также узнаем, как составлять хорошую документацию, затрачивая на это минимум усилий, и посмотрим, какие существуют способы нумерации версий для RESTful API.
Часть 1. Теория
Итак, как мы все знаем, API — application programming interface (интерфейс программирования приложений), набор правил и механизмов, с помощью которых одно приложение или компонент взаимодействует с другими
Почему хороший API — это важно?
- Простота использования и поддержки. Хороший API просто использовать и поддерживать.
- Хорошая конверсия в среде разработчиков. Если всем нравится ваш API, к вам приходят новые клиенты и пользователи.
- Выше популярность вашего сервиса. Чем больше пользователей API, тем выше популярность вашего сервиса.
- Лучше изоляция компонентов. Чем лучше структура API, тем лучше изоляция компонентов.
- Хорошее впечатление о продукте. API — это как бы UI разработчиков; это то, на что разработчики обращают внимание в первую очередь при встрече с продуктом. Если API кривой, вы как технический эксперт не будете рекомендовать компаниям использовать такой продукт, приобретая что-то стороннее.
Теперь посмотрим, какие бывают виды API.
Виды API по способу реализации:
- Web service APIs
- XML-RPC and JSON-RPC
- SOAP
- REST
- WebSockets APIs
- Library-based APIs
- Java Script
- Class-based APIs
- C# API
- Java
Виды API по категориям применения:
- OS function and routines
- Access to file system
- Access to user interface
- Object remoting APIs
- CORBA
- .Net remoting
- Hardware APIs
- Video acceleration (OpenCL…)
- Hard disk drives
- PCI bus
- …
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность