[Перевод] Питера Хинченс: Психология архитектуры программного обеспечения

Один из принципов Социальной Архитектуры заключается в том, что способ нашей организации важнее того, кем мы являемся.
imageДиркжан Октман (Dirkjan Ochtman) обратил мое внимание на определение архитектуры программного обеспечения в Википедии: «совокупность структур, требуемых для понимания системы, которая объединяет элементы программного обеспечения, связи между ними и их принадлежность». Для меня эта бессодержательная и цикличная болтовня служит хорошим примером того, как унизительно мало мы знаем о том, что на самом деле важно при создании масштабной архитектуры программного обеспечения. Архитектура — это искусство и наука создания крупных искусственных структур, используемых человеком. Если я что и понял и успешно применял на протяжении тридцати лет при создании все более крупных систем программного обеспечения, так это то, что программное обеспечение — это все о людях. Крупные структуры сами по себе бессмысленны. Важно то, как они функционируют для использования их людьми. А в программном обеспечении, человеческое начинается с программистов, которые делают его. Основные проблемы в архитектуре программного обеспечения кроются в человеческой психологии, а не в технологиях. Наша психология по-разному может влиять на нашу работу. Я могу привести примеры того, как группа людей словно становится глупее по мере того, как она расширяется, или когда им приходится работать, будучи разделенными огромным расстоянием. Значит ли это, что чем меньше команда, тем она эффективней? Как же тогда такое крупное глобальное сообщество как ZeroMQ умудряется успешно работать? ...Далее...

Скрестить ежа (Marathon) с ужом (Spring Cloud). Эпизод 2

В первом эпизоде у нас получилось вытянуть информацию из Mesos Marathon прямиком в бины Spring Cloud-а. Вместе с тем у нас появились первые проблемы, одну из которых мы разберём в текущей части повествования. Давайте вспомним нашу конфигурацию подключения к Marathon-у:


spring:  
    cloud:
        marathon:
            scheme: http       #url scheme
            host: marathon     #marathon host
            port: 8080         #marathon port

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

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

[Перевод] Как новичку поучаствовать в опенсорс разработке?

В прошлый раз я публиковал пост о сложностях, с которыми сталкиваются разработчики при попытках поучаствовать в опенсорс проектах. Не хотелось оставлять эту проблему без описания возможного решения, поэтому в этот раз я перевел для вас статью известного опенсорс активиста Кента Доддса. В статье автор делится несколькими любопытными лайфхаками — надеюсь, кому-то из читателей они помогут извлечь больше пользы/получить больше удовольствия от участия в опенсорс проектах.

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

Как мы выбирали между Elastic и Tarantool, а сделали свою (самую быструю) in-memory БД. С Join и полнотекстовым поиском

Всем привет,

Я директор по разработке компании Рестрим. Мы разрабатываем и сопровождаем платформу IPTV/OTT телевидения. У платформы около 10 миллионов пользователей. Платформа первого поколения проектировалась в 2010 году, и была ориентирована в первую очередь на IPTV приставки.

С середины 2016 года мы проектируем и разрабатываем новое поколение платформы. Принципиальное отличие от первого поколения — поддержка API "тонкого" клиента. Если старая платформа предполагает, что на клиента при запуске загружается метаинформация о всем контенте, который доступен для абонента, то новая платформа должна отдавать срезы данных отфильтрованные и отсортированы для отображения на каждом экране/странице.

Высокоуровневая архитектура на уровне хранения данных внутри системы — постоянное хранение всех данных в централизованном реляционном SQL хранилище. Выбор пал на Postgres, тут никаких откровений. В качестве основного языка для разработки — выбрал golang.

У системы порядка 10м пользователей. Мы посчитали, что с учетом профиля теле-смотрения, 10М пользователей может дать несколько сотней тысяч RPS на всю систему.

Это означает, что запросы от клиентов и близко не стоит подпускать к реляционной SQL БД без кэширования, а между SQL БД и клиентами должен быть хороший кэш. Посмотрели на существующие решения — погоняли прототипы. Данных, по современным меркам у нас немного, но параметры фильтрации (читай бизнес-логика) — сложные, и главное персонализированные — зависящие от сессии пользователя, т.е. использовать параметры запроса как ключ кэширования в K-V кэше будет очень накладно, тем более пейджинг и богатый набор сортировок никто не отменял. По сути, под каждый запрос от пользователя формируется полностью уникальный набор отфильтрованных записей.

...Далее...

Как мы выбирали между Elastic и Tarantool, а сделали свою (самую быструю) inmemory БД. С Join и полнотекстовым поиском

Всем привет,

Я директор по разработке компании Рестрим. Мы разрабатываем и сопровождаем платформу IPTV/OTT телевидения. У платформы около 10 миллионов пользователей. Платформа первого поколения проектировалась в 2010 году, и была ориентирована в первую очередь на IPTV приставки.

С середины 2016 года мы проектируем и разрабатываем новое поколение платформы. Принципиальное отличие от первого поколения — поддержка API "тонкого" клиента. Если старая платформа предполагает, что на клиента при запуске загружается метаинформация о всем контенте, который доступен для абонента, то новая платформа должна отдавать срезы данных отфильтрованные и отсортированы для отображения на каждом экране/странице.

