AWS Technical Fundamentals
The AWS Technical Fundamentals course (AWS 110) is the introduction to Cloud Academy's comprehensive Amazon Web Services learning tracks series. While subsequent courses in this series will explore individual AWS service categories (like networking or data management) and broader skills (like design principles or application deployments), this course offers a brief summary of everything that AWS has to offer. Technical Fundamentals is also the introduction to the 100 level courses (the AWS Technical Foundation Track) which, in turn, lays the groundwork for our 200 series (intermediate level skills) and 300 series (advanced skills).
If you have thoughts or suggestions for this course, please contact Cloud Academy at firstname.lastname@example.org.
Hello and welcome to Cloud Academy's introductory course to our Amazon Web Services learning track. Over the past 10 years, we've seen an explosion in cloud based computing services largely, though not entirely, lead by Amazon web service's ground breaking work. This course will provide you with a solid overview of the key elements and concepts that make up the Amazon family of services, and should serve as a foundation for the detailed information that will come with subsequent courses. Amazon web services, AWS in its current form, dates back to 2006 and the launch of Amazon S3, simple storage service. Technically however, it had already launched another web service, called Simple Queue Service, SQS in 2004.
From those humble beginnings, Amazon web services now provides its customers with a wide range of products and services, from basics like virtual machines charged by the hour, to fully managed data warehouses and mobile application services.
We couldn't possibly do justice to even a small number of those services in this introductory course. So we will mainly focus on the core technical concepts needed for a basic understanding of AWS.
To make it easier for its customers to understand and locate their many services, AWS has grouped them into broad categories, called AWS product categories.
In later courses, we will delve into all of these categories and services in some depth. But for the purposes of this introduction, a high level overview will be sufficient to get a feel for the breadth and depth of their service offerings. Although not formally described this way by AWS, we will refer to the first four categories: compute, storage and content delivery, database and networking as core infrastructure services, since they form the building blocks of many, perhaps most AWS deployments.
Compute services allow you to run one or many virtual machines, with your choice of operating systems. At present, AWS supports a variety of Linux distributions as well as Windows operating systems for you to choose from. You can load your applications on virtual machines, running one of these standard systems, or select from pre-made operating system images from the AWS marketplace. There are a number of different types of virtual machine configurations, with different combinations of resources, like CPU capacity and memory, suitable for different purposes and budgets. For example, some instance types are well suited for web server roles, whilst others are optimized for high performance computing tasks. In addition to virtual machines, AWS compute services include features to build highly scalable and resilient applications. Examples of these include ways to automatically add more compute resources based on application load, as well as load balancing of incoming user requests across multiple virtual machines. This is helpful in a number of scenarios. For example, to automatically handle spikes in user traffic, causing seasonal, weekly, or daily peak load times. Users logging in at the start of a new work day, for instance.
Storage services allow you to store your application or other data. Depending on your requirements, you can choose between different types of storage options with different performance, durability and cost characteristics.
If you have a slow internet connection with limited bandwidth, uploading or downloading large amounts of data may take a long time. Therefore, AWS offers alternatives, like sending your physical hard drives to AWS for them to upload into your storage service of choice. This can save you a great deal of both time and money, if you do not have access to low cost, high bandwidth network connectivity.
Content delivery networks improve application response times by storing content and other application data close to the users. It is frequently used by web applications that have a large geographic footprint, as well as those dealing with high volumes of large data files, such as video streaming or software downloads, although there are many other applicable use cases that we will come back to in future courses. Database services allow you to choose from a range of database options to power your applications. These include traditional relational databases or relational database management systems, RDBMS, as well as non-relational databases, often called NO SQL, not only SQL databases.
Several of these database options offer advanced management services, where AWS takes care of key operational activities, such as database backup and recovery, as well as high availability set up with replication between multiple data centers, to minimize the risk of down time and reduce the impact if downtime does happen.
Networking services allow you to create and manage AWS resources using network topologies and management tools familiar to the enterprise network administrator.
You can create your own virtual private cloud, VPC, a logically separate network that you control and manage, and create subnets, network routes and gateways to segregate your application according to your network security requirements as well as create and manage your DNS zones. AWS network services also allow you to access your AWS resources using encrypted, virtual private network, VPN connections, or dedicated telecommunication lines, so that your data does not have to traverse the public internet, if you prefer it not to. With so many features, it can often be overwhelming for a newcomer to enterprise networking. Nevertheless, it is an easily abstracted approach for developers and other users who prefer not to deal with the details. AWS offers a robust package of powerful security tools to define access rights and privileges to your AWS resources, as well as logging and tracking which users have done what, for audit purposes. For truly security sensitive applications, there are also options for hardware based encryption modules.
Analytic services provide products to help with your large scale data analysis. You can use these services to split large data sets into smaller pieces, and then process each chunk in a parallel fashion, using a fully managed Hadoop service. There is a service for real time analytics, useful when you have to process data as it is being generated or collected, when collecting sensor data, for example.
Additionally, there is a service for storing your data warehouse, also managed by AWS, so you can get started quickly and easily with minimum up front investment of time or capital. Application services are typically accessed directly by your application, to help in its functions.
Examples include sending emails or SMS messages on behalf of your application, queuing messages in a published subscribed model, or creating temporary credentials for your mobile application users. It can also help automate common tasks, like video transcoding and application-wide search, using managed services. This is a large group of services about which we will be going into a lot more detail in future courses. Management services help you to monitor and manage your applications and AWS services, to make sure that everything is running optimally.
This can range from something simple, like graphing the CPU utilization of your virtual machines, to how many messages are waiting in a queue to be processed. Other services allow you to define entire data center and application stacks in a single text document, which allows you to do things like creating a copy of your production environment in a test setting, with just a few mouse clicks where application programming interface, API calls. The deployment services help you to deploy your application to development, test, or production environments, where you can choose from a range of different abstraction models that will help you operate complex application stacks, without having to get involved at the operating system level if you don't want to. This is a great way for application developers to harness the power of AWS without having to understand the underlying details of the virtual machines, networking and storage devices that they're actually working with.
Mobile services provide a toolbox for mobile application developers to quickly and easily access mobile analytics data.
They also enable application users to keep their information and data synchronized automatically across multiple mobile devices. In other words, these services help to save developers a lot of time, by using existing managed AWS services to provide commonly needed functionality in a modern, mobile application, aimed at users with multiple devices. Enterprise applications include stand alone products that can be used independently of other services, and operate above the infrastructure or application development layer. There are currently two applications in this portfolio. The first is a managed desktop service, where you will have a Windows desktop experience that you can access from your laptop or mobile device. The second is a service for sharing and storing documents within an enterprise, allowing users to collaborate with colleagues and provide comments and feedback. AWS support provides human support over the phone, email, forums, or chat and in person for enterprises. In addition to providing a point of contact for help when things go wrong, AWS support offers several proactive services, including a tool that helps you identify cost savings and optimize your usage, in terms of security and performance. There are different levels of support available to suit different requirements, budgets and needs. AWS does not automatically include support in their services, so it is up to you to choose the most applicable level of support for your applications.
The AWS marketplace is similar to accessing your favorite app store. It is a place for third party providers to supply their software, ready to run on the AWS cloud environment. You can find many different types of applications here, ranging from free, open source operating systems, to enterprise grade security virtual appliances and enterprise applications.
Additional services include a range of other services, that include a payment service, internet website usage reporting and human intelligence tasks. Although they do not easily fit into the previously mentioned services, you can interface with them through APIs as well.
Antonio is an IT Manager and a software and infrastructure Engineer with 15 years of experience in designing, implementing and deploying complex webapps.
He has a deep knowledge of the IEEE Software and Systems Engineering Standards and of several programming languages (Python, PHP, Java, Scala, JS).
Antonio has also been using and designing cloud infrastructures for five years, using both public and private cloud services (Amazon Web Services, Google Cloud Platform, Azure, Openstack and Vmware vSphere).
During his past working experiences, he designed and managed large web clusters, also developing a service orchestrator for providing automatic scaling, self-healing and a Disaster Recovery Strategy.
Antonio is currently the Labs Product Manager and a Senior DevOps Engineer at Cloud Academy; his main goal is providing the best learn-by-doing experience possible taking care of the Cloud Academy Labs platform.