Рубрики
Разработка

Асинхронные стендапы

Всем привет!
Давно хочу написать про одну технику, которую, как мне кажется, мы успешно применяем у себя в команде разработки, а именно — асинхронные текстовые ежедневные стендапы.

Сейчас попробую раскрыть этот термин подробнее. Наверное многие, особенно из мира ИТ, слышали про Scram, Agile, Kanban, и прочие гибкие методологии — как же иначе! Так вот в рамках некоторых гибких методологий есть практика «Stand-up meeting», или для простоты стендапов. Это короткие, ограниченные по времени стоячие митинги, обсуждения, которые проводятся каждый день, обычно в начале рабочего дня, их иногда ещё называют «дейликами» (от англ. daily meetings). Цель этих обсуждений — синхронизация работы всех членов команды. Обычно, в рамках этих стендапов каждый участник отвечает коротко на 3 вопроса:

  • Что сделал за вчера?
  • Что планируешь сделать сегодня?
  • И какие есть или могут быть проблемы?
Рубрики
Life Разработка

Интервью для Хекслета

Всем привет!

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

П.С. Интервью получилось аж на 2 часа, но для самых нетерпеливых в описании к видео на ютубе есть таймкоды! 😉

Рубрики
Разработка

WAMP как основа композитных SOA-приложений и его имплементация на Lua

Всем привет! Ох и давно я ничего не писал в блог — надо это как-то исправлять! А вот тут и повод как раз есть 🙂
В этом году, я, неожиданно, выступил на конференции Highload++, которая проходила 7−8 ноября в Сколково. На конференции я рассказал про протокол WAMP и способы его применения.

WAMP расшифровывается как Web Application Messaging Protocol. Это открытый протокол, реализующий два паттерна в рамках одного протокола: RPC и Publish/Subscribe. Как мне кажется, это отличная платформа для сферы Internet of Things, Smart City и вообще бизнес-приложений с большим количеством различных компонентов и сервисов.

Как активный участник группы разработки самого протокола, а также автор нескольких реализаций на JavaScript (Wampy.js) и Lua (Wiola, Loowy), я рассказал про сам протокол WAMP, его основные концепции и парадигмы, возможные сферы применения, реальные примеры использования, а также про имплементацию WAMP-роутера на базе Nginx/Lua и клиента на чистом Lua, некоторые особенности реализации и публикации.

Рубрики
Разработка

Прозрачная авторизация сервисов в гетерогенной среде на базе Nginx/LUA

Я давно уже полюбил связку Nginx и LUA. И сегодня хочу рассказать про один вариант использования этих инструментов.

Суть задачи/проблемы:
Представьте, что в вашей информационной системе есть набор различных сервисов, с которыми могут взаимодействовать клиентские приложения. Конечно же, доступ к системе и к сервисам, в частности, разрешается после авторизации.
Все сервисы общаются с клиентами по разным протоколам (HTTP REST API, SOAP, XML-RPC, WebSocket, WAMP, GET/POST запросы и так далее) и даже написаны на разных языках.

Вопрос: как минимальными усилиями сделать, чтобы доступ к любым сервисам был возможен только авторизованным пользователям?

Рубрики
Разработка

WAMP как основа композитных SOA-приложений

Как вы, возможно, заметили, мне настолько нравится протокол WAMP, что я даже написал пару его имплементаций на JS и LUA. Но сейчас мне хочется порассуждать на тему использования WAMP в качестве основы для информационных систем (далее ИС), построенных по принципу SOA.

