Работя върху приложение, което се занимава с „чувствителни“ данни (известни още като номера на кредитни карти) и за да постигнем съответствие с PCI, трябва да гарантираме, че нашата база данни е отделна от нашите публични сървъри.
За да влязат данните и да бъдат съхранени, трябва да има нещо по средата - не искам данните да се записват или четат директно от уеб/приложните сървъри - така че се чудех дали опашка/работник архитектурата може да е подходяща.
Основният поток ще бъде:
- Данни от клиента -> Изпрати до API
- API сървърът поставя данни в обект „заявка“ -> Поставяне на опашка
- Работник (във „вътрешна“ мрежа) приема заявка, пише в DB, върши работа, актуализира DB, след което поставя в опашка обект „отговор“
- API сървърът получава този обект на отговор, след което го изпраща обратно към клиента
По същество се надявам на нещо, при което данните ще се върнат към същата „заявка“, така че целият процес да може да се извърши в една заявка, но това изглежда противоречи на асинхронния характер на опашките за съобщения и може да е по-подходящо за „уеб услуга“, действаща като строг „протокол“ сама по себе си...
Редактиране Вероятно трябва да добавя, че изисквам следното:
- Устойчивост - ако опашката или каквото и да е "срине", трябва да може да възстанови "на опашка" елементи
- Сигурност - чувствителните данни трябва да бъдат защитени - транспортът е наред, защото можем да използваме нещо на транспортния слой (TLS, SSL, IPSec), но съхраняването на номера на карти от страната на подателя (публична мрежа) не е идеално...
- Скорост - разбира се.
И така, погрешен ли съм?