Системная архитектура и стек, используемые для больших приложений

У меня есть два вопроса о передовом опыте и технологиях, используемых в банковских приложениях и подобных приложениях с «высоким риском».

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

ВОПРОСЫ:

Какие шаблоны архитектуры системного уровня (High Level Design) используются в качестве основы для таких приложений?

И какие (стековые) языки программирования, языки запросов к базе данных и API-интерфейсы обычно используются для таких приложений с высоким риском, как банковские приложения (возможно, языки и FW, такие как Python и Django, MySQL, Cassandra)?

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

«Я знаю, что это много вопросов» — да, это слишком широко для ТАКОГО вопроса в соответствии с руководством в справочном центре , пожалуйста, отредактируйте, чтобы сузить его до конкретного вопроса, на который можно ответить.

jonrsharpe 22.12.2020 23:40
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
116
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот мои мысли по этому поводу:

  • В целом к ​​системам с высоким уровнем риска (банковские приложения, биржи) должны предъявляться строгие требования с точки зрения безопасности, доступности, надежности, корректности. Если одна из этих особенностей не будет тщательно продумана, могут произойти плохие вещи (люди потеряют деньги). Обычно это приводит к более высоким затратам по сравнению с другими типами приложений.
  • С точки зрения архитектуры, если вы хотите идти в ногу с текущими тенденциями, вы можете использовать микросервисы. Например, Monzo использует подход, основанный на микросервисах, для запуска своего бэкенда (эта красивая презентация содержит более подробную информацию). Это определенно новый способ создания масштабируемых серверных систем с малой задержкой (даже для приложений с высоким риском). Одним недостатком, который я вижу в этом подходе (могу ошибаться), является отсутствие зрелости (по сравнению с классической моделью клиент-сервер) и тот факт, что вам всегда нужно быть в курсе всех задействованных технологий с открытым исходным кодом, потому что они находятся в постоянном изменении. В крупных компаниях есть специальные команды, которые вносят свой вклад и остаются в курсе технологий с открытым исходным кодом.
  • Вы всегда можете использовать архитектуру клиент-сервер, где бэкенд — это просто парк узлов, которые обрабатывают запросы и взаимодействуют с базой данных. Это может быть немного проще для начала, но, вероятно, сложнее развиваться. Выбор архитектуры полностью зависит от стратегии развития, которую вы планируете для своей системы. В любом подходе есть плюсы и минусы.
  • Что касается технического стека, я бы выбрал зрелые языки/фреймворки, такие как Angular, Java, C#, Spring Boot. Таким образом, вам будет легче найти разработчиков, которые помогут вам, а также экосистему, созданную отраслью за эти годы.
  • Что касается базы данных, вы можете использовать реляционное решение (MySQL, SQL Server) и использовать транзакции для предоставления атомарных обновлений (например, балансов счетов). В какой-то момент это может повлиять на общую производительность с точки зрения задержки/пропускной способности. Подход без SQL может повысить скорость, но также может привести к дублированию данных и некоторым проблемам с выбором правильной модели данных.

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

Спасибо за подробный ответ, вы мне очень помогли!

Kanar 26.12.2020 17:11

Другие вопросы по теме