Написать пост

Что нужно учесть при проектировании своего приложения

Аватар Никита Прияцелюк

Итак, вы собираетесь создать приложение. Вы продумали его архитектуру? Посмотрите советы по проектированию приложения, чтобы сделать это правильно.

Обложка поста Что нужно учесть при проектировании своего приложения

Перед тем, как создавать приложение, необходимо продумать его архитектуру. Как это сделать правильно рассмотрим в статье.

Упростите жизнь разработчикам

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

Что упростит разработчику жизнь:

  • Сделайте приложение максимально простым и понятным;
  • Не перегружате его излишней функциональностью — внедряйте только необходимые фичи;
  • Используйте общепринятый подход к решению задач;
  • Используйте вспомогательные инструменты;
  • Сделайте приложение выразительным — каждая задача, решаемая в нём, должна быть очевидной;
  • Если вы планируете использовать сторонние библиотеки, то позаботьтесь о том, чтобы они были наилучшими.
Чтение по теме: Сначала — монолит, или правильный путь к микросервисной архитектуре

Уделите внимание мелочам

  • Решайте все задачи, поставленные перед проектом, последовательно;
  • Сделайте так, чтобы самые часто встречающиеся задачи выполнялись проще и прозрачней других;
  • Сделайте приложение легкорасширяемым;
  • Сделайте его настолько простым, насколько это возможно;

Помните о юзабилити

Что нужно учесть при проектировании своего приложения 1

Уровень юзабилити жизненно важен по ряду причин. Он повышает доверие и удовлетворённость клиентов и снижает затраты.

  • Исключите из приложения технологии, специфичные для конкретного поставщика;
  • Ваше приложение должно поддерживать последние стандарты;
  • Обеспечьте приложению быстрый отклик;
  • Ваше приложение должно по максимуму использовать графические возможности;
  • Добавьте анимацию там, где это уместно;
  • Добавьте поддержку A/B тестирования;
  • Включите в приложение поддержку аналитики.

Обеспечьте безопасность

Что нужно учесть при проектировании своего приложения 2

Безопасность — это способность системы снизить вероятность злонамеренных или случайных действий за пределами ожидаемого использования системы и предотвратить раскрытие или потерю информации.

  • Проходите сторонние пентесты;
  • Внедряйте стандарты безопасности везде, где это возможно;
  • Следуйте лучшим практикам безопасности.

Обеспечьте надёжность

Что нужно учесть при проектировании своего приложения 3

Надёжность — это способность системы продолжать работать ожидаемым образом с течением времени. Надёжность измеряется как вероятность того, что система не даст сбой и что она будет выполнять свои функции в течение заданного интервала времени.

  • Очевидно, что в системе не должно происходить сбоев, но всё же они происходят. Нужно обеспечить журналирование и анализ таких сбоев;
  • Система должна быть максимально автономной — если произошёл сбой, будет идеально, если она сама с этим справится;

С умом подходите к производительности

  • Обеспечьте приложению уровень производительности, соответствующий вашей задаче и возможностям. Иногда увеличение производительности может слишком дорого стоить с точки зрения затрачиваемых человеческих и аппаратных ресурсов. Если производительность для ваших задач не критична, не стоит на этом зацикливаться;
  • Минимизируйте задержку до появления интерфейса (< 250 мс для 90% запросов, < 2 с для всех запросов) или добавьте механизмы для её компенсации, например, кеширование.

Заложите масштабируемость

Что нужно учесть при проектировании своего приложения 4

Масштабируемость — это способность системы обрабатывать возрастающую нагрузку без влияния на производительность, либо способность легко увеличить эту производительность.

  • Отдайте предпочтение горизонтальному, а не вертикальному масштабированию;
  • Заложите возможность легко добавить больше узлов системы;
  • Позвольте балансировать нагрузку между узлами;
  • Не перегружайте каждый отдельно взятый узел — распределяйте нагрузку.

Заложите тестируемость

Тестируемость — показатель того, насколько хорошо система или её компоненты позволяют создавать требования для тестирования и проводить тесты, чтобы определить, выполняются ли эти требования.

  • Внедрите в систему механизмы для имитации данных;
  • Убедитесь, что процессы, работающие с наборами данных, быстро обрабатывают наборы небольшого размера;
  • Добавьте в приложение возможность автоматизации тестирования интерфейса.

Внедрите интероперабельность

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

  • По возможности используйте открытые стандарты;
  • Если это по какой-то причине невозможно, то опубликуйте используемые стандарты;
  • Чем больше сторонних систем поддерживает ваше приложение, тем лучше.

Обеспечьте прозрачность и устранение неполадок

Когда что-то идёт не так, насколько легко проследить ошибку и воспроизвести её?

  • Журналируйте все ошибки и важные события;
  • Сделайте трассировку стека простой для понимания;
  • Включайте в лог все данные, необходимые для повторного воспроизведения ошибки;
  • Добавьте возможность включения/выключения отладочных логов;
  • Сделайте так, чтобы течение процесса, вызвавшего ошибку, можно было легко проследить через всё приложение.

Используйте популярные фреймворки

У сторонних библиотек, которые вы используете, должно быть активное сообщество. Чем больше у продукта или фреймворка сообщество, тем проще будет с ним работать, так как, скорее всего, многие проблемы уже решили до вас другие пользователи.

Характеристики социально активного приложения:

  • Множество плагинов и проектов с открытым исходным кодом, связанных с фреймворком;
  • Активный репозиторий на GitHub, если библиотека c открытым исходным кодом;
  • Много вопросов и ответов на StackOverflow;
  • Множество книг, блогов и руководств.

Сделайте развёртывание максимально простым

Развёртывание и распространение в разных окружениях дорого обходится. Продукт, который трудно развернуть, требует более длительных циклов релиза и затрудняет реагирование на внесение изменений или исправление ошибок.

  • Добавьте автоматическое развёртывание по сценарию;
  • Упростите процесс написания автоматизированных тестов;
  • Минимизируйте время сборки системы;
  • Минимизируйте физический размер системы;
  • Упростите откат системы, чтобы облегчить себе жизнь, если что-то пойдёт не так.

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

Архитектура ПО
14840