Microsoft Azure Cloud Concepts

Introduction to Cloud Computing

Let’s start by doing an introduction to cloud computing. Let’s take a trip in time. If we look maybe 10, 15 years back, before even virtualization, in each company’s datacenter we had a ton of servers, and each server had a different purpose, maybe running on different hardware, and even with different operating systems. Each new application that you installed, the vendor required that their application ran on a dedicated server. Each one of those servers had their own CPU, RAM, and hard drive resources, and of course, each one of them needed enough resources for utilization at peak time. But what this did is that, on average, most servers were really underutilized and organizations were spending a ton of money on hardware that most of the time was not even used at 10% of its capability.

But then we started to implement virtualization, which allowed us to run multiple virtual machines on a single virtual host, so we were really able to get more usage out of our hardware and cut down on space, cooling, and of course, costs. However, even with virtualization, we still had a few disadvantages, such as high upfront costs since we need to buy powerful virtual hosts, which we would then need to keep for five years for the amortization of cost. We still need to pay for space in the data centre, as well as electricity and utility costs for cooling and other server needs. Furthermore, hardware maintenance is still needed as this can break down, network cards can go bad, and so on. Virtualization is still way more cost-efficient than dedicated hardware. Don’t get me wrong, but there is still space for improvement, and this is where cloud computing comes in.

Cloud computing enables companies to consume a compute resource, such as a virtual machine, storage or an application as a utility, just like electricity, rather than having to build and maintain computing infrastructure in‑house. In a cloud environment, you have the cloud provider, which owns their datacenter and manages all of the hardware, like servers, networking, and, of course, virtualization. As the cloud is fully built on the principle of virtualization, no client ever has direct access to the hardware, simply to a virtualized environment. All of those resources are pulled together and then shared to multiple clients that all consume that shared hardware. Those clients don’t need to know what servers they run on or on how many servers their different environments are running, they simply consume a service and the cloud provider is the one making sure there are enough shared resources to handle everything.

In a cloud environment, users simply select what services they want to use with each service having a different price per user or per minute of utilization for that specific resource. In a cloud infrastructure, this should be self‑service by the user, and the provisioning should be fully automated by the cloud provider and delivered in an almost instant fashion. Now let’s talk a bit about cost. In a cloud model, services are billed on demand by the minute or by the hour, depending on what service you are using. This on‑demand billing allows organizations to create resources when needed and then stop paying for them when they don’t need them anymore. This way, organizations can be more dynamic and cost-effective, as well as reduce the upfront cost. Since the money you pay for the cloud does not get depreciated over multiple years, it’s a resource that you use right away, the cloud cost usually goes into the operating expenses, or OpEx, instead of the capital expenses, or CapEx.

Here is an example of billing for a virtual machine in Microsoft Azure. First of all, I need to select the specifications of the machine that I want. In this case, I’m selecting a virtual machine with 2 cores and 7 GB of RAM. You can see right away the cost would be about $0.36 an hour, and I can also select the operating system, in this case, Windows. Because Microsoft owns Windows, the cost that I paid for this virtual machine also includes the licensing for the Windows operating system it will be using, so now I’m getting that license as a service as well. For the estimate, I can also choose how many hours I expect this virtual machine to be used per month, so if I use this virtual machine for 730 hours, my cost would be 262.85 per month. And as you can see inside Azure, virtual machines are built per second, so it’s really flexible, you only pay for what you use. Most cloud providers will also offer you savings if you pre‑pay for a number of years. So, if I know that I will need this VM for three years to run 24/7, I could save up to 55% of my computing cost, which could make sense for some servers that are always up. Cloud services can also be scaled depending on demand and even automatically.

In this case, I have an app service plan in Azure, which is a platform in which you can host websites, and I can enable auto scale on it. This way, I can say that, for example, when the CPU usage goes above 70%, add more CPUs or instances to that service. This can be really useful for public websites or different apps, though you pay a set amount at rest or when they’re not used a lot, but if you have a peak or lots of people connecting and using that service at the same time, increase those resources, pay a bit more for that specific set of time, and then go back to normal. And this is why we say that the cloud offers rapid elasticity. Whenever you need it, you can grow the amount of resources that you use and pay for, and then right away when that load is not there anymore, you can always go back to minimum spending and really only pay when you need those resources. Something else that is a big advantage of the cloud as well is the reliability.

Cloud provider takes care of high availability and disaster recovery

