CREATE A RESOURCE AND COST PLAN FOR SCALING THE PAYMENT PROCESSING SYSTEM

The goal of this assignment is to explore the real cost of implementing a Cloud Application. This will involve some back-of-the-envelope calculations along with concrete data from well-known cloud platforms.For this assignment, the actual numbers don’t really matter as long as they’re at least somewhat sensible. No need to call up cloud providers and try to get exact numbers. Instead the goal is to combine the design of the system with some sensible ideas on scaling. On the surface it seems like this assignment is quite straightforward: I want N servers at a cost of X per server. In reality is it rather subtle as it needs to be tied to both the design of the system and to an expected growth curve over time. On top of that different pieces scale in different ways so it isn’t linear across all components.PAYMENT PROCESSING SYSTEM DESCRIPTIONHave you ever stopped to consider what happens when you’re shopping online? In between entering your credit card information and the money getting charged to your account is a very complex set of interactions. During this class, we will explore a simplified payment processing system that does exactly this. We’ll create a design for it and provide sample implementations for some of the components.Let’s take a look at some of the details of a payment processing system.FORMS OF PAYMENTTo keep this simple we’ll assume that we only accept credit cards for payment.FRONTENDThe happy shopper needs some way to enter their payment details.ONLINE STOREThe storefront needs an interface to the processing system where they can enter the shoppers’ details, get confirmation that they can charge the card, and collect the money afterwards.CREDIT CARD PAYMENTSPaying by credit card, whether online or in a physical shop, follows a two-step process.When your card is first run, it performs an “authorization”. This authorization takes the credit card details and the amount requested and sends them to the credit card company. The company then looks up the card and verifies whether or not the payment will succeed. A status code (OK or some kind of error code) is returned, along with an authorization code if the status is OK.Later on (e.g. once an hour, once a day) all of these authorizations are collected up into a single batch and sent as “payment requests” to the credit card company. A payment request contains the same information as the initial authorization along with the authorization code that was returned. The credit card company will respond with statuses for each payment request and all the money for those requests that succeeded is transferred into the store’s bank account.PAYMENT PROCESSING SYSTEMThe system needs to implement credit card processing as described above.CREDIT CARD COMPANYWe shall assume we use a single credit card processor and that processor provides us with an interface for performing authorizations in real time and batch payment requests.ASSIGNMENT INSTRUCTIONSThere are three main resources to look at:CPU time (including memory)Network bandwidthStorage costsYou’ll have to estimate what these costs will be to handle a set number of transactions, and then estimate how the costs will change as you scale the system. Please do not reach out to cloud providers for cost information, instead, make the best (and reasonable) estimates you can from information you can find on the web. The other input is the number of users you want to be able to handle (and therefore the number of transactions a second). Finally, choose a cloud provider from one of the popular ones and, based on your design, create a proposal for what it would cost in terms of resources to implement your application using that provider. You should also include the marginal costs involved when scaling the system as you grow your users.You should submit a 2,000 – 2,500 word paper in PDF format that explains the various pieces of your estimates along with enough of the design of your system to make sense of it. Be sure to provide concrete references for all of your numbers. Note that it’s less important to estimate the exact number of CPU cycles to process a request than it is to get an overall picture of what it costs to scale such a system.Assignment FocusThe focus of assignment 3 is to outline a process for estimating the number and cost of resources for your application in a cloud environment. Your application is the merchant portion of the overall system.The focus is on three drivers:The number of processors needed (labeled CPU time in the problem)The input / output needed (labeled Network bandwidth in the problem)The amount of storage needed (labeled Storage costs in the problem)This varies by the number of credit card holders using your system (users).Please do not use a cloud provider’s “Total TCO” computational spreadsheet, their tech support staff, or the like. Rather, use references to the published costs for these resources. Also, do not consider “introductory pricing” or the like. Use a single vendor’s numbers for your design.You will want to have a block diagram of your system available so you can think about what is being grown out.The paper should explain your rationale for the decisions you make on scaling out the system.It is acceptable to pick several points along an order-of-magnitude continuum to illustrate the marginal costs.You may add components to your design (e.g., a queueing service, a notification service, a load balancer, a firewall) as needed. They can even change or be added as you scale your system.You do not need to consider other functions of the system, such as inventory, order fulfillment, advertising, and so forth. Let’s assume these are contacted externally by service calls, much like the credit card authorization service. You may assume these services have enough capacity to support your system at any scale–but you may want to think about whether they add significant network bandwidth.You will need to consider how many users a web server can service; how much storage in what kind of service (e.g., a database service) is needed to track the approved customer orders; and how much data must pass in and out of the cloud network to the user.As the problem states, the overall picture of what it means and what it costs to scale such a system. That is to say, your process and approach, documented assumptions and architecture, and your references and the important parts of this exercise.