Я работаю над приложением, которое имеет дело с «чувствительными» данными (например, номерами кредитных карт), и для достижения PCI Compliance нам необходимо убедиться, что наша база данных отделена от наших общедоступных серверов.Должен ли я использовать очередь для этого ...?
Для того, чтобы данные поступали и хранились, должно быть что-то среднее - я не хочу, чтобы данные записывались или читались непосредственно с веб-серверов приложений, поэтому мне было интересно, возможно, подходит архитектура очереди/рабочего.
Основной поток будет:
- данных от клиента -> Отправить API
- API сервера помещает данные в 'запрос' объект -> Ставить
- рабочий (на 'внутренней' сети) поднимает запрос, пишет в БД, делает работу, обновление БД, а затем ставит в очередь на «ответ» объект
- API-сервер получает этот объект ответа отправляет обратно в ответ на клиент
По существу я надеюсь на что-то, где данные вернутся к одному и тому же запросу, поэтому весь процесс может быть выполнен по одному запросу, но это, похоже, противоречит асинхронному характеру очередей сообщений и может быть больше подходит к «веб-сервиса», действующей в качестве строгого «протокола» сам по себе ...
Edit я должен proabably добавить, что необходимо следующее:
- Долговечность - если очередь или что-то " сбой "он должен иметь возможность восстанавливать« поставленные в очередь »позиции
- Безопасность - конфиденциальные данные должны быть протестами cted - транспорт прекрасен, потому что мы можем что-то использовать на транспортном уровне (TLS, SSL, IPSec), однако хранение номеров карт на стороне отправителя (общедоступной сети) не является идеальным ...
- Скорость - конечно.
Итак, я об этом неправильно?
Чисто из интереса: спецификация PCI, с которой вы работаете, содержит ли какие-либо рекомендации, которые предполагают предпочтительные подходы (или те, которых следует избегать)? – 2010-12-07 19:49:09