SlideShare ist ein Scribd-Unternehmen logo
1 von 19
14/11 
Кострома 
Торговая платформа НП 
РТС: задачи, архитектура 
и подход к тестированию 
Сергей Замолоцких
НП РТС 
НП РТС основано в 1995 году и до декабря 2011 года 
было частью биржевой группы РТС. 
Члены НП РТС – более 100 компаний, в том числе 
ведущих брокеров и дилеров на российском рынке. 
НП РТС ставит своей целью развитие инфраструктуры 
российского финансового рынка. 
2
НП РТС 
К концу 2012 года НП РТС подготовила инфраструктуру для 
создания биржевой группы - ОАО «Санкт-петербургская 
биржа» и ОАО «Клиринговый центр МФБ». 
В начале 2013 года НП РТС начала работу над созданием 
межброкерской торговой системы с функцией best execution. 
В сентябре 2013 года задача была расширена до создания 
универсальной многофункциональной биржевой платформы 
с поддержкой широкого спектра рынков и внешних 
площадок. 
3
Проект по созданию платформы 
В сентябре 2013 года стояла задача запуска в опытную 
эксплуатацию за 9 месяцев версии с функционалом Best 
Execution. В целом она была решена - в июне 2014 года были 
запущены торги на первой версии системы и дан доступ 
тестовым участникам. 
Далее шел процесс доработок под пожелания пользователей и 
покрытию системы полноценной системой тестов. 
В ноябре 2014 планируется обновление версии платформы и 
запуск рынка иностранных ценных бумаг с расчетами в 
долларах США. 
4
Архитектура платформы 
1. Операционная система Linux. Быстрые модули написаны на 
C++. Управляющие и некритичные к скорости на Java. 
Тестовые скрипты пишутся на python. 
2. Архитектура модульная. Большинство модулей работают как 
преобразователи данных - получают входящие потоки 
данных, обрабатывают и выдают исходящие потоки. Есть 
модули имеющий под собой БД. 
3. В разработке используется универсальный контейнер, 
позволяющий абстрагировать логику от работы с 
интерфейсами и сильно облегчающий разработку и 
тестирование модулей системы. 
5
Модульное тестирование 1 
Архитектура платформы позволяет 
тестировать модули системы с помощью задания данных во 
входных и выходных потоках за счет абстрагирования 
реализации ПО от специфики связей в системе 
создать внутри контейнера прототип модуля (например на 
python) внешне идентичный промышленной реализации 
6
Модульное тестирование 2 
Широкое покрытие функционала модульными тестами 
написанными разработчиками. 
Автоматизированное тестирование путем ручного 
формирования как тестовых входящих данных, так и 
выходных данных. Применяется для логически самых простых 
модулей. 
7
Модульное тестирование 3 
Автоматизированное тестирование с использованием прототипа. 
В этом случае вручную формируются только входные 
примеры. Применяется для более сложных модулей. 
Проверка проводится сравнением выхода прототипа и 
продукта. Прототип как правило пишется отличным от 
продукта образом, что снижает вероятность появления 
одинаковых ошибок. 
В сложных случаях прототип пишется постановщиком для 
одновременной проверки правильности понимания 
постановки разработчиком. 
8
Case 1. Отладка многопоточной бизнес 
логики. На примере модуля расчета 
рисков. 
В основе система массового обслуживания: N=5 
потоков обрабатывают изменения состояния от 100 
до 1 млн портфелей. 
Данные относящиеся к разным портфелям 
изолированы. 
Отсутствие одновременного доступа к данным из 
разных потоков. 
Доступ к общим данным только на чтение. 
9
Case 1. Отладка многопоточной бизнес 
логики 2 
Выполняются задачи 
- Онлайн обработка входящих приказов 
- Изменение входящих параметров и соответствующий 
пересчет всех портфелей под непрерывной нагрузкой. 
10
Case 1. Отладка многопоточной бизнес 
логики 3 
Система тестирования состоит из 
- Прототипа для проверки расчета по одному портфелю с 
данным набором входящих параметров. 
- Набора тестовых примеров для тестирования алгоритма. 
- Регрессионного механизма сверки результата обработки 
потока операций с результатом восстановления по срезу 
позиций и заявок. 
- Нагрузочного стенда для проверки корректности 
многопоточной обработки по итогам выполнения различных 
тестовых сценариев. При этом суммарная пропускная 
способность одного экземпляра модуля должна быть не 
менее 50 тыс операций в секунду. 
11
Комплексное тестирование 
Тестирование жизненного цикла системы. 
Комплексное тестирование функциональных блоков. 
Комплексные тесты с точки зрения клиентов. 
Тестирование восстановления при нештатных ситуациях. 
12
Case 2. Восстановление 
Главное требование: 
При сбое отосланная клиентам информация 
должна остаться валидной. Это касается сделок, а 
также операций с заявками. 
Другие требования к восстановлению: 
Гарантия возможности. 
Надежность. 
Быстрота. 
13
Case 2. Восстановление 1 
В ходе проектирования рассматривались разные варианты 
архитектуры, различные в части восстановления: 
1. Единая шина данных. Единый упорядоченный основной поток 
торговых данных. Каждый модуль системы имеет один вход и 
восстановление тривиально. 
Плюсы - простота восстановления. Минусы - 
производительность, ограничения в масштабировании. 
2. Модульная архитектура с произвольными связями. 
Плюсы - масштабирование, гибкость в 
конфигурировании, минусы - сложность восстановления. 
Был выбран вариант 2. 
14
Case 2. Восстановление 2 
Восстановление проводится в первую очередь на основе 
содержимого исходящих потоков модулей, затем 
содержимого входящих потоков. 
В процессе восстановления используется механизм отсечек - 
checkpoints от которых клиент потока может проводить 
восстановление в режиме штатной работы. 
Отсечка создается один раз в день в каждом торговом потоке. 
При создании отсечки заявки снимаются и выставляются 
заново, отсылаются нужные для восстановления значения 
внутренних переменных. 
15
Case 2. Восстановление 3 
В исходящий поток пишутся ссылки на исходные сообщения. 
Также сохраняются срезы данных - заявок и позиций, для 
ускорения восстановления. 
При восстановлении модуль сначала восстанавливает 
внутреннее состояние, а потом начинает обработку входящих 
сообщений. Это достигается конфигурированием контейнера, 
но все равно нуждается в тестировании. 
16
Case 2. Восстановление 4 
Казалось возможным создать не слишком сложную систему 
восстановления на таких принципах. Однако на практике из- 
за большого числа и различного характера связей некоторых 
модулей возникли нюансы и отладка восстановления такой 
системы оказалась сложнее чем ожидалось. 
Сложная матрица тестовых случаев - много комбинаций 
состояний входных линков. 
Восстановление не было запрототипировано, поэтому большой 
расход труда на формирование тестовых примеров. 
17
Case 2. Восстановление 5 
Нужно проверять разные комплексные сценарии 
восстановления. Облегчается тем что контейнер позволяет 
тестировщику конфигурационно формировать нужную среду 
состоящую из нескольких модулей и произвольных связей 
между ними. 
Также есть фреймворк для проверки состояния в контрольных 
точках без формирования полного тестового выхода. 
18
СПАСИБО ЗА ВНИМАНИЕ! 
E-mail: misha@rts.ru 
www.nprts.ru