In a cloud scenario, the cloud provider takes care of high availability and disaster recovery on their platform. Just to go over the terms so you can see the difference between those two, high availability is usually to protect us against software and hardware failures. Those are usually very local, like a rack goes down, a server loses power, a service crashes on one of the servers, and things like that. On the other side, disaster recovery is something much bigger, like a natural or human‑induced disaster. Take, for example, a flood, fire or an earthquake that puts the whole datacenter down. With cloud computing, you can also benefit from fault tolerance, which is very similar to high availability, but offers zero downtime. So when you look at the service level agreements for your cloud provider, make sure you take a look at their reliability service level agreement for high availability, disaster recovery, and fault tolerance. Now, as you can imagine, if you want to have fault tolerance and disaster recovery in your own datacenter, the cost can go really fast, as you would need a second datacenter on the other side of the country for which you need to pay servers, networking, utilities, and so on. So from a cost perspective, the cloud can offer a much better solution for a better cost since the cloud provider already has those, so you would benefit from the economies of scale. If we look at Azure a bit more specifically, there are Azure datacenters in over 60 regions worldwide, allowing you to implement fault tolerance across not only multiple states, but continents.

Understanding Types of Cloud Computing Services

Types of Cloud Computing Services

Let’s start by introducing the types of cloud computing services. There are multiple types of cloud computing services, but the three main ones are Infrastructure as a Service, Platform as a Service, and Software as a Service. Let’s take a look at what the differences are. What really differs between those cloud computing services is how much you manage versus how much the cloud vendor manages.

Let’s start with on‑premises where it’s really easy, you’re the one that manages everything from storage to the datacenter to networking, virtualization, and applications on top of it.

Infrastructure as a Service (IaaS) delivers cloud computing infrastructure to organizations, including things such as servers, networks, and storage. You, as the client, still manage the operating system, the applications, as well as the data.

Platform as a Service (PaaS) is mainly used for applications and provides a framework for developers that they can build upon and use to create customized applications. All servers, storage, and networking are managed by the third‑party provider while the developers can maintain management of the applications.

Our last option is Software as a Service (SaaS) in which you simply enjoy the service, pay a fee, but you don’t manage anything at all. Everything is managed by the vendor. A majority of Software as a Service application is run directly through the web browser and do not require any downloads or installation on the client-side. While this may seem a bit complicated to grasp at first, let’s take a look at the same model, but from a different perspective.

Let’s compare our cloud computing services to everyone’s favourite food, pizza. Our on‑premises model would be similar to making pizza at home from scratch. You make your own dough, you cut your own toppings, you put it in your own oven, and you eat it at your own table. Our Infrastructure as a Service model is similar to getting frozen pizza from the supermarket and cooking it at home. You pay for the part of the service, the pizza dough, tomato sauce, toppings, cheese, but you still cook it yourself and eat it at your own table. The Platform as a Service is similar to pizza delivery where the pizza comes to you already made and hot, you simply need to pour the drinks and eat it at your own table. And finally, the Software as a Service is like dining out. You don’t have to bring or make anything except your wallet, but everything is taken care of by the vendor, you simply pay the bill for what you consume. Hopefully, this comparison with pizza allows you to better view the differences between the cloud computing service models.

Let’s take a look at some examples of cloud vendors and services in each category. For Infrastructure as a Service, some of the big players are Microsoft Azure, Amazon Web Services, or AWS, and Google Compute Engine. In the Platform as a Service, some big players our Heroku, Amazon Elastic Beanstalk, as well as Azure Logic Apps. In the Software as a Service, we’re looking at Office 365 by Microsoft, Google G Suite, Salesforce, and Dropbox. And, of course, those are just a few of the most popular ones, but there are hundreds, if not thousands of examples of cloud providers with the Software as a Service one probably the most popular one.

If we dive deeper and focus only on Microsoft, an Infrastructure as a Service, we have Azure Compute, which is the name for the virtual machines, and Azure Storage. In Platform as a Service, we have things such as Azure Logic Apps, Azure Functions, Azure Web Jobs, and Azure Automation. And in the Software as a Service, we have services such as SharePoint Online, OneDrive for Business, Microsoft Teams, and the Power Platform. Those are just a few examples. Microsoft has over a dozen services in each one of those categories.

Cloud Computing Services Scenarios

Now that we have seen the basics, let’s take a look at some scenarios for each cloud computing type.

Let’s start with Infrastructure as a Service. Infrastructure as a Service is, first of all, perfect for test and development scenarios as it allows you to turn on and off dev machines only when needed, and you don’t need to pay for the hardware full time. Storage and backups are also a great scenario for Infrastructure as a Service as the pricing to keep backups in the cold storage are very advantageous. Storage and backups are also a great scenario for Infrastructure as a Service as the price to keep backups in cold storage are usually very good. Next up, high-performance computing and big data analysis, which are often things you only need for small periods of time, but require very powerful computers, can be a great way to use Infrastructure as a Service as you only pay for the time you need.

