Cloud Computing :

·

10 min read

Cloud Computing :

Cloud Native:

  • Definition: Cloud-native architecture and technologies are an approach to designing, constructing, and operating workloads that are built in the cloud and take full advantage of the cloud computing model.

The pillars of cloud native:

The speed and agility of cloud native derive from many factors. Foremost is cloud infrastructure. But there’s more: Five other foundational pillars shown below also provide the bedrock for cloud-native systems.

  • Micro-Services
  • Modern Design
  • Containers
  • Backing Services
  • Automation

Now let's understand each on them in detail:

Cloud:

  • Cloud-native system take full advantage of the cloud service model. Designed to thrive in a dynamic, virtualized cloud environment, these systems make extensive use of Platform as a Service (PaaS) compute infrastructure and managed services. They treat the underlying infrastructure as disposable - provisioned in minutes and resized, scaled, or destroyed on demand – via automation.

Modern design: The Twelve-Factor Application:

12-factor-app-process-1024x791.webp A widely accepted methodology for constructing cloud-based applications is the Twelve-Factor Application. It describes a set of principles and practices that developers follow to construct applications optimized for modern cloud environments.

  • Code Base: It a series of tasks that are interrelated.

  • Dependencies: Each micro-service isolates and packages its own dependencies, embracing changes without impacting the entire system.

  • Configurations: It process of tracking changes to micro-services and their consuming applications over time.

  • Backing Services:These are any processes that the App contacts over the network during its operation. via an addressable URL. Doing so decouples the resource from the application, enabling it to be interchangeable.

  • Build, Release, Run: A code base is transformed into a (non-development) deploy through three stages: The build stage is a transform which converts a code repository into an executable bundle known as a build. Using a version of the code at a commit specified by the deployment process, the build stage fetches vendors dependencies and compiles binaries and assets. The release stage takes the build produced by the build stage and combines it with the deploy’s current config. The resulting release contains both the build and the config and is ready for immediate execution in the execution environment. The run stage (also known as “runtime”) runs the app in the execution environment, by launching some set of the app’s processes against a selected release.

  • Processes: Execute the app as one or more stateless processes.

  • Port Binding: A port binding is the configuration information that determines where and how a message will be sent or received.

  • Concurrency: specifies the maximum number of requests that can be processed simultaneously by a given container instance.

  • Disposability: The discipline of ensuring that your application can tolerate the loss of processes without interruption.

  • Dev/Prod Parity: Keep development, staging, and production as similar as possible.

  • Logging: a fully managed service that allows you to store, search, analyze, monitor, and alert on logging data and events from Google Cloud and Amazon Web Services.

  • Admin Processes: Run administrative/management tasks, such as data cleanup or computing. The process formation is the array of processes that are used to do the app’s regular business (such as handling web requests) as it runs. Separately, developers will often wish to do one-off administrative or maintenance tasks for the app, such as: Running database migrations. Running a console (also known as a REPL shell) to run arbitrary code

Micro-services: a popular architectural style for constructing modern applications. Micro-services provide agility.

Cloud Computing Model:

  • Based on Infrastructure Ownership

