Метка «архитектура» - 2

В предыдущей части мы говорили об основных архитектурных принципах построения масштабируемых порталов. Сегодня поговорим об оптимизации правильно построенного портала. Итак: первый вид оптимизации — локальный кэш.

Читать полностью »

От B2C-порталов ожидается прежде всего масштабирование. К сожалению, масштабирование слишком часто объявляется вопросом Технологии — достаточно выбрать модную технологию и все проблемы решены. То, что это не так, может проявиться, позднее всего, уже в production mode (на рабочей системе).
Вместо того, чтобы махать технологической булавой, расскажу о том, как при помощи продуманной архитектуры и сознательного отказа от модели данных разработать высоко доступный (highly available), масштабируемый (scalable) портал. Первая часть опишет общие концепты, а возможные сценарии и их решения последуют.
Читать полностью »

image

Все начинается с примера.Читать полностью »

Недавно я написал:

Для программных продуктов еще не придумали адекватные инструменты визуализации. Об этом говорил еще Брукс, почти 40 лет назад. Поэтому разработчики ПО часто уподобляются слепым монахам из буддийской притчи.

Следствие #5. Необходимость постоянных коммуникаций участников разработки.

Из опыта. В среднем у каждого участника проекта разработки ПО на всякие разговоры уходит 50% рабочего времени. У нас это называется «синхронизация ментальных моделей».

И вот, как это обычно выглядит.


Читать полностью »

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

Компания Тима Кука, как известно, планирует грандиозную постройку нового кампуса в Купертино. По задумке Стива Джобса, создателя iPhone и iPad, четырехэтажный белоснежный офис с просторными конференц-залами и коридорами должен выглядеть как космический корабль, приземлившийся на Землю. При возведении круглого белоснежного здания должны быть задействованы самые современные материалы и технологии, а само архитектурное сооружение должно напоминать футуристическую космическую тарелку.
image
В сети можно найти множество слухов о постройке грандиозного по своим масштабом архитектурного сооружения Apple. Многие говорят чуть ли не о драконовских планах Apple. Архитектурный макет, на реализацию которого будет потрачено более $5 млрд,, недавно был продемонстрирован главным финансовым директором Apple Питером Оппенгеймером. Белоснежным шедевром с просторными конференц-залами и коридорами Apple готовит задать новый стандарт в дизайне интерьера офиса «космических» архитектурных сооружений. Читать полностью »

The Good, the Bad and the Ugly code
Хороший код или плохой? Лично для меня хороший код обладает следующими качествами:

  • Код легко понятен разработчикам разной квалификации и хорошо структурирован
  • Код легко изменять и поддерживать
  • Приложение выполняет свои функции и обладает достаточной, для выполняемого круга задач, отказоустойчивостью

Несмотря на короткое описание, о том, как добиться выполнения трех этих условий, написано много толстых книг.

Почему именно эти критерии? Сразу оговорюсь, речь сейчас идет о разработке ПО для бизнеса (enterprise application). Критерии оценки кода для систем реального времени, самолетов, систем жизнеобеспечения и МКС отличаются.
Читать полностью »

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

Как мы делали сотовое покрытие внутри большого здания со множеством металлоконструкций
Красный – RX менее -95 dBm, зелёный -85

Проще говоря, внутри ТЦ наше сотовое покрытие было уверенным только в галерее напротив крупного окна. При этом на улице в сантиметре от стены покрытие 100%.

Поставлена задача – обеспечить хорошее покрытие 2G и 3G по всему зданию. Из дополнительных условий – металл даже в стёклах (они тонированы), сложная конфигурация шахт. И ещё законченная отделка внутри практически исключает прокладку чего-то более-менее серьёзного. Ниже – как мы решали эту задачу и что получили в итоге. Читать полностью »

Про InfiniBand: как мы уменьшали пинг с 7 мкс до 2,4 мкс (и результаты тестов)
InfiniBand-свитч SX6005. 12 FDR 56Gb/s портов на одном юните, коммутация 1.3Тб/с.

Многие считают, что InfiniBand — это «космос». То есть считается, что дорого и нужно только для «суперкомпьютеров» (HPC) производительностью в 1-2 Петафлопа и с гиганскими объмами обрабатываемых данных. Тем не менее, с помощью этой технологии можно организовывать не только самые скоростные межсистемные соединения в кластерах, но и радикально снижать задержки в работе критичных приложений. Конкретно – делать то, что может решаться и с помощью Ethernet, но экономичнее и быстрее. Вот пример.

Задача

У одного нашего крупного заказчика из финансовой сферы была проблема в скорости работы двух приложений. Специфика приложений заключалась в том, что необходимо было обрабатывать большое количество транзакций с минимальной задержкой. 6-7 мкс latency – это лучшие результаты, которые они достигли путем апгрейда серверов и максимальной софтверной доработкой. Дальнейшие возможные оптимизации сулили улучшения на уровне 0,3-0,5 мкс. Мы же пришли и сообщили, что сможем уменьшить задержки в два раза. Читать полностью »

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

Что используется:

Как говорил раньше проект полностью написан на Python (со вставками Cython'а). Вся информация о изображениях, пользователях, статистики — хранится в БД MySQL.

Для поиска (основного) и фильтра используется Sphinx-сервер. Клиент написанный для twisted txsphinx.

Для «лайков», кол-во просмотров изображения и кол-во скачиваний используется Redis. Так-же в Redis-е хранится топ-изображений (главная страница) и «похожие изображения» (страница самого изображения). Для twisted клиент txredis, найденный на просторах и немного доработанный под себя (пока не в паблике).

Веб: TwistedWeb с шаблонизатором Jinja2, рисуется все Bootsrap'ом и Jquery. Конец цепочки это Nginx. Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js