Подходы к разработке современных информационных систем

Doc

Doc

АйТишник со стажем... Профиль автора.

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

Так зачем же валить их все в одну кучу под таким собирательным термином, как информационные системы?

В последние годы появилось множество новых инструментов для хранения и об­работки данных. Они оптимизированы для множества различных сценариев использования и более не укладываются в обычные категории. Например, суще­ствуют хранилища данных, применяемые как очереди сообщений (Redis) и очереди сообщений с соответствующим базам данных уровнем надежности (Apache Kafka). Границы между категориями постепенно размываются.

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

Например, при наличии управляемого приложением слоя кэширования (путем использования Memcached или аналогичного инструмента) либо сервера полнотекстового поиска (такого как Elasticsearch или Solr), отдельно от БД, синхрони­зация этих кэшей и индексов с основной базой данных становится обязанностью кода приложения. На рис. 1 в общих чертах показано, как все указанное могло бы выглядеть.

Если для предоставления сервиса объединяется несколько инструментов, то ин­терфейс сервиса или программный интерфейс приложения (API) обычно скрывает подробности реализации от клиентских приложений. По существу, мы создали новую специализированную информационную систему из более мелких, универ­сальных компонентов. Получившаяся объединенная информационная система может гарантировать определенные вещи: например, что кэш будет корректно сделан недействительным или обновлен при записи, вследствие чего внешние клиенты увидят непротиворечивые результаты. Вы теперь не только разработчик приложения, но и архитектор информационной системы.

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

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

 архитектура информационной системы, состоящей из нескольких компонентов

 Рис. 1. Одна из возможных архитектур информационной системы, состоящей из нескольких компонентов

В моем блоге мы сосредоточимся на трех вопросах, имеющих наибольшее зна­чение в большинстве программных систем.

  • Надежность. Система должна продолжать работать корректно (осуществлять нужные функции на требуемом уровне производительности) даже при неблагоприятных обстоятельствах (в случае аппаратных или программных сбоев либо ошибок пользователя).
  • Масштабируемость. Должны быть предусмотрены разумные способы решения возникающих при росте (в смысле объемов данных, трафика или сложности) системы проблем.
  • Удобство сопровождения. Необходимо обеспечить возможность эффективной ра­боты с системой множеству различных людей (разработчикам и обслуживающему персоналу, занимающимся как поддержкой текущего функционирования, так и адаптацией системы к новым сценариям применения).

Приведенные термины часто задействуют без четкого понимания их смысла. Ради более осмысленного проектирования мы достаточное время в моем блоге на изуче­ние концепций надежности, масштабируемости и удобства сопровождения. Далее, в следующих блогах, мы рассмотрим различные методики, архитектуры и алгорит­мы, используемые для достижения этих целей. Для начала рассмотрим, как ИТ-специалистам обеспечить надежность ИС.

Вас заинтересует / Intresting for you:

Разработка информационных сист...
Разработка информационных сист... 2682 просмотров Александров Попков Sun, 20 Jan 2019, 10:58:09
Разработка и исследование инфо...
Разработка и исследование инфо... 1375 просмотров Денис Wed, 27 Mar 2019, 03:15:40
Разработка информационных сист...
Разработка информационных сист... 3372 просмотров Александров Попков Mon, 21 Jan 2019, 10:19:21
Средства моделирования в компь...
Средства моделирования в компь... 1187 просмотров Александров Попков Sun, 17 Mar 2019, 15:50:15
Войдите чтобы комментировать