Метка «архитектура приложений» - 2

Архитектура высоконагруженных приложений. Масштабирование распределенных систем. Часть первая Некоторое время назад зам.главы московского офиса разработки Badoo Алексей Рыбак и ведущие IT-Компот записали выпуск подкаста «Архитектура высоконагруженных приложений. Масштабирование распределенных систем".

Сейчас мы сделали расшифровку подкаста, привели ее в удобный для чтения вид и разбили на 2 части.

О чем говорили в первой части:

  • Общая информация о проекте Badoo: стек технологий, характер и объем нагрузки, посещаемость.
  • Горизонтальное масштабирование проекта:

— веб-сервера, кеширование, мониторинг etc;
— подводные камни при масштабировании проекта;
— масштабирование баз данных, как правильно делать шардинг.

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

Новое приложение Yii в один clone. YiiBoilerplateЯ думаю, что у любой команды или самостоятельного разработчика на определенном этапе работы формируется некая базовая архитектура приложения, с которой ему или им удобно работать и которую можно перекидывать из проекта в проект. Мне в свое время на глаза попалось архитектурное решение команды CleverTech под названием YiiBoilerplate. Поскольку я не нашел публикаций на хабре по этой теме, предлагаю небольшой пост.
Вкратце особенности данного шаблона:

  • админка и Frontend реализованы в качестве полноценных приложений
  • общие настройки, модели и компоненты для Backend и Frontend можно хранить в одном месте
  • есть возможность переключения между настройками для Dev и Prod одной строчкой в командной строке

Под катом основная соль данного решения. Текста немного. Предлагаю обсудить иные решения и поделиться собственным опытом по теме архитектуры приложений Yii в комментариях.
Читать полностью »

Наверное, про Event Sourcing слышал каждый, кто хоть раз пересекался с темой CQRS и DDD. Это подход хранения данных, при котором вместо конечного результата храниться череда записей о событиях происшедших с некоторой сущностью. На сайте Мартина Фаулера есть подробное описание, а мы же остановимся на фундаменте, основных «печенюшках», а также проблемах в его применении.
Читать полностью »

Есть ли будущее за компонентной архитектурой?
Компонентные фреймворки позволяют быстро стоить приложения, используя готовые строительные блоки — компоненты. Они позволяют быстро строить приложения малой и средней сложности, но при этом очень сложно создавать большие, гибкие и настраиваемые приложения. Также по мере развития приложения его всё труднее и труднее адаптировать под новые требования клиентов. Задача этой статьи выяснить причины этих проблем и найти подходящее решение.
Читать полностью »

В этой короткой заметке я хотел бы систематизировать (а именно, расположить в иерархию) многие популярные принципы проектирования программных приложений (test-driven development, ООП, SOLID и т. д.), а также рассмотреть следствия из этой иерархии. В частности, такая иерархия (я надеюсь) позволит лучше расставлять приоритеты в разработке и профессиональном росте, лучше понимать старые технологии и быстрее изучать новые. При появлении новой парадигмы разработки (a la test-driven development) вы сможете быстро включить ее в эту иерархию и, следовательно, быстрее понять, из каких принципов исходили создатели парадигмы и как правильно ее использовать. Новичкам в программировании статья может быть полезна как обзор существующих принципов. И в качестве самого базового я полагаю разумным считать принцип «управления сложностью/минимизации технической сложности» МакКоннела. А самыми важными срествами минимизации сложности являются модульность и абстракция.
Читать полностью »

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

Обычно люди сходу начинают предлагать готовые реализации кеша, вроде memcached или HTTP-кеша, но это лишь ответ на вопрос где кешировать.

Кеширование – одна из многих тем, наряду с безопасностью и логированием, о которых знают и говорят все, но мало кто может это сделать правильно.
Читать полностью »

Всем привет. Несколько месяцев назад меня мучил вопрос о том, как правильно спроектировать свое приложение, чтобы потом не было противно смотреть в свой код. Тогда я решил покопаться в этом вопросе и после целого дня поиска я всё осознал. Решил наконец, поделиться своими знаниями, возможно они помогут кому-то, а может и нет. В общем читайте.

Всякие аббревиатурки

• Слой доступа к данным или DAL
Получает или изменяет данные напрямую из БД или посредством ORM. Данные фильтруются, но никак не обрабатываются. Также возможно получение данных из других источников, например через парсинг страниц.
• Бизнес слой или BLL
Работает с данными посредством DAL. Данные обрабатываются и приводятся к нужному виду. Это самый интересный слой. Здесь происходит вся логика приложения.
• Слой сервисов или SL
Этот слой встречается только в крупных приложениях. По сути это API интерфейс для доступа к приложению с других приложений. Этот слой не будет описываться, из-за моей крайней неосведомленности в этой области.
• Слой представления или PL
Собственно слой представления данных. Перерабатывает данные из BLL в нужные для представления сущности.
Читать полностью »

Декларативный подход и MDA ахритектура имеют целый ряд преимуществ, позволяющих существенно сократить издержки на разработку и поддержку информационных систем (ИС: CRM, WMS, Project Management, etc). Этот подход уже используется в ряде продуктов (таких как 1С, например). Тем не менее, декларативный подход в них используется для решения слишком узкого круга задач. В этой статье мы рассмотрим преимущества декларативного подхода, покажем как можно значительно расширить область его применения в построении ИС, проверим построенную модель на реальных задачах и продемонстрируем работу прототипа.

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

Наши идеи могут быть применены, как в сложных конструкторах информационных систем (таких как 1С), так и в веб-фреймворках (Django, RoR). Интересно узнать ваше мнение и замечания. Кроме того, мы ищем фирмы, которых заинтересует сотрудничество с целью использования наших наработок в своих продуктах.
Читать полностью »

Добрый день, читатели!
Сейчас все мобильные приложения(за очень редким исключением) используют сеть: для авторизации, получения/отправки данных и т.д.
Свой опыт на эту тему я решил собрать в статье.
Работа с сетью в стандартном приложении сводится к решению нескольких задач:

  • авторизация
  • запрос и отправка данных
  • хранение данных
  • работа с картинками

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

Автоматический контроль архитектуры в Visual Studio
Как вы не знаю, но я себя на этой картинке узнал. Ведь, согласитесь, когда проектируется архитектура приложения, все красиво, логично и соответствует лучшим мировым практикам. Но в процессе работы, сталкиваясь с ограничениями предъявляемыми архитектурой, мы зачастую думаем: «Вот здесь немножко нарушу, это ведь сэкономит мне час времени разработки. Ну а потом, как будет время, поправлю». Но, почему-то, это время так никогда и не наступает. На мой взгляд, единственным способом заставить себя, как программиста, следовать разработанной архитектуре, это научить среду разработки все отклонения и костыли показывать как ошибки компиляции. В этом случае, если код плох, он сразу будет исправлен, ну а если архитектура устарела, то будет исправлена она. Т.е. в хранилище кода всегда будет код соответствующей запланированной архитектуре.
Пара слов, о том, что будет подкатом:
1. Небольшая преамбула.
2. Восстановление архитектуры по имеющемуся проекту.
3. Настройка Visual Studio и TFS для автоматического контроля архитектуры.
Под катом много картинок и желание все описанное попробовать.
Читать полностью »


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