1. Apps on GCP
Hi, in this video we will discuss what GCP has to offer in terms of app hosting, but first, what is an app really?
2. What's an app?
"App" is a term that has become part of normal language. At its core, an app, short for application, is a self-contained software program designed to perform specific tasks. These tasks can range from something as simple as a calculator function to complex operations like managing a business's entire sales process.
3. A streaming app
Let's consider a famous streaming app, Spotify. Spotify sells access to its music streaming app as a service. Users subscribe to Spotify to stream music, podcasts, and videos, demonstrating how an app can encapsulate a comprehensive service offering.
4. Spotify's needs
The motivation for a business like Spotify to modernize its app stems from various factors. Spotify needs to store and manage large volumes of data generated by users. It needs to deliver a robust service where interruptions could mean losing millions in revenue. Finally, competition in the digital space is fierce; companies must continuously analyze data, extract insights, and innovate rapidly. Spotify uses GCP services to meet these needs: Cloud Storage handles the user data. Google Kubernetes Engine runs containerized workloads and microservices for a highly available and robust service. And BigQuery handles analytics on Spotify’s vast data.
5. Cloud-native apps
Spotify is in fact a cloud-native application. These are applications that are specifically designed and built to run in the cloud environment. They leverage cloud computing's full potential. They can be quickly deployed and updated, allowing for rapid iteration and responsiveness to user needs. They are also inherently scalable, meaning they can handle increases in user load without a drop in performance. Additionally, they are designed to be resilient, with the ability to recover quickly from failures, ensuring high availability and reliability.
6. Migrating apps to the cloud
But some applications need to be “migrated” to the cloud which requires considerable logistics and planning. For this cloud-based modernization of applications, a company can utilize various change patterns. A change pattern provides a structured approach to manage the complexities and risks associated with changing software systems. Selecting an appropriate change pattern for application modernization requires a balanced assessment of several factors. These include the complexity of existing legacy systems and the availability of technical resources and expertise. Additionally, the company's overarching business goals and the timeline for implementation play crucial roles.
7. Strangler fig pattern
Let's discuss a common change pattern. Named after a tree, the Strangler Fig pattern is about gradually replacing specific parts of an existing monolithic system with new implementations.
8. Strangler fig pattern
Imagine we have a multi-functional legacy application hosted on-premises. To migrate this application to the cloud, the Strangler Fig pattern dictates that we first modernize a single function of this application. This function could be hosted on the cloud as a microservice. The corresponding functionality is removed from the legacy app. These steps are repeated until the entire app has been "re-architected" into microservices.
This type of change pattern is more fitting for scenarios demanding quick scalability, frequent updates, and consistent performance across various environments. However, it does require adequate technical know-how and risk management strategies.
9. Modernizing a banking app
To see this in action, imagine a bank that hosts its online banking app on its own servers. They could use the Strangler Fig pattern to incrementally replace their core banking software.
10. Modernizing a banking app
The bank's digital wallet is developed as a standalone component in a container. The component is deployed on Google Kubernetes Engine. Once functional, it replaces the digital wallet in the bank's legacy app.
The transactions for the digital wallet are captured using Cloud Spanner. This brings all the benefits of Cloud Spanner's scalability and ability to handle concurrent transactions. The corresponding app functionality is replaced.
11. Modernizing a banking app
A financial dashboard is built using BigQuery and Looker. It replaces the old one as it becomes functional.
Over time, these new services gradually replace the legacy app's functionalities, modernizing the bank's infrastructure with minimal disruption to ongoing operations.
12. Let's practice!
Let’s review in the exercises what we have learned about app modernization.