Now let’s talk about Platform as a Service. A great scenario is an analytics or business intelligence. Tools provided as a service with Platform as a Service allow organizations to analyze and mine their data, finding insights and patterns and predicting outcomes to improve forecasting, product design decisions, investment returns, and other business decisions. Platform as a Service is also great for developers. Platform as a Service lets developers create applications using built‑in software components, and cloud features such as scalability, high availability are included, reducing the amount of coding that developers must do.

Finally, for Software as a Service, the main scenarios are getting access to sophisticated applications without the need to manage any of the infrastructures yourself. From a Microsoft perspective, imagine all of the work needed to install SharePoint, Exchange, and Skype for Business servers on‑premises versus just using the same tool in the cloud in a matter of minutes. Software as a Service also is basically instant where if you want to add more users, you just enable their license and they can use the service.

Understanding Cloud Computing Deployment Models

Let’s start by looking at the different types of cloud computing deployment models. There are multiple types of cloud deployment models out there.

Public Cloud

First one we’ll talk about, which is the most popular, is the public cloud. In the public cloud, you have a cloud vendor that provides cloud services to multiple clients. All of the clients securely share the same hardware in the back end.

Private Cloud

A private cloud, on the other hand, is when the hardware is only used by a single company, which most of the time, but not necessarily always, also owns the hardware and datacenter. This is very close to the traditional datacenter model we always had, but in a private cloud, most of the time, IT bills the different departments based on the services that they use.

Hybrid Cloud

Next up, we have a hybrid cloud. The hybrid cloud is a combination of both public and private clouds. Often, there’s automation and orchestration between the two. Next up, we have the hybrid cloud, which is a combination of both the public cloud and the private cloud with automation and orchestration between the two.

Community Cloud

The last option is the community cloud. In a community cloud, you have a shared infrastructure between several organizations with common security, compliance, and jurisdiction concerns. We often see the example of a community cloud when governments from different countries set up a shared services division that hosts all of the IT for that government.

Now, let’s take a look at Azure and how that fits in. The easiest one is really the public cloud, as most Azure customers and offerings are in the public cloud model. Microsoft also has solutions for the private and hybrid cloud markets in its Azure Stack product family, which can be used for both connected scenarios, meaning hybrid cloud, as well as disconnected scenarios so you can run the same application inside of private cloud on your own hardware. The big advantage is that the tools, experiences, and app models you would have in your private cloud would be consistent with other workloads you might have on the public cloud, and this would also allow you to easily transfer workloads from your private cloud to the public cloud, whatever you decide to do so. Lastly, Azure also has offerings for the community cloud category. One of the most popular examples is probably the Azure Government, which is an Azure offering specific to government entities. You cannot simply register for it, you need to be a valid government organization and be approved for it. Azure Government is actually hosted in separate data centres from the public cloud and can handle data that is subject to government regulations and requirements, such as FedRAMP, DOD, CJIS, and more. Azure also has other community cloud offerings, for example, Azure China and Azure Germany, and from Microsoft, those are part of the sovereign cloud category, but from a cloud deployment model point of view, those are both community clouds.

Conclusion

First of all, we have learned what cloud computing is and how it enables companies to consume a compute resource, such as a virtual machine, storage or an application, as a utility, just like electricity, rather than having to build and maintain computing infrastructure in‑house. We have then learned about the cloud computing services. The three main ones are Infrastructure as a Service, Platform as a Service, and Software as a Service. And we have also looked at different Microsoft offerings for each cloud computing service model, from Infrastructure as a Service to Platform as a Service, and finally, Software as a Service. We have also looked at the different cloud deployment models, the most popular being the public cloud, where you have a cloud vendor that provides cloud services to multiple clients and all of the clients securely share that same hardware in the back end. A private cloud, on the other hand, is when the hardware is only used by a single company, which most of the time, but not always, owns the hardware and datacenter. Next up, we have the hybrid cloud, which is a combination of both public and private cloud with automation and orchestration between the two, and the Microsoft solution for it is also the Azure Stack. The last option is a community cloud, which is a shared infrastructure between several organizations with common security, compliance, and jurisdiction concerns.

Thank you very much for reading this artical.

Reference

Pluralsight Course: https://app.pluralsight.com/library/courses/microsoft-azure-cloud-concepts/table-of-contents

Why Your Startup Needs a Tech Partner