Weitere ähnliche Inhalte

Mehr von Iosif Itkin

EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market InfrastructuresEXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market InfrastructuresIosif Itkin
 
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...Iosif Itkin
 
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiEXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiIosif Itkin
 
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenEXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenIosif Itkin
 
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...Iosif Itkin
 
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...Iosif Itkin
 
QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)Iosif Itkin
 
Machine Learning and RoboCop Testing
Machine Learning and RoboCop TestingMachine Learning and RoboCop Testing
Machine Learning and RoboCop TestingIosif Itkin
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileIosif Itkin
 
2018 - Exactpro Year in Review
2018 - Exactpro Year in Review2018 - Exactpro Year in Review
2018 - Exactpro Year in ReviewIosif Itkin
 
Exactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyExactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyIosif Itkin
 
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesFIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesIosif Itkin
 
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)Iosif Itkin
 
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...Iosif Itkin
 
Using Cluster Analysis for Characteristics Detection in Software Defect Reports
Using Cluster Analysis for Characteristics Detection in Software Defect ReportsUsing Cluster Analysis for Characteristics Detection in Software Defect Reports
Using Cluster Analysis for Characteristics Detection in Software Defect ReportsIosif Itkin
 
EXTENT-2017: Testing in Distributed Ledger Systems
EXTENT-2017: Testing in Distributed Ledger SystemsEXTENT-2017: Testing in Distributed Ledger Systems
EXTENT-2017: Testing in Distributed Ledger SystemsIosif Itkin
 
