It is obvious that a web shop including its order processing can benefit from characteristics of public cloud platforms such as elastic scalability. These assets of such a solution can definitely benefit from time-bound increase of resources during busy shopping seasons such as Christmas while at the same time do not need a lot of resources during seasons with less shopping-activity such as summer holiday season.
On the other hand in many countries personal billing and payment information are treated as very sensitive. Therefore in some scenarios you might want or have to keep them on-premises in your own data center.
Finally this situation leads to a hybrid cloud scenario where you definitely benefit from putting the assets of the front-end web shop including the order processing in the cloud while leaving your payment and billing account management services on-premises in your own data center. Based on the assumption above this simple scenario leads to two different integration steps from assets hosted in the public cloud to on-premises operated assets:
Typically payments to not get processed immediately. All information a user gets when placing a payment as part of the check-out process is, whether the placement of the payment has been accepted or not. The actual processing happens asynchronously and at a later point-in-time. Therefore the choice for integrating the shop-services and –application hosted in the public cloud with the on-premises payment-service are:
use Azure Queues (or Service Bus Queues) as integration mechanisms
if you thing data is really sensitive, encrypt the information
use a public/private key pair whereas the public key for encryption resides in the public cloud and the private key for decryption resides in your on-premises data center.
Integration with the on-premises account management service
In this case you are faced with an interactive scenario. The user actively requests, reads and modifies information on his billing-account through a user interface and needs immediate response whether changes have been accepted or not. Therefore the options for integration between the web-shop applications- and services hosted in the public cloud and the on-premises payment- and billing-account-management service are:
Option #1: open the firewall to your data center and enable access to the on-premises service from the public cloud. If applying IP address restrictions on your firewall you need to be aware, that whenever you re-deploy in Windows Azure the IP address changes. As long as you just do in-place upgrades no IP address changes for your cloud service.
Option #2: use the Windows Azure Service Bus Relays to relay the communication to your on-premises service through the service bus. That enables you to call the web service without opening ports on the firewall in a targeted and secure way. More details will come within subsequent posts when digging into some of the details of this scenario.