How to move your project forward without an in-house team and CTO

We all live in a magical time, an era of innovation, in the age of unicorns. Everyone who reads tech news at least once in a while can’t help but get inspired by startup success stories. In reality, though, it turns out that building a tech company that will last is not as easy as it may seem, and stories of failure are much more common than journalists lead you to believe.

While there are sucssful start ups, as many as 70% of startups fail. Other stats can be even worse — consumer hardware companies fail more often, with a shocking 97% rate. Startup Genome analysts shows that 90% of all startups will sooner or later die. As bad as it sounds, there may be a way out. Instead of focusing on the sad side of entrepreneurship, let’s think of what can be done to prevent those failures. What can startup owners do to make their journey easier and more enjoyable? Is there someone to help them survive, concentrate on their goals, and succeed?

Why Startup Companies Outsource

At first glance, outsourcing is not a startup thing and is usually associated with big business. Yes, large companies have enough personnel and other resources to get their work done, but they often choose outsourcing as the best way to maximize their profit, increase work efficiency, and improve the quality of their products. On the other hand, startups, afraid of additional expenses, tend to cut corners constantly. The truth is startups should outsource as much as big companies do, if not more.

Many well-known brands have outsourced their development to get their business off the ground, and many of them continue to delegate at least part of their work. For example, Skype’s success would be impossible without three Estonian developers who created the company’s application back-end. Back in the day, one of the most popular corporate communication tools, Slack, outsourced the design of its web interface to British MetaLab, and as it turned out, it was a very good idea.

If we think about the long-term perspective for businesses, scarcity of the resources means that you have to prioritize. This is particularly relevant to IT-related tasks. Another important point is that newborn companies often don’t have enough hands to solve their challenging tasks effectively. A startup may have a brilliant idea, and its CEO may be very ambitious, but even the most talented specialist cannot build a company alone. The third problem follows from the fact that startup projects are often based on innovative business ideas. This often means a lack of know-how both in the development team and in the local market in general.

There are many other obstacles a startup may face both in the beginning and throughout their entire journey. They’re precisely the reason why startups should outsource. Let’s name the most challenging ones:

Starting fast

You may have the most innovative idea and be very passionate about bringing it to life. Yet, if you don’t get your product to market quickly, you’ve lost the game. If you deliver your product quickly, it gives you a big advantage over your competitors.

Scaling up

In the fast-changing competitive world, a business should always offer more today than it offered yesterday. This includes providing new services, serving more clients, or bringing fresh ideas to life.

Scaling your business, though, requires high-quality specialists capable of performing complicated tasks in a short period of time. In other words, you should scale your team first. Obviously, not all startups start to earn money at once, so they cannot handle the overheads of expanding their staff internally. Every new hire comes with onboarding time, purchase of office equipment, and requirements for renting additional space. Outsourcing eliminates all of these issues and allows businesses to expand their design, development, and QA staff.

Saving costs

Every penny counts, and this is especially relevant for a startup. Even if a startup is lucky enough to raise a big round of venture capital at the beginning of its journey, it should spend wisely. Sticking to reasonable budgets and reducing startup costs should always be one of the main priorities. At the same time, a startup can’t sacrifice the quality of its product as it can lose the game from the start. Therefore, the only viable option for startups is to develop a cost-effective approach in their work and pay only for what they really need.

Hiring top-notch specialists

No matter how passionate young entrepreneurs are and how much they want to do everything by themselves — their time and skill set is limited. Startup founders may be businessmen in nature, but this doesn’t make them programmers, designers, or project managers. They can’t write any code or create a polished visual concept. Sometimes a startup is entering a very niche industry or building a very complex product, and they need specific rare expertise necessary to perform the challenging tasks. Sometimes this expertise isn’t available locally. No matter what the cause, the truth is that a lack of hands can become a real problem for a young company.

Being flexible

What defines a real startup is their flexibility, agility, and the ability to scale an innovative business model confidently. Being a startup means maintaining a healthy workflow in stressful phases — adjusting the workforce according to the immediate business needs but still remaining focused on the main strategy and core tasks. This can happen before the product launch, when new ideas must be implemented quickly or when a startup is expanding its business and enhancing its growth. In other words, startups should embrace flexibility, so they can pivot when necessary, without things falling apart.

No matter how awful those challenges may look like, startups have good chances to tackle them successfully. The answer to many problems of a young entrepreneur is called outsourcing. Even if you are building your first startup, you don’t necessarily have to make every beginner’s mistake by yourself. But with no experience, how to avoid these mistakes in your own game? The simple answer is to find a technical partner.