EXTENT-2017: Independent QA in Agile
EXTENT-2017: Independent QA in AgileEXTENT-2017: Independent QA in Agile
EXTENT-2017: Independent QA in AgileIosif Itkin
 
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...Iosif Itkin
 
EXTENT-2017: Keep Investing in QA
EXTENT-2017: Keep Investing in QAEXTENT-2017: Keep Investing in QA
EXTENT-2017: Keep Investing in QAIosif Itkin
 
EXTENT-2017: MiFID II and Impacts on Trading Workflow
EXTENT-2017: MiFID II and Impacts on Trading WorkflowEXTENT-2017: MiFID II and Impacts on Trading Workflow
EXTENT-2017: MiFID II and Impacts on Trading WorkflowIosif Itkin
 

Mehr von Iosif Itkin (20)

EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market InfrastructuresEXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
EXTENT 2019: Exactpro Quality Assurance for Financial Market Infrastructures
 
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
ClearTH Test Automation Framework: Case Study in IRS & CDS Swaps Lifecycle Mo...
 
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan ShamraiEXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
EXTENT Talks 2019 Tbilisi: Failover and Recovery Test Automation - Ivan Shamrai
 
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference OpenEXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
EXTENT Talks QA Community Tbilisi 20 April 2019 - Conference Open
 
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
User-Assisted Log Analysis for Quality Control of Distributed Fintech Applica...
 
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
QAFF Chicago 2019 - Complex Post-Trade Systems, Requirements Traceability and...
 
QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)QA Community Saratov: Past, Present, Future (2019-02-08)
QA Community Saratov: Past, Present, Future (2019-02-08)
 
Machine Learning and RoboCop Testing
Machine Learning and RoboCop TestingMachine Learning and RoboCop Testing
Machine Learning and RoboCop Testing
 
Behaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibileBehaviour Driven Development: Oltre i limiti del possibile
Behaviour Driven Development: Oltre i limiti del possibile
 
2018 - Exactpro Year in Review
2018 - Exactpro Year in Review2018 - Exactpro Year in Review
2018 - Exactpro Year in Review
 
Exactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and StrategyExactpro Discussion about Joy and Strategy
Exactpro Discussion about Joy and Strategy
 
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing ChallengesFIX EMEA Conference 2018 - Post Trade Software Testing Challenges
FIX EMEA Conference 2018 - Post Trade Software Testing Challenges
 
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
 
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...
Sibos 2017: Disruptive functional testing - the next frontier in post-trade s...
 
Using Cluster Analysis for Characteristics Detection in Software Defect Reports
Using Cluster Analysis for Characteristics Detection in Software Defect ReportsUsing Cluster Analysis for Characteristics Detection in Software Defect Reports
Using Cluster Analysis for Characteristics Detection in Software Defect Reports
 
