225 112 3MB
English Pages [45]
Cloud Computing Fundamentals Learn the Latest Cloud Technology and Architecture with Real-World Examples and Applications By A. B. Lawal Cloud Computing Fundamentals Learn the Latest Cloud Technology and Architecture with Real-World Examples and Applications ISBN: 9788835828525 Copyright © 2020 AB Prominent Publisher All rights reserved. Published in the United States Limit of Liability/Disclaimer of Warranty This book contains information obtained from authentic and highly regarded sources. Reasonable efforts have been made to publish reliable data and information, but the author and publisher cannot assume responsibility for the validity of all materials or the consequences of their use. All information given in this book is based on the author’s own research and does not constitute technical, financial or professional advice. The author and publisher have attempted to trace the copyright holders of all material reproduced in this publication, and apologize to copyright holders if permission to publish in this form has not been obtained. If any copyright material has not been acknowledged please write and let us know so we may rectify in any future reprint. Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced, transmitted, or utilized in any form by any electronic, mechanical, or other means, now known or hereafter invented, including photocopying, microfilming, and recording, or in any information storage or retrieval system, without written permission from the publisher. Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and are used only for identification and explanation without intent to infringe. The author and publisher of this book are not liable or responsible for any other websites or services linked to or from it. It is forbidden to reproduce any part of this book in any form or medium . Reselling is prohibited . Table of Contents 1. What is Cloud Computing? 1.1. What We’ll Cover and What We’ll Avoid Types of Cloud Computing 1.2. A few Reasons for Using Cloud Computing 1.3. Different Reasons, Same Benefits High-Level Benefits of Cloud Computing
1.4. Cloud Products and Services 1.5. Characteristics of Cloud Computing 1.6. Self-Service on Demand 1.7. Resource Pooling 1. Everything as a Service 2.1 Introduction to the “aaS” Model 2.2 Software as a Service (SaaS) 2.3 Infrastructure as a Service (IaaS) Virtualization Multitenancy Lift and Shift 2.4 Platform as a Service (PaaS) Differences Between SaaS, PaaS and IaaS Scaling In, Out, Up or Down 2.5 The CMR Model 1. The Marketplace: Cloud Solutions & Cloud Vendors 3.1 Making Sense of Cloud Providers Public Cloud, Private Cloud, Hybrid Cloud or Multi-Cloud? 3.2 Cloud Deployment Options 3.3 Elastic and Serverless Computing Elastic Computing Serverless Computing 3.4. Service-Level Agreements (SLA) in Cloud Computing 1. Real-World Applications of Cloud Computing 4.1 Education 4.2 Healthcare 4.3 Government 4.4 Marketing & Financial Services Cloud 4.5 Cloud Storage 1. Hands-on Experience: Approaching the Cloud with Step-By-Step Real-World Examples 5.1. How to Create and Use a Microsoft Azure Subscription 5.2. How to Create a Windows Virtual Machine (VM) 5.3. How to Create a Linux Virtual Machine (VM) 1. Conclusion
6.1 Final Words 1. What is Cloud Computing? 1.1. What We’ll Cover and What We’ll Avoid If you've read anything about the cloud or cloud computing, there is a phrase you may have already encountered. It’s a few words some people use to describe the cloud. If you haven't seen this phrase yet, you'll probably see it soon. You might see it on a laptop sticker, a tee shirt, or a coffee mug. It says: “There is no cloud. It's just someone else's computer.” It's become quite popular. You can find dozens of products with this saying on it.
Fig 1.1.1: Some products with the saying “There is no cloud. It's just someone else's computer” on them This phrase is short and memorable, and there is an element of truth to it. But there's also a problem. It completely misses the point . It puts our attention on the wrong thing. Let's be honest, this isn't an objective and neutral definition. It's a bit of an insult. It's a little dig and dismissive. “ Hmmm… the cloud. What's the big deal? It's just someone else's computer. ” Now to be clear, my issue is not that I need everyone to be polite and respectful about it. If you want to poke fun at any technology, be my guest. And if you’re coming into this with some criticisms, doubts or just feeling completely unsure about all this cloud stuff, that's perfectly fine. What I'm going to suggest is that an oversimplification like this one just isn't useful here. It doesn't help because this can encourage you to trivialize and underestimate how important the cloud already is and definitely how important it's becoming. There's a recent Gartner report that talks about yearly revenue of commercial cloud services. It’s now on track to hit $330 billion by 2022 for some perspective. See Fig 1.1.2.
Fig 1.1.2: Yearly revenue of commercial cloud services (Gartner: April 2019) If that was the revenue of just one business by itself, it would still be the fourth or fifth biggest business on the planet. There is real substance here, Yes, this term cloud can sometimes seem vague or ambiguous, so let's deal with that. Is cloud a technology buzzword with a lot of hype? Yes, it is, but there's good reason for all that hype. Not just one good reason but many. But to get a little deeper into those reasons, the benefits of cloud, and even the risks and challenges of it, we need to get clear on some terminology, some jargon. Types of Cloud Computing There are basically two ways to categorize cloud computing as it is ever growing: Cloud Deployments and Cloud Services . These are further divided as shown in Fig 1.1.3.
Fig 1.1.3: Types and sub-types of cloud computing Some different phrases and acronyms we can't avoid here are… Software as a service Infrastructure as a service Platform as a service Virtualization Multitenancy …and so much more!
We'll talk about how clouds can be deployed, mainly by public clouds , private clouds , hybrid clouds . We will also examine the risks of cloud computing and lots more. We'll cover the current marketplace and see a lot of the different companies offering cloud services. We will also cover how to recognize and understand what it is these companies actually provide. But we need to begin at the beginning. What exactly do we mean when we say the cloud or cloud computing? Can we even be exact about those terms? Cloud computing can be defined in various ways. For example, according to Wikipedia … “ Cloud computing is the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user ”. Another way it’s described is… Cloud computing is a computing service you traditional did local (on-premises), now performed remotely, across the internet (off-premises). Some might put it simply as… Cloud computing is on-demand computing resources, delivered to you over the internet . However, this book will be more than just defining and understanding a few pieces of technical jargon. I want to take you far beyond that, so you can actually feel comfortable with cloud computing, feel fluent when you're talking about it and even get some hands-on experience. This will help you to intentionally widen how you think about it. Here's what I mean by that. As we go through it, I'll ask you to consider cloud computing from a personal (individual) perspective. How could you just yourself get more out of this? What are the products and tools? What are the ways of thinking? But then we'll widen that perspective and think about how this could apply to your team because that will be different. We’ll then widen that perspective and think about your organization , their different roles and what they'd want. Then we will be able to push that viewpoint outwards to think about how this could solve issues for your clients or customers .
Fig 1.1.4: Cloud computing applies to individuals, team, organization, clients or customers It's from doing this, from combining some technical understanding with an intentional awareness of the different audiences, their reasons and their motivation can we get a real sense of what cloud computing is, why it's become so important over the last few years and how you could use it in different situations. It’s only from doing this that you will be convinced there is a cloud and it is much more than just someone else's computer . 1.2. A few Reasons for Using Cloud Computing When I first started teaching about cloud computing, I realized one of my big challenges is I'd go over one or two examples. My students would often be just a little bit too quick to say, okay, I'm good, I got it. I understand now. That can be an issue because, unlike some technologies, cloud computing is not something that can be explained well with just one or two examples. In fact, that's a very good way to get the wrong impression about it. But let me unpack that statement because, let's face it, usually when you want to know more about a technology, it is pretty helpful to just go over one or two examples. So, you might wonder, why do I say that's not the right way here? Well, good question dear reader. Let's imagine I've gathered four volunteers together, four people who've told me they're already well-informed about cloud computing and work with it every single day and they're in different roles. Fig. 1.2.1.
I have a student, an IT professional, a software developer and a chief information officer. Then I ask them to explain cloud computing to me, assuming I know nothing about this, and to just give me a simple explanation in a few words the main benefit of it. What do they use it for?
Fig 1.2.1: Four people with different explanations of what they use Cloud computing for The student says… “Well, I use the cloud to back up all my stuff. So, my documents, photos and videos are all safe and I'll get them anywhere I need them. Oh, and, I use it for streaming music and movies too. That's a cloud thing. ” The IT professional says… “Since we moved to the cloud, it's so much quicker to push out new applications. We don't have to spend as much time on updates and maintenance, and it's so easy to scale the systems up when things get busy.” The software developer says… “We're using the cloud as a machine learning and data mining platform. It's been great. We just didn't have the capability to do any of this before.” And the CIO says… “Cloud computing is a strategic focus for us. We've reduced expenses by outsourcing IT functions and we've improved cashflow.” Now, if I was indeed completely new to this, I'd be entitled to say you people are useless! I asked for a simple description but you all described totally different unrelated things. There's no crossover at all in anything you talked about. But now imagine if my introduction to this had been just from one of the things these people said. I might think I understood it, but I'd actually have a very narrow and limited understanding. This is a key idea as you get started. The reasons for using cloud computing, the use cases, the benefits, and even the risks and challenges can be incredibly different between individuals and across teams and organizations. This is why many people find this technology a bit tricky to understand it first. It can seem vague and really hard to define because we're human. We want a straightforward explanation. The cloud is for doing this thing or the cloud is for doing that thing. But it evades that kind of simple description. Anyone who says it can be explained with just one basic sentence is giving you a limited view of it. But even if we can't describe it in just a few words, that doesn't mean we have to go to the other extreme and say, “Oh, you can't even define the cloud. It's so loose and nebulous. It means anything.” Now we can get to a better idea about this, the general reasons that anybody finds this useful, by taking a few of those examples (those four scenarios), but then asking a couple of additional but simple questions like, couldn't you do that already? Let me show you what I mean. 1.3. Different Reasons, Same Benefits Let's go back to our hypothetical student. He said his reasons for cloud computing were backup and streaming. Let's take backup because that's not some new thing. We've talked about backup for decades. So, I might ask him, why do you say you need the cloud for that? I mean, couldn't you do that already? He says… “Well, I mean I used to have to plug my phone into my laptop and then manually copy things across. Sometimes I'd copy that to an external drive in
case anything happened and sometimes I just forget. But yeah, I could back up before. The thing is now, if I back up to the cloud, well first I don't have to do all the manual plugging and unplugging. So, it's a little faster. I don't have to be at my desk, I just need an internet connection. So, it's a bit more convenient. The software on my phone makes it happen automatically in the background so it's easier. I don't have to buy and take care of any hardware so it's cheaper. Oh, and my photos and files aren't just backed up; they're also automatically synchronized to all my other devices and that wouldn't have happened before.”
Fig 1.3.1: The reasons our hypothetical student uses cloud computing High-Level Benefits of Cloud Computing What is often described as the reason for using cloud computing, like doing backup, isn't actually the reason because we could have already done that thing. But the real benefit is when we add cloud computing to the picture, we can often do the same thing but do it easier , faster , cheaper and with a few additional features we didn't have before. Of course, this doesn't just apply to backup. When you explore any specific use case for cloud computing, they will all lead to these same highlevel benefits which I'll describe as cost , convenience , speed and features . Fig 1.3.2.
Fig 1.3.2: Four High-level benefits of cloud computing There is a split here. The first three benefits, cost, convenience and speed can let us recognize that what we're doing here often isn't brand new and ground-breaking. We're dealing with applications, websites, databases and storage. These are all things we might've been doing already, either before cloud computing or without cloud computing. But when we add it, those things can become cheaper, easier and/or faster. It is sometimes a little and sometimes much cheaper, easier and/or faster. But with the fourth benefit (features, which I could have also called capabilities or options ), allows us to recognize that adding cloud computing will often enable us to do extra things we simply couldn't do before, or even if it had been technically possible. That is, things that would have been so
cost prohibitive or so time consuming we would never have actually done it. Now, I'm not pretending that just by adding cloud computing, everything instantly becomes cheaper, easier, faster and more fully featured. No. These four benefits can be prioritized differently. For some organizations, it's all about the cost of benefits where the only thing they want to get from cloud computing is efficiency, capital expenditure or cashflow. Now, I'll admit I dislike it when I hear someone explain cloud computing as nothing but a way to reduce expenses. True. That may be the number one reason for some organizations, it's not the only reason. Many companies go into it fully expecting it to be an expense because their priority might be in the new capabilities or just being able to reduce time to market. Some examples are shown in Fig 1.3.3.
Fig 1.3.3: Important factors for cloud computing are different for these two companies I'll argue that anyone's specific reasons for using the cloud can be explained in benefits in any different combinations and priorities of cost, convenience, speed and features. But if that's the high level of why (why are we doing this now), we can go to the next level of what , that is, what exactly is cloud computing, and how will it let us get to these benefits? 1.4. Cloud Products and Services If I searched the web for commercial products and services with the word “cloud”, the results might include… Apple's iCloud Adobe Creative Cloud Alibaba Cloud Products & Services Google Cloud IBM Cloud VMware Cloud Oracle Cloud SAP Cloud Platform Accenture Cloud Platform East-West Composer Cloud There’re also companies like Cloudera and CloudFlare. This very incomplete list only includes companies that actually have cloud in their names. If I expanded this list to include say companies often mentioned in articles about cloud computing, names would include Amazon, Microsoft, Dropbox, Salesforce, media companies like Netflix and Spotify.
If I expanded that further still to include a few business publications and their lists of top 100 cloud-focused companies, you'd find an abundance of names, many of which you've never even heard of. See Fig 1.4.1.
Fig 1.4.1: A list of some cloud service providers But if you recognize any of these businesses, you'll know that some are aimed at individuals. I might get out my own credit card and pay for a subscription for myself to use the cloud services of these businesses. Others are more for professionals and teams. Some target small businesses, others are the corporate or enterprise level. Some are aimed at specific kinds of businesses like start-ups, agencies or restaurants. Some deal with just one thing like invoicing or fleet management. This just reinforces the fact that they have very different reasons, audiences and solutions. But they do have things in common. None of them are products in the classic sense, meaning they're not physical or touchable. I can't hand you a CD with a copy of Apple's iCloud on it. I can't give you a flash drive with Salesforce on it. They can't be delivered that way. They're all some kind of service delivered over the internet and we use the word “service” all the time when we're talking about cloud computing. Some companies might describe what they sell as a product, but I'm going to use the term cloud services to describe all of these. These companies are all providers of cloud services and we can be consumers of those cloud services. Sometimes as individuals, sometimes as teams or organizations. They might seem completely unrelated, but there are several common characteristics and qualities we can expect. Okay, there's a few exceptions and edge cases. So right now, let's just focus on just what is true 99% of the time about every single one of these cloud service providers. 1.5. Characteristics of Cloud Computing The first and simplest quality of all cloud services is we're going to need to be connected to the internet. Okay, this may go without saying.
Fig 1.5.1: Some of the characteristics of cloud computing The first and simplest quality of all cloud services is we're going to need to be connected to the internet (Fig. 1.5.1). Okay, this may go without saying. If you know one thing about the cloud, you know it's something to do with the internet but it doesn't mean that every single cloud service will now require us to be connected 100% of the time. For example, I might have a phone using a cloud-based backup service like Dropbox, OneDrive or iCloud and I could still be disconnected from
time to time on a flight or by choice. If I'm using a service that's provided over the internet at some point, I'm going to need to reconnect to continue using it. This can lead to this sometimes-unspoken question: “Is the cloud just the same thing as the internet? If not, what's the difference?” The short answer is no. It's not the same thing. Sure, there are people who will say things like “The cloud is just a metaphor for the internet”, but it's not a very good metaphor and it doesn't stand up to any kind of analysis. The internet is much broader and encompasses more than what we're talking about here. Not everything on the internet can also be considered cloud computing. “Does cloud computing require the internet?” Yes, the same way that the world wide web and email requires the internet. It doesn't mean that they’re all the same thing. But we can assume that the internet is the underlying background, the network that makes it possible, that allows us to have this connectivity between devices, whether those devices are phones, laptops, servers, game consoles, smart TVs, cars, fridges or whatever we have. We need that connection because when we use any kind of cloud service, that means we're going to be using some computing resource that isn't running on our own machine. Another characteristic of using a cloud service is that it involves using someone else's computer hardware (third-party hardware, depicted in Fig 1.5.1), but we need to refine that statement. For example, anytime we send an email or just visit a website, we're going to be using someone else's computer hardware along the way. But this does not bring us the misconception that the cloud is just someone else's computer. That description is so loose because it describes your next door neighbor’s laptop as a cloud as well. No, what we're talking about here refers to large tech organizations like Microsoft, Google, Amazon, IBM, Oracle, Alibaba, Apple and so many others. They have built and staffed data centers, dedicated buildings, sometimes entire complex (Fig 1.5.2) full of computing hardware, thousands of servers and hard drives (Fig 1.5.3), networking hardware, multiple redundant connections to the internet, cooling systems, security systems and independent power backups for power failures.
Fig 1.5.2: Google Cloud Data Center in Lenoir, NC USA
Fig 1.5.3: Servers working in a cloud data center These are in locations all around the world. See IBM Cloud Data Center locations in Fig 1.5.4.
Fig 1.5.4: Servers working in a cloud data center Unlike, well, let's say 20 years ago when a company built a data center for themselves or their own private internal use, these data centers were built with the intention that the resources inside them would be made available to outside users for a price so they can pay to be able to use a part of the resources and computing power in those data center for whatever reasons important to them. You can use a data center for storage of files, documents, data offsite backups or use it to run your website, host an email server or a database, or to develop and run internal applications. You may even be uninterested in all of that but just want to use some piece of software that somebody else is running in that data center. But there is a caution that I want to make here. When you first hear about all these massive cloud-focused data centers, it's very easy to think cloud computing is all about the impressive buildings, the cameras, the biometric security, all the power backups, cooling systems, and the incredible racks of hardware.
Fig 1.5.5: Racks of hardware in a cloud data center No. All that equipment is not the most important thing here, because if all we had was the physical infrastructure of buildings, servers, drives and networking, that's just a data center. We've had those since the 1940s. What really transforms this into cloud computing is what has then been added on top of all that equipment: an additional layer of software, the management systems to connect, control and automate everything in that data center .
Fig 1.5.6: A layer of software is added for the management of everything in that data center. That's what we will interact with. We don't get direct access to the computer hardware. We deal with the software . It will take care of what's actually going on behind the scenes. 1.6. Self-Service on Demand If I wanted to start using a cloud service, whether that's signing up for a personal account with some backup service or using one of these impressive cloud computing data centers to host my website, here's what I don't have to do. I don't have to make a phone call, wait for a sales rep to call me back, sit through an appointment, get a written quote, write a purchase order, wait for approval, et cetera, et cetera. No. With cloud computing, I should be able to get what I need immediately because all of these cloud services, from the personal consumer focus ones, up to the high-end enterprise level ones. They all have software. Two examples are shown in Fig 1.6.1 and Fig 1.6.2.
Fig 1.6.1: Microsoft Azure Portal
Fig 1.6.2: Amazon AWS Console Typically, to interact with this portal or management console I will follow these steps: Go to their website Create a new account Fill in my payment details or use free trial Select the service or feature I want, whether it's a web server, an area of storage, a database or access to some global content delivery network. Within seconds, occasionally a few minutes, it will be provisioned and made available to me. One of the most important qualities or characteristics of cloud computing is that it is self service and on demand (see Fig 1.5.1). However, I don't want to suggest that the software part is just a way to automate your ordering and purchasing something. No, it goes far beyond that. It removes the need for human interaction in almost every part of this because the software also takes care of immediately provisioning and allocating any of those resources I'd asked for and make so that they aren't accessible by anybody else. It monitors the hardware and takes care of any issues or faults usually without me even knowing there was an issue or a fault. It continually monitors what my usage is. Some cloud services might be charged at a flat rate per month, per hour or per day, but other resources like network bandwidth might be metered like electricity where you'll pay for the amount you use. But again, what makes this all possible is not just the hardware in the data centers, it's all the software that manages that hardware (Fig 1.5.6). That's what simplifies everything. That's what leads to these great improvements in cost and convenience and speed. One of the most important ways that we'll get cost efficiencies is that the computing resources in these cloud focused data centers, like the actual servers or hard drives, they are not allocated one by one to every user who comes along. Instead, they are pooled and shared. We need to talk about that idea.
1.7. Resource Pooling Before cloud computing, if you didn't have your own data center but you want it to use somebody else's, there were a few ways to do it. First is you just basically rent some empty space in that building, sometimes an entire room or sometimes just one space in a server rack. Fig 1.7.1.
Fig 1.7.1: A server rack showing an empty space The company who owns the data center would take care of the building, the power, the internet connectivity, the air conditioning and the rack itself. But where I'd have to bring along my own server that I'd already set up, I'd have to plug it into that space and hook everything up. This is what's referred to as colocation or colo . See Fig 1.7.2.
Fig 1.7.2: A system administrator plugging his server into an empty space in the rack. This is called colocation. Another option is where the company who owns the data center might provide a bank of servers where I could arrange to rent one, two or three of those specific servers. That server would then be dedicated to me where nobody else would have access to it. See Fig 1.7.3. But what I was paying for was the use of individual specific dedicated pieces of hardware.
Fig 1.7.3: A bank of servers in a data center. The server with a red arrow pointing to it is for rent But with cloud computing, that's not how any of this works. We are typically not dealing with dedicated resources. Instead, we get access to a large pool of shared resources. This is illustrated in Fig 1.7.4.
Fig 1.7.4: Resources are shared (pooled) in a data center If I sign up for a personal account on one of these cloud-based storage services like OneDrive , iCloud or Dropbox , that doesn't mean someone from those companies has to walk down to the basement, unwrap a new hard drive just for me, write my name on it and plug it into the data center somewhere! No. What I'll get is access to use a part of their existing massive storage and computing infrastructure. They may still have hundreds or thousands of individual servers and hard drives, but they've all been connected together as part of a larger system. Getting access to that system implies that whatever files or documents I upload to the cloud will end up actually being stored on some hard drive somewhere. Fig 1.7.5. In fact, because they are stored across multiple hard drives, there's redundancy in case of failure.
Fig 1.7.5: An illustration of massive storage and computing infrastructure in a data center showing many working and one failed hard drives But the thing is I'll never know exactly what hard drives my data is stored on. At the personal or consumer level, I probably don't even have any idea of the location of the data center where that is. That's okay if I'm uploading a document to the cloud, whether that document actually ends up being stored in a hard drive in Texas, North Carolina or Germany, it shouldn't matter at all. One of the benefits all pooled resources have is they are much more tolerant to any kind of failure. So, if one hard drive fails in this bigger system, it just doesn't matter because the cloud service provider all expect the hard drives to fail. See Fig 1.7.5. The system itself can detect a failed drive, avoid it and allocate another drive in the pool to do what that first drive was doing. That kind of thing won't even require human intervention. It will all be managed by the software running in those data centers. When resources are pooled, we can support a lot more users at the same time, because most of the time you don't need any computing resource you're using to run at full capacity. Think of your own desktop or laptop. It might spend most of its lifetime running just a small percent of what it’s capable of. That’s a lot wasted potential. But in a cloud computing environment, it can be re-allocated to other users who will pay for that. So, resource pooling makes things more efficient, cheaper and better protected from any single point of failure in the hardware. Fig 1.7.6 is a summary of the general characteristics of any cloud service.
Fig 1.7.6: General characteristics of cloud computing 1. Everything as a Service 2.1 Introduction to the “aaS” Model There's a massive amount of companies providing cloud services of some kind. So, it can be useful to have a way to categorize these services in a bit more detail so we can broadly recognize what it is they do. For example, if I'm reading about some new cloud-based company, can I quickly understand what service they provide and why might I care?
Now we already talked about the fact that you can think of some cloud services as focused on individual end users where others are focused on small businesses. Some are at the enterprise level and others are specific types of business, like transportation or hospitality. But beyond the audience, there are also several common general categories in the cloud computing world and you can recognize these categories whenever you see the phrase something as a service . The three you'll hear most are: Software as a Service (Saas) Infrastructure as a Service (Iaas) Platform as a Service (Paas) When you read cloud literature, you will certainly see those three terms Saas, IaaS and PaaS. These three terms form a high-level model of how cloud is organized . They also represent three different entry points to cloud . You will see “other things as-a-service” phrases, for example, “ Databases as a Service ”, “ Mobile backend as a Service ” or “ Business process as a Service ”. But the first three listed above are by far the most common and most widely used. So, I want you to know that whenever you see a different “something as a service” phrase, it's really just a slightly specialized version of Saas, Iaas or Paas. 2.2 Software as a Service (SaaS) Software as a service or SaaS is usually the simplest one to understand because most business users are using it already, even if they don't think of what they're doing as cloud computing. You may already be using Saas if you use any of the following services or similar: A web-based email provider like Gmail, Outlook or Yahoo mail. A web-based document creation tool like Office 365 or Google docs. A collaboration tool like Box or Slack. File backup and synchronization services like Google Drive, Dropbox, Microsoft, OneDrive and Amazon Drive. Customer relationship management software like Salesforce and HubSpot. Human resources software like Workday and Zenefits. These are all software as a service. There are hundreds of others, but what's common about all of them is when you use them, you're using an application in the simplest sense of the word. It's a complete piece of software with functionality that you can use to accomplish things. You or your company didn't have to design and build that application. It already exists. You just use it. You could download, install and then run them completely on your own computer. The software for these applications is running on servers in a data center somewhere and you're connecting to it to use it, often but not always through a web browser. Fig 2.2.1.
Fig 2.2.1: How cloud-based applications (Saas) are connected to a data center The important part of all of these is it’s still running somewhere else, the cloud, so it satisfies all those five qualities of cloud computing (see Fig 1.7.6), which are: You need to be connected to the internet
The actual code and functionality for this is running on their servers, not on your machine It is on demand (self-service) You sign up for what you need when you need it, and It's using pooled resources so when you sign up for any of these SAS applications, you're not getting your own server. You're sharing those resources with a bunch of other people and other organizations. Now, one of the things that is very common is that with software as a service, you don't own the software. It's most commonly a subscription model. So, if I stumped paying for access to Office 365, Salesforce or Netflix, I won't be able to continue using it. Now there are a few SaaS applications you may not directly pay for. They might be subsidized through ads, be free for personal use but challenge for business use, or free up to a certain amount of usage. Now, while it's true that you interact with many SaaS applications primarily using a web browser, it's not always the case. Some of the file backups synchronization services, for example, usually ask you to install a lightweight app that will run on your computer or phone, and that app is connecting to the software running in the cloud. It's uploading and downloading in the background (See Fig 2.2.2).
Fig 2.2.2: Your computer’s web browser or a light-weight app in your phone can be used to interact with SaaS applications in a data center But what that means is some people might be using these services without ever visiting the website. They are still using software as a service. It's a finished application running in the cloud. 2.3 Infrastructure as a Service (IaaS) We may also be interested in having deeper access to the resources of a cloud computing data center, where we could work with servers, storage and networking, typically because we'd want to then build something using those. When the cloud service provider offers us that option, we call it infrastructure as a service . Now, some companies only provide software as a service (SaaS). Some only provide infrastructure as a service (IaaS), while some companies might do both or also provide platform as a service, which we'll talk about in the next section. The companies I might consider as classic examples of this area would be Amazon AWS (AWS Elastic Compute Cloud (EC2)), see Fig 2.3.1,
Fig 2.3.1: Amazon AWS provides SaaS, IaaS and PaaS Google Cloud platform (Fig 2.3.2),
Fig 2.3.2: Google Cloud provides SaaS, IaaS and PaaS Microsoft Azure (Fig 2.3.3), and
Fig 2.3.3: Microsoft Azure Cloud provides SaaS, IaaS and PaaS
Alibaba cloud . These companies all provide infrastructure as a service, but again, they're all still self service and on demand. I can log into any of these sites, create an account, add a payment method or use a free trial, and then just start configuring the resources I'd want to use. So, if I wanted a server, I could actually select how much Ram I want that server to have, how fast a CPU I want, or what size of hard drive I want. See Fig 2.3.4.
Fig 2.3.4: Choosing a server plan on Amazon AWS cloud platform Also, I could choose where this server would be located, which region or which data center of that cloud provider. See Fig 2.3.5.
Fig 2.3.5: Choosing a server plan on Amazon AWS cloud platform But here's an important point. When I do this with any of these cloud service providers, I am not going to get dedicated access to one actual physical machine sitting in that data center. Instead, I'll make use of an emulated or a virtual machine ( VM ). Fig 2.3.6. A virtual machine is basically a program that's running on a real physical computer but is completely emulating another computer.
Fig 2.3.6: A virtual machine (VM) is used in a data center to provide cloud service It looks and behaves to me just like a dedicated computer. I can have whatever operating system I want. I can install whatever software I need. I can run applications and save data. One of the great things about virtual machines is they can be saved, just like saving a document, and you can then move them from one computer to another or even duplicate them. Virtualization Virtualization is the foundation for IaaS and is defined as the logical division of physical computing resources. The thing is each physical server in a cloud computing data center can support several virtual machines at the same time.
Fig 2.3.7: Virtual machine (VM) supported by servers at a data center to provide cloud service This brings us back to the idea of resource pooling discussed in section 1.7. Virtualization is one of the things that allows cloud computing providers to automatically pool these resources, rebalance and move things around as needed. It makes things flexible and more efficient, which makes servers cheaper and more fault tolerant. This means that If there is an issue on any of the physical servers, any of the VMs can simply be moved to another machine. Although these virtual machines might belong to completely different customers, each customer's individual experience is identical to having their own dedicated machine, their own operating system, libraries and applications. The term for this is … Multitenancy If somebody rents a house, we call them a tenant. So, when we have multiple users renting or spending time on the same shared computing resource, it is called multitenancy in cloud computing, that is, multiple tenants are supported on the same server. See Fig 2.3.8.
Fig 2.3.8: Illustration of Multitenancy in cloud computing In a managed cloud environment, all these different tenants have no idea that the other tenants even exist, even if it's right beside them, because they're all isolated from each other. So, programs running on one virtual machine cannot access the code, storage space or traffic of another machine, unless they're explicitly allowed to. Lift and Shift Using infrastructure as a service (IaaS) also includes things like storage and networking. This allows you to place almost anything into the cloud, including doing what's called a lift and shift . That's where you would take systems that you currently have running on your own hardware, premises (or on prem as often called), and without re-architecting or re-designing anything, just directly moving those systems into virtual machines running in the cloud. IaaS brings on-premises concepts to cloud so that you can model your applications in the same way as in an on-premises environment. In other words, if you have an existing on-premises application, you can simply “lift” it from your on-premises data center and “shift” it to cloud. This is where the term shift-and-lift came from. Although shift-and-lift sounds logical and easy, there are a couple pitfalls, some of which may be very dangerous and can interrupt your projects on cloud. In other words, things are not that simple. There are several on-premises applications that are not designed for a cloud environment. You might easily “lift and shift” such applications but they’ll encounter various problems when they continuously operated on the cloud. Ultimately you may find out you will have to redesign or rewrite parts of your applications to make them really thrive on the cloud. You may have to make a significant investment to learn a new PaaS system and write everything again from scratch. This dilemma is something I see as the biggest problem when I think of using the “aaS” model for the cloud. This explains why we will look at a different model for describing the cloud in section 2.5. It is called the CRM model. 2.4 Platform as a Service (PaaS) We can think of software as a service (SaaS) at being at the top of the cloud services stack simply because we're dealing with fully finished applications that are delivered via the internet running in the cloud, but with the downside that they're not your applications. So, when you're dealing with your most unique and important business needs, there may not be a SaaS for that. So, we need to work at the lowest level (shown as the top-most pyramid in Fig 2.4.1) using infrastructure as a service ( IaaS ) for that.
Fig 2.4.1: Stack of cloud services At the Iaas level, you or people like network architects configure servers, storage and networking which you can use to build whatever we want. But if you configure a server in the cloud, it may be a virtual machine, but it is still your responsibility. You need to configure it and take care of updates and service fixes. If something you installed is not working the way you wanted, that's your problem. It's not the problem of the cloud service provider. They just provided you with the infrastructure. The rest is up to you. Somewhere in between Iaas and SaaS there's platform as a service ( PaaS ). The provider gives you a pre-built platform where you can deploy and manage your codes and applications but not the infrastructure. An example of Paas provider is AWS Elastic Beanstalk . The easiest way to think about platform as a service is to think about the initial years of cloud computing. During those years what we now call infrastructure as a service was kind of the first option you had (IaaS). You could configure a bare-bone virtual machine server with perhaps just an operating system and then the rest was up to you. But let's say you wanted a server for doing web development (a very common reason) what that meant was you would first configure a very basic server and then immediately having to install so many applications to get that server ready for your website. You would install exactly the same things to build and run one or more web applications, some of which are listed in Fig 2.4.2.
Fig 2.4.2: Some software you have to install every time you need a web application In other words, after installing your web server, you would then install database management software, and then install a web development framework like asp.net, node or PHP. Next, you install source control. Next install security software. In the end, you now go and configure everything so they all talk nicely to each other. The thing is a typical software developer doesn't really want to do all that stuff. They want to do what comes next or what comes after that. So, the cloud service provider said, well, seeing as a lot of this is just repeated tasks, what if we automate that part of the work? For example, if what you want is a server for doing web development, it is the cloud service provider who will just take care of installing and configuring all those extra necessary pieces, that is, the web service software, the database software, the web framework, and so on. The provider also takes care of keeping everything like the operating system patched and updated so you don't need to directly manage the virtual machine. Instead of merely getting a server in the cloud and developing all the rest by yourself, what you're getting is a complete development environment in the cloud, that is, a development platform or platform as a service ( PaaS ). See Fig 2.4.3.
Fig 2.4.3: A PaaS showing some the software pre- installed by the cloud service provider You get away from having to think about the underlying infrastructure, the details of the server, the storage and networking. Those are hidden a little bit further away. These PaaS options are often very targeted at specific kinds of development. For example, you have options for web development, mobile development, data analytics (meaning you can also get very good reporting built into them) and so on. You can also get options for automatically scaling those apps, that is, if the website you're building gets hit by a lot of users and suddenly you're running a 95% capacity, you can have a setting that would say this application will automatically scale up an allocate more resources so it behaves like a faster, more powerful machine and then scale back down when it's no longer needed. We will look at scaling in more detail shortly. Now you are still going to have to build something on top of all this to make it do anything. But with platform as a service, you're getting that full
development platform. Differences Between SaaS, PaaS and IaaS
Fig 2.4.4: Differences between SaaS, PaaS and IaaS Scaling In, Out, Up or Down The words scale out is often used when talking about acquiring new compute power by adding more servers. The words scale up is sometimes used, regardless of how the compute resources are scaled. But in this section, I’ll use more precise terms to distinguish between the two fundamentally different ways for scaling compute resources. They are horizontal scale and vertical scale . In horizontal scaling we add more compute powers by adding one or more servers. In vertical scaling, we add more compute power by making our existing servers more powerful. Scaling up is often used in on-premises data centers to refer to hardware upgrades whereas horizontal scaling is often used by cloud service providers that join more virtual machines together to handle increasing workloads. In horizontal scaling, we use scaling out and scaling in to refer to compute resource increase and decrease respectively. In vertical scaling, we use the words scaling up and scaling down to refer to server capacity increase and decrease respectively. Even though scaling up and scaling down are often used in place of scaling out and scaling in within the context of cloud service, I follow a strict usage of these terms in this book so you don’t get confused. 2.5 The CMR Model The “-aaS” model is based on different abstraction levels over the cloud hardware, so it’s centered on cloud internal structure. The CMR model (or Control-Mesh-Resource model) is a workload-centric model that focuses on how a user’s workload is deployed and hosted on cloud. The CMR model sees the cloud as a huge compute resource pool, around which user applications roam. Instead of approaching the cloud through either PaaS or IaaS, we approach it through a unified control plane . The control plane takes our workloads and projects them on top of a compute plane , which comprises of various compute resources like RAM, CPU and hard drives. Workloads on the compute plane take the form of service meshes . A service mesh is used to define an isolated networking environment for an application. We can scale a service mesh and move it on the compute plane as needed. Fig 2.5.1 shows a high-level view of the CMR model.
Fig 2.5.1: The CMR cloud model To easily understand CMR imagine you have a rack of projectors. Any time you want to deploy an application, just load a deck of slides in one of the projectors and then project the application onto a huge screen (the compute plane). You can zoom in or zoom out as you wish (for scaling), and you can pan your projector around to move the projection to anywhere you want (for upgrades, failovers, etc.) The CMR model is designed for describing micro services. 1. The Marketplace: Cloud Solutions & Cloud Vendors 3.1 Making Sense of Cloud Providers Let's go back to that idea of a stack of cloud services shown in Fig 2.4.1. Before you can provide a service of a finished application, you need some kind of development platform to build it on. To have a development platform, you need some kind of infrastructure. Another useful perspective is just to consider the typical users of these different cloud service categories. For infrastructure as a service (IaaS), the typical audience would be IT professionals, network administrators or System admins. Now step up to platform as a service (PaaS). That typical audience is more often a software developer. Now up one more level to software as a service (SaaS), the audience is now anyone. But all this pyramid in Fig 2.4.1 represents is the idea that they logically build on each other. It does not show popularity or revenue. In fact, if I wanted to show you these different categories, either by say the number of companies offering this kind of cloud service or indeed the revenue generated by these kinds of cloud services, that's a very different story. See Fig 3.1.1.
Fig 3.1.1: A cloud services stack showing revenue generated (in Billions of U.S Dollars). Source: Gartner Public Cloud Service Revenue Forecast for 2020 Software as a service (SaaS) generates the most revenue by far, followed by infrastructure as a service (IaaS) and followed by PaaS platform. That shouldn't be a surprise because SAS is the most straightforward revenue model with the widest audience potential. It's a finished app and it charges people to use the app. Now let’s quickly explore what is on offer from the major providers of cloud infrastructure and even who those providers are. Well first, the most common names you'll see are: Amazon Web Services (AWS) Microsoft Azure Alibaba Cloud Google cloud IBM cloud Oracle Cloud
Now there certainly are others, but currently the top four of these have the biggest global market share, with Amazon having the most. If you just visit any of these websites and look to see what services they offer, it can be incredibly daunting. A challenge for anyone working with the major cloud providers is just the immense number of options , making sense of them and keeping up with how quickly they change. For example, if an IT professional goes to any of these cloud providers because he wants to research using that provider for just storage in the cloud, he won't find just one option for storage, but perhaps a dozen different options. There're options for storage intended for long-term backup. See Fig 3.1.2.
Fig 3.1.2: Options for storage cloud service at AWS In these options for storage is disaster recovery. Another different storage option is there for high performance. All these are important because they're often different pricing tiers. When you first start to use any of these major cloud providers, you're immediately presented with perhaps 10 or 15 different categories where each category might have 10 to 15 different services. We can't even begin to cover everything in a book like this. However, there are a few words I do want to cover - some terms you'll see across many of these providers. Public Cloud, Private Cloud, Hybrid Cloud or Multi-Cloud? First, you will see phrases like public cloud, private cloud, hybrid cloud and multi-cloud. Fig 3.1.3.
Fig 3.1.3: Public cloud, private cloud and hybrid cloud services at Rackspace You'll also see the term elastic computing being used on several of these sites. See Fig 3.1.4 for example.
Fig 3.1.4: Elastic computing cloud services at Alibabacloud You'll see the term serverless computing in multiple places. See an example in Fig 3.1.5.
Fig 3.1.5: Serverless computing at Google Cloud platform We will go over all of those terms in the next few sections. 3.2 Cloud Deployment Options We have these terms, public cloud, private cloud, hybrid cloud. You'll also see multi-cloud. Fig 3.2.1.
Fig 3.2.1: Some Cloud deployment options Public Cloud Now this first one's easy because when we talk about or use cloud computing, we're most often talking about public clouds. It's the most common.
It's the default option. If we're having a conversation about cloud and you hadn't used any of those extra words, I'm just going to assume you mean a public cloud. Nothing is owned by you. Everything in the data centers - all the hardware, software and supporting infrastructure - are owned by a third party, and they are available to the general public to use. So, we have that idea of multitenancy . All the companies (tenants) are using the same servers, storage and networking. Examples of public cloud service providers are AWS (Amazon Web Services) and Microsoft Azure . Private Cloud Private cloud is a much less common option. It's usually for larger enterprise level organizations. This is where a set of computing resources in the cloud will be dedicated to just one organization or company and not shared. Now this does not mean the organization has just their own equipment in their own server room. A private cloud can still be hosted by a public cloud provider. They'll then reserve a set of resources just for that organization, and then they'll set it up with a private network with an extra layer of authentication. So, it does allow another layer of security, control and more customization but it's also going to be much more expensive. Some examples of private cloud providers are VMware , Dell , Oracle and HPE (Hewlett Packard Enterprise). Hybrid Cloud Then we have hybrid cloud, which, as the name might suggest, is a mix or it can mean using both public and private clouds . However, it also refers to the idea of incorporating your own on-premises applications and equipment into the picture. Now this doesn't mean that you're just using a few unrelated options. A company can say… “ Hey, we have some internal applications running on-premises. We're also using a SaaS and hosting a website in Microsoft Azure, but nothing talks to each other ”. No, that's not a hybrid cloud. Hybrid cloud refers to the idea that you're setting up communication or orchestration between the different parts of your largest system. So, the applications themselves will talk to each other using APIs, and you're sharing the workload between on-prem, public cloud and possibly also private cloud. An example of a hybrid cloud company is NASA . It uses private cloud to store sensitive data and public cloud to store and share non-confidential data. Multi-Cloud Finally, there's multi-cloud. Simply put, it's using cloud services from more than one provider. For example, perhaps your organization decides they want to use the machine learning platform as a service in Microsoft Azure, but also prefers the archival cloud storage options in AWS from Amazon, and they make both of them part of the larger architecture. That's multi-cloud. It adds some architectural complexity, but it's becoming more and more of an expectation that organizations don't have to completely commit to just one cloud service provider. 3.3 Elastic and Serverless Computing Elastic Computing A word you'll see on multiple websites for cloud service providers is elastic computing. You'll see references to elastic service, elastic storage and elastic networking. The basic idea of elasticity is straightforward. It's the same reason we might use elastic for anything because it allows us to expand and contract without additional effort on our part. In cloud computing, it refers to the ability of our servers, storage and networking to automatically adjust to different levels of demand. But you might say… “ Hey, we've been scaling up and scaling out computers to meet increased demand forever. So, what's the difference between scaling an elasticity? ” Okay. Elasticity is having the ability to scale up and also scale back down automatically . But within the administration portal of a cloud service provider’s website, such as that shown in Fig 3.3.1, I could set up rules to say if the system detects it's running at more than 95% CPU, then automatically reallocate the virtual machine to act as if it's running on a faster processor, has more cores, or even duplicate the entire virtual machine to have another instance of it running.
more cores, or even duplicate the entire virtual machine to have another instance of it running.
Fig 3.3.1: Admin area of Microsoft Azure App services But we can also set up rules to say that when demand dies down, reduce the resources. This can all be set up with a few clicks of a mouse and it's just handled automatically by the cloud provider. Elasticity is another one of the key benefits of cloud computing. It's one of the great side effects of having this pooled and virtualized infrastructure. The reason for this is that when you're not using those additional resources, you don't have to pay for them. Serverless Computing Now you may also see references to serverless computing. Fig 3.3.2. This is an aspect of computing that's targeted mainly at software developers and the first thing I need to clear up about it is the name serverless computing.
Fig 3.3.2: A Microsoft Azure web page explaining serverless computing It's a terrible name! It does not mean “no server”. It still uses a server. For a software developer, this is a way to run code without caring or even thinking about the server. In section 2.4, I talked about having platform as a service (PaaS) as a way to get a full development environment in the cloud, including a web server, a database and an application frameworks. But as a software developer, I still have to think about building and running a full application on that platform. Now, serverless takes it one step further than that, to the point where if I wanted to, I could just say, I have a few lines of code. I want to run them in the cloud. On some websites you'll even see the term fast or functions as a service . Now, personally, I think of fast as just a specialized kind of platform as a service, but it gives me the ability to have just a few lines of code. I could call on demand, perhaps from a website or even from a mobile app where we'd only be charged for the computing time the code actually uses whenever it's called.
3.4. Service-Level Agreements (SLA) in Cloud Computing One of the most common concerns people have when moving to the cloud is about availability and uptime. With software development in general, we know there'll be outages, hardware failures and network issues. However, we can still have high expectations of those cloud service providers. We can measure those expectations because they all have service level agreements or SLA to describe what expectations we can have as a paying consumer of that particular cloud service. See an example in Fig 3.3.2.
Fig 3.3.2: Amazon compute service level agreement Fig 3.3.3 shows various service credits given back to paying customers if Amazon cloud services can not be made available up to certain percent of uptime in any month. For example, if it's less than 99.99% availability, then you get 10% off your bill. If it's less than 95% availability, it's a 100% of the bill.
Fig 3.3.3: Amazon service credits for certain uptimes Now, if you're not used to working with percentage numbers for availability and uptime, understand that what might sound like a pretty good number to the general public is often not a good number for software developers. For example, if a website was available 99% of the time, a lot of people think that sounds pretty good or at least acceptable, but 99% availability means between seven and eight hours of downtime a month. See Fig 3.3.4.
Fig 3.3.4: Amazon service credits for certain uptimes
The question any development team needs to ask is, is that okay? I mean, is this a critical application? How much revenue could we lose? What are our service level agreements with our own external customers? Improving this number can be costly, not just by resources, but also terms of system and architectural complexity. But you know, that's a topic for a whole another book. 1. Real-World Applications of Cloud Computing To give you more perspective on how vital cloud computing is to your life and mine, I’m giving you here five real-world applications of cloud computing. 4.1 Education Examples of how cloud computing impacts education can be found on platforms/tools like Ratatype , SlideRocket and Amazon Web Services . Advanced cloud computing technology is rapidly being adopted by students in various educational institutions. Educators are making relentless efforts to modernize classrooms by introducing e-learning software like SlideRocket. Students use SlideRocket cloud platform to build and submit presentations. They do this through web conferencing which is all done on cloud . Ratatype typing tutor is another great tool that educators use to teach students fast typing and valuable keyboarding skills. Free online typing tests are also offered on cloud for tracking their progress. School Administration Amazon AWS cloud features VDI (virtual desktop infrastructure) solutions for K-12 and primary schools. Through the cloud, students and instructors can access learning and teaching software on multiple devices. 4.2 Healthcare Cloud computing is revolutionizing healthcare. It is used by physicians, nurses and administrators for sharing information quickly from anywhere in the world. This helps to boost efficiency and create maximum convenience. It also helps to save cost since large data files by can be shared instantly. Moreover, cloud technology helps patients to receive the best possible care with little or no delay. The condition of patients is updated in a few seconds through the use of remote conferencing. Unfortunately, very few modern hospitals have implemented cloud computing. There’s a forecast however that many more will do so in the near future. Examples of some innovative companies in this regard are ClearDATA , IBM Cloud and Dell’s Secure Healthcare Cloud . 4.3 Government The applications and benefits of cloud computing for government and its agencies are citizen services, IT consolidation, flexibility, cost savings and shared services among others. Early adopters of cloud computing were the US military and U.S government . The U.S. Federal Cloud Computing Strategy , was introduced and instituted under the Obama administration for the sole purpose of accelerating cloud adoption in all departments. This strategy was meant to shift the focus from the technology itself to the mission and core competencies of the agency. The U.S. government’s cloud incorporates mobile, social and analytics technologies. Nevertheless, they have to adhere to security measures and strict compliance (FISMA, FIPS and FedRAMP). This is for protection against cyber threats from both abroad and domestic. 4.4 Marketing & Financial Services Cloud A marketing cloud is an end-to-end digital marketing platform that can be used to target leads and manage contacts. For example, Maropost Marketing Cloud provides services like hyper-targeting of leads and easy-to-use marketing automation. They also provide advanced SMS delivery capabilities, trigger email services, mobile notifications, and so on. Adobe Marketing Cloud also offer end-to-end digital marketing. Hubspot offers marketing, sales and service software that helps businesses grow. Cloud-based foreign exchange (forex) trading services and platforms are becoming more popular these days. Since armchair traders worldwide are now equipped with the best online services and tools, they embrace the action of buying, selling and exchange of global currencies. Cloud provides trading automation and also allows even busy traders to be in control of any market situation on the go. 4.5 Cloud Storage There is a rapidly growing number of cloud storage providers online these days. Each of them competes over the storage capacity they can offer clients. For example, Dropbox has remained the clear leader in the provision of streamlined cloud storage. They give users free apps that they can
use to access their files on multiple devices and on their website with up to 1TB free storage capacity . Gmail, a Google’s email service provider, give their users unlimited storage capacity on the cloud. Google can be seen as a revolution when it comes to the way we send and receive emails. In other words, Gmail has helped greatly to increase email usage throughout the world. Facebook also gives infinite cloud storage capacity, allowing their users to store unlimited videos and images on their profiles, which they can easily access on multiple devices. Facebook takes it a step further by allowing users to exchange data on their Messenger app. 1. Hands-on Experience: Approaching the Cloud with Step-By-Step Real-World Examples In this exciting chapter, I provide walkthrough examples that will help you get some hands-on experiences with cloud. I show you how you will create a free Microsoft Azure subscription and also provision some compute resources. Creating accounts on other cloud platforms like Amazon AWS, Google Cloud and Apple’s iCloud follows a very similar process. 5.1. How to Create and Use a Microsoft Azure Subscription In this example, you’ll learn how to create a free Azure subscription. 1. Before you create an Azure subscription, you need to get a free Microsoft account. If you want to use AWS, create a new AWS account. Similarly, if you want to use Google Compute Engine, you must have a Google account. To create a new Microsoft account, navigate to https://signup.live.com and follow the wizard to create a free Microsoft account. 2. To sign up Azure, follow this link: https://signup.azure.com . Use your Microsoft account to sign in. 3. Follow the wizard to complete the sign-up process. In addition to the Microsoft account, you need a cell phone for identity verification, and a credit card for payment verification. Please note your credit card will not be charged unless you explicitly upgrade your free account to a paid offer . 4. Once your subscription is created, you can open the Microsoft Azure Management Portal by navigating to https://portal.zure.com and start using your Azure subscription. See Fig 5.1.1.
Fig 5.1.1: Microsoft Azure Management Portal Close any pop-up window that may appear. For example, close the Quickstart Center window by clicking the X button on the far-right side of it. 5.2. How to Create a Windows Virtual Machine (VM) 1. To create a new virtual machine, click on the +Create a resource link that appear under the Azure services at the upper-left corner of the portal, as shown in Fig 5.2.1.
Fig 5.2.1: Create a new resource under Azure services on the Azure Management Portal 1. You are in the Basics section, On the New screen, click on the Windows Server 2016 Datacenter entry, as shown in Fig 5.2.2. If you don’t see the entry, you can search for “Windows Server 2016” in the search box near the top of the window and click on the found entry.
Fig 5.2.2: click on the Windows Server 2016 Datacenter entry 3a. In the Create a virtual machine window, you need to enter the project detail such as your subscription type. You also need to enter information for your virtual machine, such as the virtual machine name , administrator’s username and password . Please note that you need to create a resource group by clicking on Create new to hold your virtual machine. Every entity you provision on Azure is called a resource , and you can put one or multiple resources into a resource group. A resource must belong to a single resource group. See Fig 5.2.3.
Fig 5.2.3: Project details form for creating a virtual machine 3b. Under Instance details , type myFirstVM or anything similar for the Virtual machine name and choose East US for your Region , and then choose Windows Server 2019 Datacenter for the Image . Leave the other defaults. See the completed entry in Fig 5.2.4.
Fig 5.2.4: Instance details is completed
3c. Under Administrator account , provide a username , such as azureuser (or use your name) and a password . The password must be at least 12 characters long and meet the defined complexity requirements . Entering a strong password is extremely important so you will not have problem when trying to login to your server later. You can generate very strong password on this site: https://passwordsgenerator.net . Under Inbound port rules , choose Allow selected ports and then select RDP (3389) and HTTP (80) from the drop-down. This allows all IP addresses to access your machine. If you want a secured virtual machine, select only HTTP (80) and HTTPS (443) or uncheck RDP ( Remote Desktop Protocol ) and SSH ( Secure Socket Shell ). However, since this machine is being created for testing (tutorial) purpose only, I can include RDP as shown in Fig 5.2.5.
Fig 5.2.5: Administrator account detail is completed 3d. Click the Next: Disks > button at the bottom of the page. You will be taken to the next section, Disks . 4a. Here, you can choose from various virtual machine sizes. Microsoft Azure provides several series of virtual machines with different memory and CPU core capacities. For this tutorial, you can use the Premium SSD size. Microsoft recommends this disk for high IOPS (input/output operations per second) workloads. Virtual machines with premium SSD disks also qualify for the 99.9% connectivity SLA.
Fig 5.2.6: The disks section to be completed Leave the encryption type and Use managed disks under the Advanced tab at their default settings. See Fig 5.2.6.
Fig 5.2.7: Use managed disks is left at default Important Note : For best performance, reliability, scalability and access control Microsoft recommends Managed Disks for most virtual machine configurations. 4b. Next, click the Create and attach a new disk link shown in a red box in Fig 5.2.6. The Create a new disk page opens. See Fig 5.2.8.
Fig 5.2.8: The Create a new disk section You are given 1.024 TB of premium SSD disk space. You can click on the Change size button to change the size. Leave the Source type at default (empty disk) to ensure you are selecting an empty disk for your machine, unless you have another disk in your subscription that you would like to use. Also leave the encryption type at default . The disk name in this example is myFirstVMDataDisk0 as you can see in Fig 5.2.8.
Fig 5.2.9: Select a disk size section showing available disk sizes and features
4c. Click on the OK button in Fig 5.2.9 to go back to the previous page to see detail of your disk. See Fig 5.2.10.
Fig 5.2.10: The disks section is now completed showing the details of the disk 5a. There are other sections on this screen that you may want to configure, especially if you are a network or system administrator: Netwoking , Management , Advanced and Tags sections. These sections are automatically created for you so accepting all defaults should work just fine. Now just click on the Review + Create button. When the review page opens you should see validation passed with a check mark on the top of the page. See Fig 5.2.11.
Fig 5.2.11: An Overview of your project showing it has passed validation If you scroll down this page you will see an overview of your project. Fig 5.2.12. Note the You have set RDP port(s)… warning message in Fig 5.2.11. It is showing because I deliberately checked RDP (3389) as explained in step 3c above.
Fig 5.2.12: An Overview of the virtual machine project 5b. Click the Create button to create your virtual machine. At the time of writing, the VM creation wizard has been updated. Machine creation takes a few minutes. You will see “ Your deployment is underway ” as the page is updated. See Fig 5.2.13.
Fig 5.2.13: Our Virtual machine is being created Once the machine is created, the “ Your deployment is complete” page will automatically open, as shown in Fig 5.2.13.
Fig 5.2.14: Our Virtual machine has been created (deployment is complete) To go to the machine overview page, click on the Go to resource button at the bottom of the screen. A virtual machine tile should also have been added to your portal home page.
Fig 5.2.15: Our Virtual machine overview has been created and is now running 1. Click on the Connect link shown on the left panel in Fig 5.2.15 to go the page where you can connect to your virtual machine via your RDP. Fig 5.2.16.
Fig 5.2.16: Our Virtual machine connection page is open 1. Click on the Download RDP File . It will be downloaded and saved to your computer, for example, on your desktop. See Fig 5.2.17.
Fig 5.2.17: RDP is saved to my computer’s desktop Double click on the downloaded RDP file to open the log in screen. If you get a connection warning from Windows security wizard, like that shown in Fig 5.2.18, check the optional “ Don’t ask me again… ” check box to hide this window next time you try to connect. Now click the Connect button.
Fig 5.2.18: Remote desktop connection warning A small dialog window pops up on your desktop where you can use your administrator credential to login. Just enter the username and password you created in step 3c above. See Fig 5.2.19.
Fig 5.2.19: Enter credentials here to login You should see the remote desktop of the machine right on your desktop, as shown in Fig 5.2.20.
Fig 5.2.20: Virtual Machine remote desktop Virtual machines are charged by the actual time they are kept running. To save cost, you should shut it down your when you are not using them. Azure also provides an auto-shutdown feature you can configure on the VM’s overview page. For example, you can schedule your machine to be shutdown at specific time, and configure a notification hook to notify you 15 minutes before that happens. 5.3. How to Create a Linux Virtual Machine (VM) You will follow the same steps to create a Linux VM. The only difference here is that at step 2 above where you need to select a Linux image such as Ubuntu Server 18.04 LTS . See Fig 5.3.1.
Fig 5.3.1: Click on the Ubuntu Server18.04 LTS entry Then follow the same wizard to complete the provisioning process. You need to enable port 22 for SSH in this case. If you want to put your Linux virtual machine on the same virtual network as your Windows machine, you need to make the following few different choices: 1. Reuse the same resource group you used the other time instead of creating a new one.
2. Don’t create a new virtual network when you get to the Networking page. You should pick the one that was created when the Windows virtual machine was provisioned. Once the machine is provisioned, you can use a SSH terminal to connect to the Linux VM just like how you’d connect to any other remote Linux machines. 1. Conclusion Thanks for buying and studying my book, Cloud Computing Fundamentals . I hope I've convinced you that the Cloud is more than just someone else's computer. 6.1 Final Words If you enjoy this book, or if you have requests, do let me know by sending me an email. Regards, A. B. Lawal [email protected]