Для начала, скажу пару слов про SOA для тех, кто не очень знаком с этим термином. Итак, SOA, Service Oriented Architecture, или же по-русски сервисно-ориентированная архитектура — это не фреймворк, не протокол, не приложение, а архитектурный подход к разработке программного обеспечения, который основывается на следующих принципах:

  • Сервисно-ориентированность. Основной единицей является сервис. Это логически обособленный программный модуль, который выполняет конкретную повторяющуюся бизнес-функцию из всего бизнес-процесса предприятия. Например, сервис отправки емейл-уведомлений.
  • Сервисные контракты (интерфейсы). Доступ к сервисам осуществляется через четко определенные интерфейсы, которые являются платформо и языково независимыми и используют открытые стандарты.
  • Слабое связывание компонентов. Сервисы могут быть связаны между собой только по средством интерфейсов, и все что сервисы знают про друг друга — это то, что они есть.
  • Абстракция. Сервисы для внешнего мира выглядят как черные ящики, то есть они скрывают свою внутреннюю реализацию и предоставляют только интерфейсы для обращений к себе из вне.
  • Автономность. Еще раз повторюсь, что каждый сервис — это логически завершенная единица, и каждый сервис выполняет заложенную в него бизнес-логику не прибегая к какой-либо помощи из вне. Это не исключает возможность обращения сервиса к другим сервисам, так как это может быть частью этой самой бизнес-логики.
  • Повторное использование. Нет смысла делать сервис, который выполняет одну маленькую бизнес-функцию, которая используется в каком-то одном конкретном месте. В сервисы имеет смысл выносить какие-то бизнес-функции, которые могут быть задействованы в разных бизнес-процессах. Тот же сервис оповещения по емейл может использоваться как для оповещения клиентов, так и менеджеров.
  • Statelessness. Сервисы не хранят состояния между вызовами.
  • Обнаружение сервисов. О каждом сервисе, входящем в состав ИС, известно его общедоступное месторасположение и интерфейс взаимодействия. Так же сюда стоит отнести возможность легкого динамического подключения сервисов во время работы ИС.
Рубрики
Разработка

Философское: from __future__ import web.framework.* или где искать идеальный фреймворк?

JS_FrameworksВ последнее время обсуждали с ребятами текущее положение дел в веб-разработке, современные фреймворки и, конечно же, что будет в будущем. Поэтому решил оформить свои рассуждения на эту тему в виде поста. А спустя сколько-нибудь лет посмотрим, как оно будет на самом деле.

Рубрики
Разработка

Пара слов про WAMP

wamp-slides-logo Ох, что-то давно я не писал ничего в блог… Надо это исправлять! Так вот, летом, 17 июля, я выступал на 13-й встрече разработчиков «MoscowJS» с докладом «Пара слов про WAMP». К сожалению с видео возникли некоторые накладки, и пока нет времени попытаться все исправить, чтобы его можно было посмотреть. Поэтому решил выложить хотя бы слайды с доклада. Возможно кому-то пригодится и станет что-то яснее и понятнее относительно протокола WAMP.

Рубрики
Разработка

RadioJS — подкаст о веб-разработке, фронтенде и client-side

radiojs Что-то давно я ничего не писал в блог. А ведь меж тем, мы вместе с Мишей Башкировым и Андреем Саломатиным запустили новый подкаст «RadioJS». Он посвящен разным аспектам веб-разработки, таким как технологии, протоколы, фреймворки, инструменты и библиотеки. В каждом выпуске мы обсуждаем самые интересные на наш взгляд новости последнего времени. Периодически приглашаем гостей поделиться опытом.

У подкаста есть свой дом: radioJS.ru. Там можно прочитать описания всех выпусков, послушать их, а при желании и скачать, а так же высказать свое мнение в комментариях. Подкаст, конечно же, доступен как в виде RSS, так и в iTunes.

Рубрики
Разработка

Вы все еще пишете ТЗ в Word? — Тогда мы идем к Вам!

По долгу службы, с некоторых пор, пришлось заняться написанием ТЗ на разработку. Когда передо мной только встала такая задача, как оказалось, все делали это в MS Word. Я по началу тоже попробовал писать ТЗ в доке, но не выдержал и недели. Уж не знаю, или Word — это зло, или я просто не умею его готовить, но факт остается фактом, бОльшую часть времени я, в силу своей аккуратности и щепетильности, занимался форматированием: то отступы в списках разъедутся, то межстрочные интервалы в разных местах разные, а уж про разрешение конфликтов совместного редактирования — я вообще молчу! Да и ТЗ предназначались для разработчиков, которые любят простой текст, системы контроля версий и сидят на разных операционных системах. И я озадачился поиском более подходящих инструментов. И вот что у меня получилось.

Рубрики
Разработка

Wiola — реализация WAMP на Lua

В продолжение темы про Wampy.js, мою JS-библиотечку, реализующую клиент WAMP, я подумал, что неплохо бы написать и серверную реализацию WAMP, потому как сейчас единственная реализация роутера WAMP — это AutobahnPython. Так появилась на свет Wiola — реализация WAMP-роутера на Lua на базе nginx/openresty и модулей к ним для работы с Lua.