Cloud and Virtual Computing
These pages are about cloud computing and the closely related field of virtual computing.
Cloud Sites on the Web
- A Guide to Cloud Computing
- World Bank Data Indicators
- World Bank Developers Site
- Popular Open Source Programs
- Wikipedia Database Comparison
- MaxMind WorldCity: "Free" data that you can use for testing.
- InfoPlease (More data)
Thanks to Tim Hoogasian for contributing some of the links found above.
Online Photo Editing
Thanks to Tim Hoogasian for contributing a significant number of the links found above.
Online Meeting Rooms
- http://www.collaborizeclassroom.com (Education)
Thinking about the Cloud
The cloud consists of hardware and software resources accessed over the Internet. These scalable resources are provided as metered services such as applications, development platforms, storage, or even an entire OS. More formally, these services are designated as follows:
- Application running in the cloud: Software as a Service (SaaS)
- Development platforms: Platform as a Service (PaaS)
- An OS in the cloud: Infrastructure as a Service (IaaS)
We do not need to know where, or exactly how, the cloud is configured. In general, however, the cloud consists of a series of huge data centers. Each data center will host thousands of relatively inexpensive physical machines. Each physical machine will host multiple virtual machines. Typically these data centers are owned by huge corporations such as Microsoft, Google, or Amazon.
Cloud computing is not a new technology, rather it is an evolutionary step in a continuing process. The word cloud is an abstraction standing like a shroud in front of a lot of real world technologies. Much of the work we do in the cloud revolves around our understanding of how those big abstractions apply to specific technologies.Figure: Original image by Sam Johnston at the Creative Commons.
When first approaching the cloud it can be helpful tend to focus on three main themes:
- Working with Virtual Machines
- Working with Software as a Service (SaaS) applications that run in the cloud. Examples include WordPress, MediaWiki and PhpMyAdmin.
- Working with code to create sites and applications that run in the cloud.
The code we write exists on the both the client and the server. It ranges from:
- Server side code for running web services which are typically written using various scripting languages such as Python, PHP or node.js
Here are some practical examples of things I do to gain experience with the cloud:
- Beg, borrow or buy cloud machines, services or software run by some third party.
- Configure a base machine with Windows or Linux installed directly on the metal so that it runs the tools that like web servers that host cloud applications
- Configure virtual machines that host Linux or Windows
- In these virtual machines, I install SaaS applications like MediaWiki, PhpMyAdmin and WordPress
- Learn to use MySQL and Microsoft SQL Server
- Learn to use and configure IIS and Apache
- Lean how to configure Linux and Windows to host an array of cloud and network based tools and scripting languages such as SSH, SFTP, PHP, XML and Python.
- Write PHP and Python scripts that access MySQL or other data stores
The more we work with these technology the more employable we are, the more we are able to tap into the power of the cloud, and the more fun we have.
It is hard to laud any one technology as the most important. Many different cloud based pursuits are valuable. For instance, if we use third party cloud tools, we gain experience that can help us:
- Learn to use important tools such SSH so that we can configure and explore remote servers
- Learn how to use SFTP to move files between a local and remote machine is a valuable experience. (Good tools for SFTP include Filezilla and Beyond Compare)
- In some cases you will get a chance to manage databases remotely with tools like PhpMyAdmin
- You can provide yourself with a valuable tool that lets you easily access your files from multiple locations without having to copy them back and forth. As long as you are on the Internet, you can access the files you put on a third party server.
- You will learn a little about pricing structures, and you may even about how to buy and set up a domain name
In general you will gain valuable experience working in one important part of the cloud, so by all means, please pursue this idea.
Sometimes, however, we gain even more experience just working on our home machines without ever venturing into the bigger cloud. For instance, we set up virtual machines that help us:
Understand how third party sites are designed and configured. This can help us better leverage the tools we access on the cloud and it can give us the skills we need to be employed by the companies that run cloud sites.
The more we know about virtual machines, the more employable we are, and the more capable we are of understanding and using today's complex computer systems. A company that plans to rent sites that come with WordPress or similar tools installed doesn't need to hire anyone to perform those tasks. In other words, there are no jobs in that world. The people who are hiring are sites that want to hire developers to set up WordPress or MediaWiki so their users can access them. In other words, you want to work for a company that creates sites in the cloud, you don't want to just be their customer. If you can also answer yes to questions like: "Can you write a PHP script to access a database that runs on a virtual machine" then you are all the more employable.
It is important to know that sites like WordPress.com, as opposed to WordPress.org, exist. The first provides for free instances of WordPress that people can use. The other lets you install your own instances of WordPress on any arbitrary machine. If you are using WordPress.com, however, and you want to access the full power of WordPress, you have to pay them money. Not all sites are run that way, but many are. If you install your own instance of WordPress, then you have complete control from the start, especially if you have run the install a few times and feel comfortable configuring it.
Whether you rent a site with WordPress installed, or work to help a company set up such sites, in both cases you need to understand how the technology works. It is the only way to really know what a technology can and cannot do. There are some people in a bureaucracy who can get away with just saying "let's use WordPress," but if they hope to get ahead, they have to have the sense to find someone who understands that technology in order to pick the right option for them and implement the plan. I'm interested in being the one who knows how to use the tools and knows how they work. Ultimately, the day will come when know one will want to hire a manager who does not also understand the technology.
Virtual machines are useful for several reasons. Here are a few:
- They allow us to experiment. We can try out various programs and technologies, and if we decide we don't like the technology, or that we need to start over on the install, then we can easily roll back to the earlier version and start again.
- They allow us to move code from one location (home) to another (school, work) without having to install software twice and configure two computers to do more or less the same thing.
- They allow us to set up "virtual" networks that simulate (or in many cases exactly duplicate) real world computer interactions.
- They allow us to emulate hardware that we can't access, such as an Android device.
- They can act as staging sites for our live sites
- As a variation on point one: They allow us to keep our base machine "clean", while installing layers of software on virtual machines. That way we don't have to go through a lengthy install on a real piece of hardware nearly as often, while still getting the chance to experiment with a wide variety of tools.
- They let us try out operating systems that we might not otherwise get a chance to access. For instance, it is easy to install Linux or Android on a virtual machine and experiment with these environments. It is a much more radical step to try to dual boot our main machine into both Linux and Windows, or to go out and buy an Android phone. Both techniques work, but one is much easier than the other, particularly if you want to experiment with multiple flavors of Linux or Android.