Cloud hosting: Support for hosting your websites on AWS or similar cloud services.

Overview:

As networked technologies evolve, there has been increasing focus on cloud-based architectures where all or part of the compute resources needed by a piece of software are hosted in the cloud.

The most common examples of this are web applications, which are basically dynamic HTML-driven interfaces that are hosted on a cloud server. The cloud server not only ensures very high reliability, scalability, and accessibility for the application, but also provides for any back-end pieces that the web app needs, e.g., database servers, high-performance compute instances, etc.

Another area in which cloud-based architectures are commonly integrated is as the backend for mobile applications. Mobile applications often have to store a lot of data and, more importantly, may need a *common* datastore that essentially binds together all instances of the mobile application. A simple example is a mobile app for personal password management: it provides secure archive of your passwords and an easy secure interface to it. You'd want that database of passwords to reflect automatically across *all* of your mobile devices...as well as, perhaps, a desktop interface. The best way to do this is by having shared data live on a cloud-based backend that is securely accessed by all clients.

In many cases, product architectures actually do both: they have a cloud-based core for all data storage and manipulation and have *both* a web app and mobile app as two possible interfaces to the system. This hybrid webapp+mobile app architecture is exemplified by many popular networked software products such as Facebook, Amazon, internet banking systems, and many more.

In short, cloud-based architectures are a major feature in the future of computing. So what if your Capstone project is one that requires such an architecture?

 

CS Dept. Support for Hosting your cloud-based architecture

So your project needs to create/support cloud-based resources (hosting, compute power, storage, etc.); what are the options? What you are looking for is something that is easy to set up; easy for you to access, administer and maintain during development; and offers a cost-efficient and reliable platform to support your product for your client into the future.

Option 1: Ask the client provide access. The very best option if your client is a private company (i.e. has a computing budget) is to ask the client to provide the server resources. If it's a big company, they probably have a machine room and can create a server (physical or virtual) for you. Or they can agree to establish an account, e.g., with Amazon Web Services (AWS), for the project, and be responsible for paying the monthly bills. Indeed, many small and medium sized companies have already switched to outsourcing all of their compute needs to AWS (or similar)...and all they'd need to do is create you a new virtual machine under their existing account. This is a fantastic option overall because, ultimately, the client will need to provide for hosting anyway, i.e., when Capstone ends and you hand over the product. With this approach, it's all taken care of: it's already hosted under their account, you just give them the "keys" (logins, etc.) to the compute instances you've set up and you're good to go!

Option 2: Hosting by NAU ITS. (Only) If the client is part of the NAU community, one option might be to ask NAU ITS to set up a server for you to support your needs. If they are not working on a juicy research grant, most NAU faculty and departments don't have the resources to pay AWS monthly hosting costs...especially given that NAU already pays for a large ITS organization that could provide the resources. But there are some significant drawbacks here. First, there are a number of established ITS policies that you'll need to adhere to in designing your site and thinking about how it will be maintained when you are graduated and gone. There are also a number of minor logistical hassles:

Again, this can only be an option for clients somehow affiliated with NAU. But that said, NAU hosting is theoretically free indefinitely, and so can be a good sustainable option for NAU faculty projects.

Option 3: CS Dept support for AWS hosting. Thanks to generous donations by various companies and many CS alumni (note to self: remember to give back when you get rich and famous!), the CS Capstone program has a nice little fund that we can use to support Capstone projects. Not a ton...but enough to cover modest hosting costs for projects *during the Capstone year only*. Your team will need to negotiate the details with the CS Dept. Capstone Organizer, but in essence, you could get up to about $30/month to cover the costs of a development server(s) on some for-pay cloud platform like AWS. This is a super option for fast and easy development during the Capstone year, but comes with one major drawback: it's over when you deliver the product and Capstone ends. That means that the only way this is a viable plan is if you have agreement from your client --- early on, *before* you decide to go this route -- to either provide an alternate server to move your product to for long-term hosting, or to take over the AWS (or whatever) account(s) when the project finishes. Otherwise, payment ends, AWS kills your resources, and your product is dead.

So what should we do?

As you can see, there are a number of options for getting a development server in place for your network-based project. So what to choose? The overall answer is: you have to discuss this with your client. Lay out the options above to your client, emphasizing the pros/cons of each in terms of reliability, convenience, cost, and so on. This will provide a basis for weighing the options and making a strategic and efficient choice.

If you decide on Option 2, first carefully read through the ITS policies on hosting computing products on NAU servers. Then contact ITS to get something set up. Get the CS Capstone Organizer involved as necessary to get action out of ITS.

If you decide on Option 3, make an appointment in office hours for the CS Capstone Organizer and discuss with him/her. You will need to have done your research on AWS (or your chosen cloud provider) so that you can carefully explain/justify your needs and lay out the predicted costs. We can then work to get the account set up to be paid from CS Capstone/SICCS funds for the duration of the project.