Three-Basic-Cloud-Computing-Infrastructure-Models-i2k2-Blog.jpg Public Cloud: Cloud most often means a public cloud. Most well-known and popular cloud services are public clouds. A public cloud basically offers services to any number of customers (the general public) and is accessible from the public information (subject to security restrictions - see cloud security. Public clouds are offered by a plethora of cloud service provides.

Private Cloud: A private cloud uses the infrastructure to provide services only to a single customer. A private cloud is close related to virtualization, but provides many of the benefits of public clouds, such as elastic scaling and resource sharing. Many large enterprises run sizable private clouds using various technologies.

Virtual Private Cloud: A virtual private cloud (VPC) is an isolated set of servers within a public cloud. Typically, the VPC would have a VPN connection to the enterprise network, and might logically seem to be part of the internal enterprise network.

Community Cloud: A community cloud extends the private cloud to incorporate multiple customers within a defined community (e.g., within an industry, such as health care or a cloud service serving diverse agencies and departments of the same government). This model is often preferred when the data is regulated and sensitive, and a degree of trust is required between the customers to accept the risks of cloud computing.

Hybrid Cloud: A hybrid cloud has characteristics of both a public cloud and a private cloud. For example, some resources could be offered to the public, while some are reserved for internal use.

  • Based on Service Model, Architecture, and Flexibility:

spi-1-449x300.png IaaS (Infrastructure-as-a-Service): In IaaS, the cloud service provides computing infrastructure, such as virtual machines, storage, containers, and serverless computing.

PaaS (Platform-as-a-Service): In PaaS, the cloud service provides a computing platform, typically tied to a particular set of programming languages, tools, and applications. Generic operating system access (command line) is typically not permitted and the same virtual machines may be shared by multiple users. Typical examples include Google App Engine and many web hosting services.

SaaS (Software-as-a-Service): In SaaS, an application running in the cloud is offered as a service. The cloud service provider handles all infrastructure, upgrades, and provides the application software. The customer basically just gets to use the software. The software may run in a customer-specific virtual machine, or multiple software instances may run in the same virtual machine, or the same application server instance could even serve multiple customers. Software offered as a service is generally offered on a subscription basis - for example, the customer pays a monthly fee per user to use the software. However, not all software offered on a subscription basis is SaaS - these days it is increasingly common to offer even software run on customer premises as a typically annual subscription, as it provides lower initial costs for customers and higher and smoother run-rate income for vendors and their investors.

Cloud vs. Virtualization

  • Virtualization is a technology allows many logical computers (virtual machines) to run on the same physical hardware. It is the underlying technology in cloud services. However, cloud computing has certain characteristics, such as elastic scalability, that are not always offered by virtualization alone.

Characteristics of cloud computing services

Available On-Demand: Cloud services are expected to be available on-demand. A customer can typically create a new instance or a new customer relationship online at any time using a credit card, without having to wait for delivery and without having to go through a complicated purchasing process.

Accessible from a Network: Cloud services are generally accessible fromt the public Internet. Private cloud services would generally be accessible from anywhere within the enterprise. Additional security restrictions, such as a virtual firewall, may be configured to limit what services may be accessed from where. A VPN (Virtual Private Network) connection may also be offered between on-premise resources and an isolated set of servers in a public cloud ("virtual private cloud").

Resource Pooling ("Overbooking"): Much of the cost advantage of cloud services comes from resource pooling and overbooking. Statistically, most applications and services don't operate at their peak capacity most of the time, and different applications peak at different times. Cloud services utilize this to overbook capacity so that most of the time all services get enough capacity. Some services may be configured to have guaranteed service, while others may run opportunistically only when there is spare capacity. In most cases, customers are willing to accept that services may run somewhat slower at times.

Elastic Scalability: A key characteristic and benefit of cloud computing is elastic scalability. For example, if a web application gets an unusual amount of traffic, more servers may be created to provide that service. Thus, the application can gracefully and automatically scale with demand. Scalability also allows cost-effectively running workloads that need a very high number of servers but only for short periods of time or occasionally. Many customers have such workloads, and especially if they can utilize the spare capacity, they can be run very cost-effectively.

Measured Service: Cloud services generally charge users per hour of resource usage, or based on the number of certain kinds of transactions that have occurred, amount of storage in use, and the amount of data transferred over a network. All usage is measured. The measurements are also used by the cloud service provider to determine how to best allocate its physical computing resources to all of its customers to best meet its SLA (Service Level Agreement) commitments and minimize the cost of providing the service (thus maximizing its margins and competitiveness).

Service Level Agreements: Many cloud services provide service level agreements that guarantee a certain level of availability, performance, or capacity. Lowest-cost service tiers usually come without any guarantees, while higher-paying tiers are specified to offer certain guarantees. Large enterprises are generally able to negotiate custom service guarantees.

Multitenancy: A key distinguishing characteristic of public cloud services is multitenancy. The infrastructure serves multiple customers, and in SaaS, even the same virtual machine may serve multiple customers. Sometimes compliance requirements mandate that a service must run on a dedicated infrastructure that is not shared. Such an arrangement eliminates certain security risks, such as escaping virtual machines and spreading an attack to other customers running on the same infrastructure. Many cloud services offer dedicated servers to counter this. Some service providers will even create a dedicated cloud infrastructure, complete with dedicated and isolated provisioning tools, for larger customers on demand.

Cloud computing Delivery model

There are three main cloud service delivery models: Infrastructure as a service (IaaS) Software as a service (SaaS) Platform as a service (PaaS)

Advantages of cloud computing:

Cost - The most important driver for cloud adoption is cost reduction. CIOs are under tremendous pressure to minimize costs. Some sources claim up to 12x cost savings by moving services to cloud. Reliability - Cloud services are designed with redundancy and fault tolerance and have lots of Internet bandwidth, making them fairly tolerant to e.g. Distributed Denial-of-Service Attacks.

Skills - Moving services to the cloud can simplify on-premises infrastructure and can eliminate many specialized system administrator roles, such as database administration. Fewer specialized skills are required in the IT department.

Scalability - The elasticity of the cloud can improve performance, especially at times of peak load (e.g. when a product launch causes greater demand than expected).

Outsourcing - Moving to cloud services is part of the bigger trend of IT outsourcing. IT is increasingly seen as a necessary part of running the business, not as a core competence that must be in-house.

Managed services - Increasingly, enterprises just want to buy a solution that is already fully deployed and integrated with other services they use. They are wary of engaging in complex integration projects and having permanent staff involved in maintaining applications and infrastructure.

Disadvantages of cloud computing

Security - The most cited barrier is security. There is concern over the security of the cloud service providers themselves (e.g. their insiders may be able to access customer resources), isolation of tenants, patching and cybersecurity practices of the service provider, and concern over the security and reliability of the connection to the cloud service.

Privacy - Cloud services may be subject to surveillance and corporate or state espionage. Many countries have laws forcing CSPs to hand over customer data to local intelligence agencies, which commonly share intelligence with allied countries. This violates privacy, but also makes access codes and critical data available to other countries for cyberwarfare and for boosting their own competitiveness.

Vendor lock - Many cloud services try to subtly make it very difficult to stop using their services. This takes many forms, such as data lock-in (not able to easily extract company's data from the service/application), software lock-in (the application or software is not available from anyone else and extensive retraining would be required), platform lock-in (the applications run on a platform that, in all its complexity, is expensive to maintain yourself or not available from multiple vendors), API lock-in (integrations, deployment mechanisms etc. use proprietary APIs). It is very common for companies to say they use open source, but in practice have many ways to lock customers in.

Provider viability - Cloud service provision benefits from economics of scale, and it is difficult for small players to find a competitive differentiator. It can be expected that many smaller players will disappear. Even for established players, their service offering may change, causing discontinuities outside the customer's control as services are phased out or modified.

Expertise - The availability of people with expertise in cloud services, software development for the cloud, and DevOps is still limited, though improving.