Michael Rembetsy от etsy.com offers some insight с точки зрения сегментации программных компонентов в средах PCI и не PCI.Рекомендации по минимизации выдержки PCI DSS
Я пытаюсь определить наиболее оптимальное решение с точки зрения архитектуры программного обеспечения. Рекомендуется ли сегментировать ваше программное обеспечение, связанное с PCI, в отдельные службы или отдельные компоненты программного обеспечения?
Например, если мы рассматриваем обработку платежа; лучше всего инкапсулировать логику в модули исходного кода, содержащиеся в среде PCI, и вытеснять изменения кода в производство параллельно с не-PCI-средой или лучше всего инкапсулировать логику обработки платежей в отдельные сервисы в SOA-модуле?
Другими словами, любая предоставленная функция из базы данных, отличной от PCI, обменивается данными с любой конкретной базой данных вашего PCI-кода (например, с использованием кредитной карты) по протоколу связи, например HTTP, или мне просто нужно предоставлять функции, связанные с PCI, как упакованные dll/jar и т. д., которые ссылаются на не-PCI-функцию?
Мне кажется, что инкапсуляция функций, связанных с PCI, таких как обработка платежей, в отдельные сервисы является более желательной, учитывая, что мы можем контролировать уровень обнаружения сервисов и определять явные границы, тогда как просто предоставление dll/jar потенциально предоставляет безопасный исходный код для декомпиляции разработчиками в среде, отличной от PCI.
Наша политика заключается в том, чтобы как можно больше из-за пределов PCI; все, что обрабатывает данные держателя карты, реализуется как минимальная услуга, которая будет связываться с компонентами нестандартной области для принятия бизнес-решений, ведения журналов и т. д. Мы делаем это для минимизации поверхности PCI и потому, что любые изменения программного обеспечения, перенесенные в производственную среду PCI, должны пройти через обзор кода/документация, что-то утомительное и трудоемкое. –