Высокоуровневая архитектура на уровне хранения данных внутри системы — постоянное хранение всех данных в централизованном SQL хранилище. Выбор пал на Postgres, тут никаких откровений. В качестве основного языка для разработки — выбрал golang.

У системы порядка 10м пользователей. Мы посчитали, что с учетом профиля теле-смотрения, 10М пользователей может дать несколько сотней тысяч RPS на всю систему.

Это означает, что запросы от клиентов и близко не стоит подпускать к SQL БД без кэширования, а между SQL БД и клиентами должен быть хороший кэш. Посмотрели на существующие решения — погоняли прототипы. Данных, по современным меркам у нас немного, но параметры фильтрации (читай бизнес-логика) — сложные, и главное персонализированные — зависящие от сессии пользователя, т.е. использовать параметры запроса как ключ кэширования в K-V кэше будет очень накладно, тем более пейджинг и богатый набор сортировок никто не отменял. По сути, под каждый запрос от пользователя формируется полностью уникальный набор отфильтрованных записей.

...Далее...

Моделирование автопилота на авиасимуляторе

Можно ли использовать продольно расположенный полупроводниковый гироскоп, который измеряет угловую скорость разворота самолета, для удержания крена? Проверим это на авиасимуляторе с внешним автопилотом. А также хотелось бы проверить алгоритмы управления самолетом. Такую возможность предоставляет авиасимулятор XPLANE.



Рис.1


Почему именно XPLANE? Он позволяет выводить данные с датчиков симулируемого самолета

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

[Перевод] Распознавание жестов движений на Android используя Tensorflow

image

Введение



В сегодняшние дни есть много разных способов взаимодействия со смартфонами: тач-скрин, аппаратные кнопки, сканер отпечатков пальцев, видео камера (например система распознавания лиц), D-PAD, кнопки на гарнитуре, и так далее. Но что насчет использования жестов движений?

Например быстрое перемещение телефона вправо или влево держа его в руке может очень точно отражать намерение перейти на следующую или предыдущую песню в плей-листе. Или же вы можете быстро перевернуть телефон верх ногами и потом назад для обновления контента приложения. Внедрение такого взаимодействия выглядит многообещающим и буквально добавляет новое измерение в UX. Эта статья описывает как реализовать подобное используя машинное обучение и библиотеку Tensorflow для Android.

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

Интервью с главным digital-стратегом Adblock Plus: «Отлично мне спится, Бурумыч, отлично!»

image


Вопрос от Бурума: Как вам спится?

Лаура Софи Дорнхайм, главный диджитал-стратег eyeo: Я сплю и вижу, как бы я поубивала всех журналистов… Шучу. Мне отлично спится.

На кого вы учились, что взламывали в детстве?

Лаура: Давным-давно, В 14-15 лет я начала интересоваться интернетом. В то время крупнейший в Германии интернет-провайдер работал так: когда пользователь логинился, создавался URL, который имел timestamp, который было легко воссоздать, зная только e-mail адрес и алгоритм конструирования URL. Так я получила доступ ко входящим сообщениям моих друзей. Это была моя самая крупная хакерская атака, и с тех пор я ни-ни.

Я поступила на бизнес-информатику, но там было ооочень уныло. Я поклялась, что не буду заниматься PR и маркетингом, но для ЭТОЙ компании я счастлива заниматься этими направлениями.

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

[Перевод] Как построить сообщество. Перевод книги «Социальная архитектура»: Глава 3. Сообщество ZeroMQ

Можем ли мы целенаправленно строить сообщества?
image Меня иногда спрашивают, что такого особенного в ZeroMQ. На это я всегда отвечаю, что ZeroMQ — возможно лучший ответ, который у нас есть на злободневный вопрос «Как создавать распределенные программные средства, которые требуются от нас 21 век?». Но, помимо этого, ZeroMQ выделяется благодаря своему сообществу. Что и отличает волков от овец. Есть три основных open source паттерна. Во-первых, когда крупная фирма выбрасывает на рынок код, чтобы расправится с конкурентами. Это модель Apache Foundation. Во-вторых, когда крошечные команды и маленькие компании строят свою мечту. Это наиболее распространенная open source модель, которая может быть наиболее коммерчески успешна. И наконец, агрессивные и разнообразные сообщества, всей толпой пробирающиеся сквозь дебри проблем. Это модель Linux, и вот к ней мы и стремимся в ZeroMQ. Сложно переоценить мощь и упорство работающего open source сообщества. Наверно, не существует лучшего способа создания программного обеспечения в долгосрочной перспективе. Сообщество не только занимается решением самых релевантных проблем, но и делает это оптимально, аккуратно, наблюдая за результатами годами, десятилетиями, пока они сохраняют значение, после чего спокойно оставляет их. Читать дальше →...Далее...

Использование Grafana с IoT-платформой DeviceHive



Авторы: Игорь Трамбовецкий, Developer; Николай Хабаров, Embedded Expert

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

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


Последние посты