EXTENT-2017: Testing in Distributed Ledger Systems
EXTENT-2017: Testing in Distributed Ledger SystemsEXTENT-2017: Testing in Distributed Ledger Systems
EXTENT-2017: Testing in Distributed Ledger Systems
 
EXTENT-2017: Independent QA in Agile
EXTENT-2017: Independent QA in AgileEXTENT-2017: Independent QA in Agile
EXTENT-2017: Independent QA in Agile
 
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...
EXTENT-2017: Re-Engineering Capital Market Business Models to Use Different T...
 
EXTENT-2017: Keep Investing in QA
EXTENT-2017: Keep Investing in QAEXTENT-2017: Keep Investing in QA
EXTENT-2017: Keep Investing in QA
 
EXTENT-2017: MiFID II and Impacts on Trading Workflow
EXTENT-2017: MiFID II and Impacts on Trading WorkflowEXTENT-2017: MiFID II and Impacts on Trading Workflow
EXTENT-2017: MiFID II and Impacts on Trading Workflow
 

Kürzlich hochgeladen (9)

СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 

TMPA-2014 (Trading Systems Testing): New Exchange Platform NP RTS

  • 1. 14/11 Кострома Торговая платформа НП РТС: задачи, архитектура и подход к тестированию Сергей Замолоцких
  • 2. НП РТС НП РТС основано в 1995 году и до декабря 2011 года было частью биржевой группы РТС. Члены НП РТС – более 100 компаний, в том числе ведущих брокеров и дилеров на российском рынке. НП РТС ставит своей целью развитие инфраструктуры российского финансового рынка. 2
  • 3. НП РТС К концу 2012 года НП РТС подготовила инфраструктуру для создания биржевой группы - ОАО «Санкт-петербургская биржа» и ОАО «Клиринговый центр МФБ». В начале 2013 года НП РТС начала работу над созданием межброкерской торговой системы с функцией best execution. В сентябре 2013 года задача была расширена до создания универсальной многофункциональной биржевой платформы с поддержкой широкого спектра рынков и внешних площадок. 3
  • 4. Проект по созданию платформы В сентябре 2013 года стояла задача запуска в опытную эксплуатацию за 9 месяцев версии с функционалом Best Execution. В целом она была решена - в июне 2014 года были запущены торги на первой версии системы и дан доступ тестовым участникам. Далее шел процесс доработок под пожелания пользователей и покрытию системы полноценной системой тестов. В ноябре 2014 планируется обновление версии платформы и запуск рынка иностранных ценных бумаг с расчетами в долларах США. 4
  • 5. Архитектура платформы 1. Операционная система Linux. Быстрые модули написаны на C++. Управляющие и некритичные к скорости на Java. Тестовые скрипты пишутся на python. 2. Архитектура модульная. Большинство модулей работают как преобразователи данных - получают входящие потоки данных, обрабатывают и выдают исходящие потоки. Есть модули имеющий под собой БД. 3. В разработке используется универсальный контейнер, позволяющий абстрагировать логику от работы с интерфейсами и сильно облегчающий разработку и тестирование модулей системы. 5
  • 6. Модульное тестирование 1 Архитектура платформы позволяет тестировать модули системы с помощью задания данных во входных и выходных потоках за счет абстрагирования реализации ПО от специфики связей в системе создать внутри контейнера прототип модуля (например на python) внешне идентичный промышленной реализации 6
  • 7. Модульное тестирование 2 Широкое покрытие функционала модульными тестами написанными разработчиками. Автоматизированное тестирование путем ручного формирования как тестовых входящих данных, так и выходных данных. Применяется для логически самых простых модулей. 7
  • 8. Модульное тестирование 3 Автоматизированное тестирование с использованием прототипа. В этом случае вручную формируются только входные примеры. Применяется для более сложных модулей. Проверка проводится сравнением выхода прототипа и продукта. Прототип как правило пишется отличным от продукта образом, что снижает вероятность появления одинаковых ошибок. В сложных случаях прототип пишется постановщиком для одновременной проверки правильности понимания постановки разработчиком. 8
  • 9. Case 1. Отладка многопоточной бизнес логики. На примере модуля расчета рисков. В основе система массового обслуживания: N=5 потоков обрабатывают изменения состояния от 100 до 1 млн портфелей. Данные относящиеся к разным портфелям изолированы. Отсутствие одновременного доступа к данным из разных потоков. Доступ к общим данным только на чтение. 9
  • 10. Case 1. Отладка многопоточной бизнес логики 2 Выполняются задачи - Онлайн обработка входящих приказов - Изменение входящих параметров и соответствующий пересчет всех портфелей под непрерывной нагрузкой. 10
  • 11. Case 1. Отладка многопоточной бизнес логики 3 Система тестирования состоит из - Прототипа для проверки расчета по одному портфелю с данным набором входящих параметров. - Набора тестовых примеров для тестирования алгоритма. - Регрессионного механизма сверки результата обработки потока операций с результатом восстановления по срезу позиций и заявок. - Нагрузочного стенда для проверки корректности многопоточной обработки по итогам выполнения различных тестовых сценариев. При этом суммарная пропускная способность одного экземпляра модуля должна быть не менее 50 тыс операций в секунду. 11
  • 12. Комплексное тестирование Тестирование жизненного цикла системы. Комплексное тестирование функциональных блоков. Комплексные тесты с точки зрения клиентов. Тестирование восстановления при нештатных ситуациях. 12
  • 13. Case 2. Восстановление Главное требование: При сбое отосланная клиентам информация должна остаться валидной. Это касается сделок, а также операций с заявками. Другие требования к восстановлению: Гарантия возможности. Надежность. Быстрота. 13
  • 14. Case 2. Восстановление 1 В ходе проектирования рассматривались разные варианты архитектуры, различные в части восстановления: 1. Единая шина данных. Единый упорядоченный основной поток торговых данных. Каждый модуль системы имеет один вход и восстановление тривиально. Плюсы - простота восстановления. Минусы - производительность, ограничения в масштабировании. 2. Модульная архитектура с произвольными связями. Плюсы - масштабирование, гибкость в конфигурировании, минусы - сложность восстановления. Был выбран вариант 2. 14
  • 15. Case 2. Восстановление 2 Восстановление проводится в первую очередь на основе содержимого исходящих потоков модулей, затем содержимого входящих потоков. В процессе восстановления используется механизм отсечек - checkpoints от которых клиент потока может проводить восстановление в режиме штатной работы. Отсечка создается один раз в день в каждом торговом потоке. При создании отсечки заявки снимаются и выставляются заново, отсылаются нужные для восстановления значения внутренних переменных. 15
  • 16. Case 2. Восстановление 3 В исходящий поток пишутся ссылки на исходные сообщения. Также сохраняются срезы данных - заявок и позиций, для ускорения восстановления. При восстановлении модуль сначала восстанавливает внутреннее состояние, а потом начинает обработку входящих сообщений. Это достигается конфигурированием контейнера, но все равно нуждается в тестировании. 16
  • 17. Case 2. Восстановление 4 Казалось возможным создать не слишком сложную систему восстановления на таких принципах. Однако на практике из- за большого числа и различного характера связей некоторых модулей возникли нюансы и отладка восстановления такой системы оказалась сложнее чем ожидалось. Сложная матрица тестовых случаев - много комбинаций состояний входных линков. Восстановление не было запрототипировано, поэтому большой расход труда на формирование тестовых примеров. 17
  • 18. Case 2. Восстановление 5 Нужно проверять разные комплексные сценарии восстановления. Облегчается тем что контейнер позволяет тестировщику конфигурационно формировать нужную среду состоящую из нескольких модулей и произвольных связей между ними. Также есть фреймворк для проверки состояния в контрольных точках без формирования полного тестового выхода. 18
  • 19. СПАСИБО ЗА ВНИМАНИЕ! E-mail: misha@rts.ru www.nprts.ru