A 10-Minute Intro to Cloud Computing Services
Disclosure: As a developer more familiar with Microsoft technologies, the descriptions and examples I present below are based on Azure: the Microsoft Cloud Services Platform. There are cloud service offerings from over a dozen well-known names including Adobe, Amazon, Google, IBM, Oracle, Red Hat, Salesforce, etc. Specific services availability may vary between each of these providers, to the extent that a one-to-one comparison may not be easy or even possible, so it is down to choosing what fits and works for you.
Context
I wrote a couple of articles (links shown at the bottom of this page) on how emerging technologies such as cloud-based services can benefit even the technologically less-advanced countries. The reason behind this point is argued in an article titled: Cloud Based Technologies Present New Paradigms for Technology Transfer.
Recently I got an InMail message from an enthusiastic reader asking me if I could elaborate on the “enablers for the innovative solutions” (my own paraphrase here) for cloud-based innovative solutions referred to in my articles. This commentary is to address that query by way of giving a quick introduction as a starting point. Cloud Computing is a vast topic, especially if the various types of developer services must be addressed, and in this regard this introduction doesn’t pretend to be complete even as a brief introduction. The main purpose here is to highlight key points in relation to what was stated in the article, so context matters here. Needless to say, there are countless reference materials out there to fill in the missing gaps (Bing, Google and Wikipedia being the good friends).
The Three Cloud Delivery Models: IaaS, PaaS and SaaS
Note: Instead of Cloud Delivery Models you may come across alternative phrases such as: Cloud Categories or Cloud Levels of Complexity.
- Infrastructure as a Service (IaaS): is the ultimate, top tier, cloud computing service provision. With this option, you run a computer (as a Virtual Machine or VM) by managing the Operating System (OS), installing applications, configuring storage and networking, etc. With the highest level of flexibility and management control, it’s more like running a server computer on your own premises, except that the computer is now a VM (which you can create, configure, scale, yes, even kill it when not needed), and you are running it in cloud provider’s data center. If your application demands the overall control for computing infrastructure and the next lower level won’t meet the requirements, then this is where you would be.
- Platform as a Service (PaaS): The middle-ground (and my personal favorite) of cloud computing model, here you’re interested in building your applications and deploying them to a cloud platform, without much concerns for the underlying infrastructure. When creating applications like a website, you may have preference to Windows or Linux platform, and in this case the choice of a VM is unavoidable even on PaaS but it is quite straightforward. Upon creating a Web app or apps based on other services, you generally have many options of resources with varying performances to choose from (say, compute CPU sizes, solid state disk vs. magnetic disk, type of database, etc), but a key feature here is that you are not concerned with an on-going management, software updates, etc., as for the IaaS. Based on demand, you can scale the compute power, data storage provisions and other configurable resources at a later stage. There are numerous services you choose as templates for your PaaS application. These services are essentially designed to manage the underlying infrastructure (conveniently hidden away from us) by exposing only the application layer which is controlled by our code and/or configuration.
- Software as a Service (SaaS): This is cloud computing service in its simple form. If you used an application over the Internet, say, based on subscription (such as Office 365, Adobe Creative Cloud, various Cloud storage services, etc), then, you’re already familiar with SaaS, and perhaps for some time already. It is also possible for businesses to deploy their own SaaS to enable their employees access applications from anywhere. For instance, the Azure Active Directory, which manages identity infrastructure for the Azure cloud, can authenticate and authorize users to have access to applications provisioned under its control. Azure also has a service by the name SaaS for creating a SaaS (yes, sounds confusing), with about 50 apps to choose from. As an example, with the SaaS service you can install Visual Studio in your Azure cloud. The simplest of apps you create on PaaS may also be regarded as a custom SaaS. For instance, apps directly used by mobile devices, or apps invoked to do very specific tasks such as verifying user information or software license validation may fall into this category. Beyond noting this point, the distinction of custom SaaS is not really that important.
Now we know the three categories or models of cloud computing services, we can go a step further to simplify this introduction. When you’re using IaaS, you essentially work by putting together CPU, memory, storage, network, OS, application software and so on, more like building your computer from a motherboard up and adding peripherals around it. On Azure, this is even further simplified by focusing on three main resources: Virtual Network, Virtual Machine, and Azure Storage.
With the PaaS, on the other hand, all the necessary resources and infrastructure are included for us. One important point to bear in mind is that PaaS also acts as development and deployment platform. Therefore, we can assume that it does a lot of smart things under the hood (the IaaS stuff conveniently hidden from us) and builds on the scalability of IaaS that can be dynamically adjusted on demand and/or by manual configuration. Therefore, we can say PaaS is just a special case of IaaS with some of the details abstracted away to free us from the complexity of IaaS. We can therefore safely put IaaS to one side (noting that here we need to know more about how Virtual Machines, Virtual Networks and Storage are created and configured), and instead focus more on PaaS. Also, with regard to SaaS, we are already introduced to what we need to know; it’s just a cloud-based application used over the Internet.
Here is something easy to remember:
- IaaS: you manage Applications, Data, OS, Runtime and some Middleware;
- PaaS: you manage Applications, Data;
- SaaS: you manage nothing!
For the reasons outlined above, PaaS therefore stands out as a good middle-ground choice for introducing most cloud computing concepts by elaborating on key services that form the basis for many of cloud-based innovative solutions. As mentioned above, PaaS acts as the development and deployment environment and at times it is not uncommon to think of cloud computing more in terms of PaaS (this of course not always accurate). My preceding articles (links at the bottom of this page), for instance, make this implicit assumption (reason for assumption being that PaaS requires relatively less skill base than IaaS as outlined in the articles).
Cloud Services for Your Innovative Solutions
To give you some idea of what are out there, I will briefly describe the services that show up on Azure Dashboard when you sign in to an Azure portal. By the way, you can sign up for a 12-month free account on Azure and explore this for yourself.
Listing all the services by name throws up some 220+ items which is a very comprehensive list indeed (and could be more by the time you check this). Listing in category mode shows more informative groupings with relevant items sorted into each of the groups, such as Compute, Networking, Storage, Mobile, Web, Databases, Analytics, AI and Machine Learning, Internet of Things (IoT), Identity, Security, etc, and you get the idea. As mentioned above, most of the Compute, Networking and Storage items (some 40+) are for IaaS although some are also available to PaaS. There are also management services to support admin tools, such as subscription, integration, diagnosis, cost analysis and optimization, monitoring of various types, etc.
This still leaves dozens of services that we can choose from for development and deployment on PaaS. With some coding and/or configuration, you can spin up these services into smart applications, in most cases from the comfort of your development suite like the Visual Studio which is able to talk to your Azure platform, not only for deployment purposes, but also for remote debugging during development. Popular frameworks (e.g., .Net, .Net Standard, Java) and a wide range of programming languages (such as C#, JavaScript, Java, PHP, Python) are supported, but these vary depending on a chosen service for programming. For some of the services, no programming is involved at all and configuration from the Azure Dashboard or Azure Cloud Shell (browser-based command line) is all that is required. A good example of this is Logic Apps service used for automating workflows in business activities.
Overview of Developer Services
Most of the Azure developer services fall into three broad categories as shown below (with service names shown in italics).
- App Services: There are services which we can build on for some targeted applications. Examples include Web Apps (to create websites), API Apps (to create a rich set of APIs for HTTP such as WebAPI), Logic Apps (to create business automation with workflows – also briefly mentioned above), Mobile Apps (to provide mobile solutions such as data storage and push notifications) and Function Apps (to create a wide range of applications). Function Apps service, as a recent addition, is a very flexible and powerful and often mentioned alongside the terms ‘microservices’ and ‘serverless apps’ (suggestive of being able to create apps that can emulate applications on conventional servers). It is also described as an event-driven, serverless compute service. If you want to do some processing, such as image resizing, file processing, or working with IoT devices, Function Apps is the choice. It has platform automation features such as being triggered by events or time schedule with automatic scaling based on demand, and the built-in automation really takes programming to a new level. For instance, saving an image file to a folder can be a trigger event for a Function App so as to make it start running and resize the image size as required. Note in this example saving an image is totally unrelated to the app (it may originate from some SuprDuperCloudSolutions, Inc., subscribers).
- Messaging Services: The cloud as a medium connecting people, Internet of Things (IoT) devices, processes, etc is a great vehicle to implement powerful applications based on messaging of information. Whether the messages are location updates, your twitter feeds, traffic updates, flood alerts, (okay, I can go on ad infinitum here), it’s all about sending and receiving messages based on some trigger event or time-schedule. We leave what to do with these messages to solution architects and developers’ imagination but if you think about it, it’s safe to say that there are unlimited possibilities for innovative solutions here. To leverage this, Azure for instance provides powerful messaging services including Event Hubs, Notification Hubs and Service Bus. Each of these services has layers of built-in protocols for managing messaging events types, message sorting and queueing types, etc which provide more programming flexibilities.
- Data Processing (or Computational) Services: Where there is sufficient data, we can employ processing to do clever things. Organizational, business, or scientific data all have some useful information to reveal. We can apply processing for analytics of visual or other forms of presentation, moving and transforming data for further analysis, for intelligent decision making, or for a prediction of some sort, and so on. Data could come from real-time messaging just touched upon above, remote data collection from IoT devices, historical business data from enterprise database, etc. Push the limit of data analysis to mathematical modelling of data for “learning” or “training”, and we are into a realm of Machine Learning (ML), a new buzz word these days and an addition as a branch of Artificial Intelligence (AI). Azure provides quite an armory of tools and services under Analytics (over a dozen) and AI + Machine Learning (nearly a dozen).
Conclusion
I hope the above quick overview gives you some appreciation of what are out there, noting that new services are being added and existing ones get improving. Think of this collection as a cloud-based services toolkit for applications development (programming-based solutions) and for algorithmic development (ML based solutions). This is just a starter but gives you some idea to explore further.
🔹 🔹 🔹
If you’ve got this far, chances are you may have found this article useful. If so, show your appreciation by voting with thumbs-up 👍 at the top so that I get a more realistic indication of readers interest in what I share in my spare time.
🔹 🔹 🔹
© 2018 Demessie Girma.
0 Comments