Module 4 - Modernize Infrastructure and Applications with GC
Important cloud migration terms
i) Workload
In cloud computing, a workload is a specific application, service, or capability that can be run in the cloud or on-premises. Workloads include containers, databases, and virtual machines.
ii) Retired
Sometimes workloads get retired. Retiring a workload means removing it from a platform. A workload might be retired because it’s unnecessary, not cost-effective, secure, or compatible with a specific platform.
iii) Retained
workloads are often retained. Retaining a workload means that it’s intentionally kept. When a workload is retained, it’s typically kept on-premises or in a hybrid cloud environment. This means that the workload will continue to be managed by the business and will not be subject to the same level of cloud provider control.
iv) Rehosted
Many workloads are rehosted. In cloud computing, "rehost" refers to the migration of a workload to the cloud without changing anything in the workload's code or architecture. This is often done as a first step in cloud migration, because it’s the simplest and quickest way to run a workload in the cloud. This process is often referred to as lift and shift.
Drawbacks - It does not use all the benefits of cloud computing. Managing workloads that were rehosted without making any changes can be difficult. Scaling workloads that were rehosted without making any changes can also be difficult.
v) Replatform
In cloud computing, "replatform" refers to the process of migrating a workload to the cloud while making some changes to the workload's code or architecture. This process is often called move and improve.
Benefits - Benefit from the cloud's scalability, reliability, and cost-effectiveness. Improve the performance of their workloads. And reduce the cost of their workloads.
Drawbacks - It can be a complex and time-consuming process. Making the necessary changes to the workload's code or architecture can be difficult. And testing the changes to the workload's code or architecture can also be difficult.
vi) Refactored
Sometimes workloads are refactored, which refers to the process of changing the code of a workload. For example, an organization might refactor a workload to use either a cloud-based microservices architecture or a cloud-based serverless architecture.
Benefits - More efficient, scalable, or secure. A valuable investment for organizations that want to use all cloud capabilities.
Drawbacks - Refactoring a workload can be a complex and time-consuming process.
vii) Reimagined
In cloud computing, "reimagine" refers to the process of rethinking how an organization uses technology to achieve its business goals. This can involve reconsidering the organization's current cloud strategy, and its use of other technologies, such as artificial intelligence and machine learning.
Reimagining cloud computing can help organizations to improve their efficiency, reduce costs, and increase agility. It can also help organizations better meet the needs of their customers and partners.The benefits of running compute workloads in the cloud
compute refers to a machine's ability to process information. Associated tasks include storing, retrieving, comparing, and analyzing the information.
Instead of relying on local servers and storage devices, cloud computing uses a network of remote servers to provide on-demand access to various computing resources, including applications, storage, and processing power.
i) Total Cost of Ownership (TCO)
Cloud providers offer a pay-as-you-go model, which means that organizations only pay for the resources used. They also offer discounts for long-term commitments, which can further reduce TCO for businesses that are planning to use cloud services for a long period.
ii) Scalability
If a business experiences a sudden spike in demand, it can easily scale up its cloud resources to meet the demand. Conversely, if they experience reduced demand, infrastructure can quickly scale down its cloud resources to save money.
iii) Reliability
Cloud providers offer a high degree of reliability and uptime, which gives businesses confidence that their data and applications will be available when they need them. Google Cloud, for example, has multiple data centers located in different parts of the world. This helps to ensure that if one data center goes down, the others can continue to operate.
iv) Security
In addition to physical data center security, cloud security features include data encryption, identity and access management, network security, virtual private clouds, and monitoring services that can detect and respond to security threats in real time.
v) Flexibility
Organizations can choose the cloud services that best meet their needs at any point in time, and then change or adapt those services when necessary.
vi) Abstraction
Cloud providers remove the need for customers to understand the finer details of the infrastructure implementation by providing management of the hardware, software, and certain aspects of security and networking.Virtual machines
i) Virtual Machine
Virtualization is a form of resource optimization that lets multiple systems run on the same hardware.
These systems are called virtual machines, or VMs. This means that they share the same pool of processing, storage, and networking resources. VMs enable organizations to run multiple applications at the same time on a server in a way that is efficient and manageable.
Virtualization relieves the pressure to bind specific computing hardware resources to specific applications.
ii) Compute Engine
Compute Engine is Google Cloud’s infrastructure as a service (IaaS) product that lets users create and run virtual machines on Google infrastructure.
There are no upfront investments, and thousands of virtual CPUs can run on a system that’s designed to be fast and to offer consistent performance.
Each virtual machine contains the power and functionality of a full-fledged operating system. This means a virtual machine can be configured much like a physical server: by specifying the amount of CPU power and memory needed, the amount and type of storage needed, and the operating system.
Compute Engine lets users choose the machine properties of their instances, like the number of virtual CPUs, the operating system, and the amount of memory, by using a set of predefined machine types or by creating custom machine types.
iii) Virtual machine instances
A virtual machine instance can be created through the Google Cloud console, which is a web-based tool to manage Google Cloud projects and resources and the Google Cloud CLI (command-line interface) by using infrastructure automation tools such as Terraform or the Compute Engine API.
An API, or Application Programming Interface, is a set of instructions that allows different software programs to communicate with each other.
iv) Sustained-use discounts
When you use virtual machines, Compute Engine bills by the second with a one-minute minimum, and sustained-use discounts start to apply automatically to virtual machines the longer they run. So, for each VM that runs for more than 25% of a month, Compute Engine automatically applies a discount for every incremental hour of use.
v) Committed-use discounts
Compute Engine also offers committed-use discounts. This means that when committing to use resources for either a 1-year or 3-year period, discounts are offered over the on-demand prices.
vi) Preemptible and Spot VMs
Let’s say that a workload doesn’t require a human to sit and wait for it to finish, such as a batch job analyzing a large dataset. Costs can be reduced, in some cases by up to 90%, by choosing Preemptible or Spot VMs to run the job.
Preemptible and Spot VMs always ensure that a job can be stopped and restarted without impact.
Spot VMs differ from Preemptible VMs by offering more features. For example, preemptible VMs can only run for up to 24 hours at a time, but Spot VMs don’t have a maximum runtime. However, the pricing is currently the same for both.Containers
i) Infrastructure as a service, or IaaS, lets users share compute resources with other developers by using virtual machines to virtualize the hardware.
This lets each developer deploy their own operating system, access the hardware, and build their applications in a self-contained environment with access to the necessary system resources.
Containers follow the same principle as virtual machines. They provide isolated environments to run software services and optimize resources from one piece of hardware. However, they're even more efficient.
Developers can easily update a particular part of an application without affecting the rest of it. Containers can run virtually anywhere, which makes development and deployment easy.
ii) The key difference between virtual machines and containers is that virtual machines virtualize an entire machine–down to the hardware layers–whereas containers only virtualize software layers above the operating system level.
Containers start faster and use a fraction of the memory compared to booting an entire operating system.
A container is packaged with your application and all of its dependencies so it has everything it needs to run. Containers can be independently developed, tested, and deployed and are well suited for a microservices-based architecture.Container management
i) Containers improve agility, enhance security, optimize resources, and simplify managing applications in the cloud. And many organizations have a mix of virtual machines and containers.
For example, an organization can have millions and millions of containers. This requires keeping them secure, and ensuring that they operate efficiently can require significant oversight and management.
ii) Kubernates
Kubernetes, originally developed by Google, is an open source platform for managing containerized workloads and services.
It makes it easy to orchestrate many containers on many hosts, scale them, and easily deploy rollouts and rollbacks. This improves application reliability, and reduces the time and resources needed to spend on management and operations.
iii) Google Kubernetes Engine (GKE)
Google Kubernetes Engine (GKE) is a Google-hosted managed Kubernetes service in the cloud. The GKE environment consists of multiple machines, specifically Compute Engine instances, grouped to form a cluster. Whereas Kubernetes has a control plane to manage all the clusters, GKE is an automated version where you don’t even see a control plane, it’s all automatically deployed and scaled. GKE clusters can be customized, and they support different machine types, numbers of nodes, and network settings.
GKE makes it easy to deploy applications by providing an API and a web-based console. Applications can be deployed in minutes, and can be scaled up or down as needed.
iv) Cloud Run
Another popular option for running containerized applications on Google Cloud is Cloud Run. Cloud Run is a fully managed serverless platform to deploy and run containerized applications without needing to worry about the underlying infrastructure. After your application code is containerized and deployed to Cloud Run, Google Cloud takes care of scaling and managing the infrastructure automatically.
Cloud Run is ideal for running stateless applications that need to scale up and down quickly in response to traffic. This makes Cloud Run most suitable for simple and lightweight applications, such as web applications.
v) Google Kubernetes vs. Cloud Run
GKE is ideal when lots of control is required over a Kubernetes environment and there are complex applications to run.
Alternatively, Cloud Run is ideal for when a simple, fully managed serverless platform that can scale up and down quickly is required.Serverless Computing
Another option for modernizing cloud applications is serverless computing. Serverless computing doesn't mean there's no server, it means that resources, like compute power, are automatically provisioned in the background as needed. The advantage here is that organizations won’t pay for compute power unless they're running a query or application.
serverless means that businesses provide the code for whatever function they want, and the public cloud provider does everything else.
Imagine you provide software to businesses that helps employees manage their corporate expenses, and you want to add a feature that lets users upload an image with their expense receipt. In this case, the ability to upload an image is called a function. You, as the software development company, write the code for that function directly into your public cloud platform. From there, the public cloud provider manages everything else.
i) serverless computing products
A) Cloud Run
It is a fully managed environment for running containerized applications. Cloud Run dynamically scales the number of container instances up or down based on the volume of incoming requests. This means it can handle multiple concurrent events without you needing to manually provision resources.
B) Cloud Functions
It is a platform for hosting simple, single-purpose functions that are attached to events emitted from your cloud infrastructure and services. For example, sending a notification to a mobile device when a new order is placed on a website.
C) App Engine
It is a service to build and deploy web applications.
ii) Serverless computing benefits
Reduced operational costs
Scalability
Faster time-to-market
Reduced development costs
Improved resilience
Pay-per-use pricing modelCloud Application Development
i) Cloud Application Development
Application is a computer program or software that helps users do something.
On-premises application development often slows organizations down. Deploying an application on-premises can be time consuming and can also require specialized IT teams.
With cloud technology, businesses can modernize, develop, and manage applications in new ways, which makes them more agile and responsive to user needs.
With modern cloud application development, software development is flexible, scalable, and uses the latest cloud computing technologies to build and deploy applications.
In the past, the traditional software development approach–often referred to as monolithic applications, required all the components of an application to be developed and deployed as a single, tightly coupled unit, typically using a single programming language.
ii) Benefits of modern cloud application development
A) Architecture
Modern cloud applications are typically built as a collection of microservices. Microservices are independently deployable, scalable, and maintainable components that can be used to build a wide range of applications.
B) Deployment
modern applications are typically deployed to the cloud and can use managed or partially managed services. Managed services take care of the day-to-day management of cloud-based infrastructure, such as patching, upgrades, and monitoring.
C) Cost
modern cloud applications use a pay-as-you-go pricing model, which can make them extremely cost-effective when configured efficiently.
D) Scalability
Modern cloud-based applications can easily be scaled up or down to meet user demands.
E) monitoring and management tools
Cloud service providers typically offer robust monitoring and management tools that allow developers to quickly identify and respond to issues.Rehosting legacy applications in the cloud
Sometimes specialized legacy applications aren’t compatible with cloud-native applications. In these situations, a business might take a rehost migration path, commonly referred to as lift and shift, where an application is moved from an on-premises environment to a cloud environment without making any changes to the application itself.
i) Benefits of rehosting applications
Cost savings, Scalability, Reliability, Security
ii) Drawbacks of rehosting applications
Complexity, Risk, Vendor lock-in
iii) Solutions for rehosting specialized legacy applications
Google Cloud offers several solutions for rehosting specialized legacy applications.
Google Cloud VMware Engine - Helps migrate existing VMware workloads to the cloud without having to rearchitect the applications or retool operations.
Bare Metal Solution - Is a fully managed cloud infrastructure solution that lets organizations run their Oracle workloads on dedicated, bare metal servers in the cloud.Application programming interfaces (APIs)
i) Application programming interfaces
Implementing a software service can be complex and changeable. And if each software service that an organization uses has to be coded for each implementation, the result can be fragile and error-prone.
An API is a set of instructions that lets different software programs communicate with each other.
an API takes requests from one software program (the customer), communicates with another program (the kitchen), and then returns a response (the food) back to the requesting program (the customer).
APIs can be used in many different applications, from social media platforms to mobile apps and web services. They let developers access functionality and data from other programs without having to write all the code themselves, saving time and effort.
ii) Google APIs
Google itself provides many APIs that let developers access its products and services.
e.g. APIs that use the power of Google to search across a website or collection of websites.
APIs that let developers access Google Maps data, such as maps, directions, and traffic information.
And APIs that let developers translate text from one language to another.
Using APIs can create new business opportunities for organizations and improve online experiences for users.
Companies can access an organization’s data or services through an API.Apigee API Management
When an organization has implemented APIs, it’s important to maintain and manage them effectively. This can be done by using a platform such as Apigee API Management, Google Cloud's API management service to operate APIs with enhanced scale, security, and automation.
It helps organizations secure their APIs.
It tracks and analyzes API usage.
It helps with developing and deploying APIs.
It offers API versioning, API documentation, and even API throttling.Identify the Google Cloud product
i) Cloud Run
Google's serverless platform that allows you to run containers without having to manage any infrastructure.
ii) Compute Engine
Google's virtual machine service that allows you to create and manage virtual machines in the cloud.
iii) Google Cloud VMware Engine
Helps migrate existing VMware workloads to the cloud without having to rearchitect the applications or retool operations.
iv) Apigee API Management
Google's API management platform that allows you to secure, manage, and publish APIs.
v) GKE
Google's managed Kubernetes service that allows you to deploy and manage containerized applications in the cloud.
vi) App Engine
Google's fully managed platform for developing and hosting web applications.