---
# System prepended metadata

title: 'Done: Application Development on GCP - 15 Feb 2021'

---

# Done: Application Development on GCP - 15 Feb 2021
Current Document Link: https://hackmd.io/bopwinMeQV-eZDaRhhqHhQ?edit or https://is.gd/sapeta
Please finish the survey: https://googlecloud.qwiklabs.com/classrooms/9073/course_surveys/cloud-training-l2io16cn5i


**Lab Details**
1. Go to googlecloud.qwiklabs.com & create account if you don't have one there
2. After signing in, on your home screen, under section of In Progress, you should see today's class, Developing Applications on GCP (Link: https://googlecloud.qwiklabs.com/classrooms/9073)
3. Those who can't see the classroom. Please put your email id's here

LABS: console.cloud.google.com
&  User name  & password is coming from qwiklabs.com


## Extra Resources & Summary
1. Technical Tuorials and Migration guide: https://cloud.google.com/docs/tutorials
2. Solutions by Industry Verticals: https://cloud.google.com/solutions
3. Cloud Landscape
    * https://landscape.cncf.io/
    * http://comparecloud.in/

#### Why do we need cloud ?
- Big Data needs Big Infrastructure
- Big Infrastructure needs a lot of Maintainance
- Cloud Simplieifes Maintainance
    - That's why Cloud Computing
- So most legacy softwares are being moved from On prem to on cloud. It's called as migration
- cloud allows to scale users
- provides high availabilty.
- Allows to scale resources.


#### Migration Details
1. **Migration**. We move the original codebase from on prem to on cloud
  * Google Cloud has partner ecosystem and parterns are heavily involved in migration.
  * Migration Jobs
	1. **Step 1:** Move application as is (Lift & Shift). We are simply running the same application but at different place. No code rewrite, just rehost
		1. Most demand for Cloud Enabled people
	2. **Step 2:** Improve the application to take advantage of Cloud Products. A tiny bit of code rewrite to optimize the code exeuction
	3. **Step 3:** (Cloud Native / Serverless) Rewrite everything for cloud Native. No maintainence  required. Complete code rewrite to effectively utilize cloud native product
	4. Can find many guide here: https://cloud.google.com/docs/tutorials/

## Application Development Modules

### Module 2: Google Cloud SDK & Client Libraries
- https://cloud.google.com/sdk
- https://cloud.google.com/apis/docs/cloud-client-libraries

### Module 3 & 4: Data Storage Options in Google Cloud
- https://cloud.google.com/products/storage
- https://cloud.google.com/products/databases
- https://grumpygrace.dev/img/storage-type.png

 TODO for Self

| Storage Product | Column 2 |
| -------- | -------- | -------- |
| DataStore     | NoSQL Database. Can scale to millions of write automatically.     |
| Cloud Storage     | Blob Storage, it's a file system. Autoscale for any volume. But it's still a file system     |


### PubSub for Communication
Products Use
1. Spanner
    2. SQL wouldn't have scaled for the demand and concurrancy
    3. Alternative is spanner
    4. Spanner is horizontally Scalable not vertically. https://quizlet.com/blog/quizlet-cloud-spanner
3. NLP API
4. Pub Sub

### Module 5 & 6: Google Cloud Storage


https://stackshare.io/tools/trending
https://db-engines.com/en/ranking

## All the Labs
1. Setting development environment
2. Storing Application Data in Cloud Datastore
    - Web Application using Spring Boot. And the question data gets stored in Datastore 
        - Running Env: Where is Application Running ? -> Cloud Shell VM
            - Why CloudShell VM?
                - What are the alternatives? 
            - Can it scale?
                - Scalable is a must, but auto scale is even better
            - Can it autoscale?
            - VM is scalable & user configured & provider managed
        - Question Data: Where is Application Storing Data ? -> Data Store 
            - Why DataStore?
                - What are the alternatives? SQL, Spanner, ....
            - Can is scale?
                - Scalable is a must, but auto scale is even better
            - Can it autoscale?
            - DataStore is Autoscale & Fully Managed (Provider configured & Provider Managed)
3. Storing Images & Video files in Cloud Storage
    - Application: Web Application using Spring Boot. And the question data gets stored in Datastore. Unstructured Data like Images & Videos get's stored into Cloud Storage
        - Image & Video Data: Cloud Storage (Distributed File System not a Database)
            - Is it scale of Autoscale? Ans: Autoscale
4. Adding Authentication to the Web Application via Firebase
    - Application
        - Web Application using Spring Boot. 
        - The question data gets stored in Datastore.
        - Unstructured Data like Images & Videos get's stored into Cloud Storage. 
5. Developing Backend Service for Application
    - Application
        - Web Application using Spring Boot. 
        - The question data gets stored in Datastore.
        - Unstructured Data like Images & Videos get's stored into Cloud Storage. 
        - Adding authentication of users via Firebase.
        - **Added** Pub/Sub for communication
        - **Added** Spanner for Data Storage of Quiz Results & Feedback
        - **Added** Design for Seperating Backend & Frontend
6. Creation of API for external Consumption
     - Application
        - Web Application using Spring Boot. 
        - The question data gets stored in Datastore.
        - Unstructured Data like Images & Videos get's stored into Cloud Storage. 
        - Adding authentication of users via Firebase.
        - Pub/Sub for communication
        - Spanner for Data Storage of Quiz Results & Feedback
        - Design for Seperating Backend & Frontend
        - **Added** API creation for external consumption
7. Running the Application on Kubernetes
    - Application
        - Web Application using Spring Boot. 
        - The question data gets stored in Datastore.
        - Unstructured Data like Images & Videos get's stored into Cloud Storage. 
        - Adding authentication of users via Firebase.
        - Pub/Sub for communication
        - Spanner for Data Storage of Quiz Results & Feedback
        - Design for Seperating Backend & Frontend
        - **Added**: Executing the same application on Kubernetes instead of CloudShell VM


https://cloud.google.com/appengine/docs/the-appengine-environments
    
## Questions
- [ ] Test questions




