AWS as the New OS

A mental model mapping the familiar to the new

I had this idea a couple of years ago but never really took the time to articulate it and I think that it may help some people see the cloud, specifically as it pertains to software development, in a different way. While it is often thought of as primarily managed infrastructure, the AWS cloud could be thought of as a full-fledged software platform (among other things but this is the aspect I want to focus on here). This concept is further reinforced with Serverless Application Services where there are no machines or infrastructure to manage at all.

If your perspective of the main benefit of the cloud is purely infrastructure management and virtual machines I think it might help to draw some parallels to the more established concept of an Operating System. This analogy is not perfect, but I think it is a great frame of reference for these new concepts and it will help highlight the true power of the AWS Cloud Platform.

Origins of Operating Systems

Computers started out as pure computation machines. They would be set up for a single program and halt when the program completed. As hardware capabilities and the demand for computation increased, the need for sharing these resources arose. So, we essentially made a single program that runs indefinitely and can run and manage the lifecycle of other programs. As this evolved, features were added and common subsystems developed (think bootloader, kernel, drivers, etc) that eventually morphed into the modern operating system.

So, the OS came out of the need for sharing resources. But wow! So did the cloud. Ok, so maybe not so much ‘sharing’ resources are they are ‘selling’ them to you.

In the next couple of paragraphs, I am going to compare some individual concepts.

Processes

The native execution concept of every modern OS is the Process. A process starts, executes code, and eventually completes. It has limited access to the resources, such as disk and networking, enforced by the OS. A process can spawn and manage multiple threads of execution. Processes are generally written in a high-level language such as C, C++, Python, Java, or .NET.

There are several analogues to this in AWS:

In the OS world you would usually interact with application executables in the following ways:

Memory

All the types of execution above have local in-process memory that you can access just like you would in a classical process, but many times cloud architectures will employ a cache to act as shared memory between separate threads of execution. This is not unique to the cloud but is a well-established best practice to enable horizontal (more machines) scalability. AWS has a service for this called ElastiCache. ElastiCache is a managed version of either Redis or Memcached (two popular cache servers) that you can set up with a GUI, AWS command line, or API calls and includes features such as configurable autoscaling.

Persistent Storage

In the OS world we have disks and file systems (local and shared) for storing data that we want to save indefinitely. Conceptually I think the analogs in the AWS world will be pretty easy to grasp.

Some AWS persistent storage options are:

Permissions

Permissions concepts in the AWS cloud should seem remarkably familiar compared to those of the OS. AWS wraps this up in a service called IAM and you get the familiar concepts of users, groups, and permissions/policies based on the types of resources you have. Permissions in both AWS and on the OS can end as simple or as complicated as your security needs. In AWS these permissions related concepts are grouped under the Identity Access Management (IAM) umbrella service. AWS provides robust and sophisticated security features to support just about any workload. There are even integrations with Active Directory and web identity providers such as Facebook and Google.

Summary

In the end the AWS cloud and Operating Systems are both software platforms – a set of common reusable tools and resources for building and executing software. There are hundreds of AWS services and many of the newer services are Serverless (no machines, no operational overhead), just callable services from your software. In this way, these AWS services are becoming just like a software library in a traditional operating system.

If you think about AWS as this nearly infinitely scalable operating system it can bring you a new perspective: what was a virtual infrastructure environment has now become a powerful tool for your systems.

Get your free consultation today.

DevOps & CyberSecuritySoftware Engineering & ArchitectureTech Staffing & Recruitment

Or fill out the form below and
 we’ll be in touch.

This field is for validation purposes and should be left unchanged.