/ssung-delivery-backend

2023 Google Solution Challenge - SSUNG DELIVERY Server

Primary LanguagePython

SSUNG-DELIVERY-BACKEND

image Whole Project Introduction

🛠️ Technology & Architecture

Screenshot 2023-04-10 at 14 07 38

Our team chose FastAPI as the backend framework for our project due to its ease of use in building APIs and its support for asynchronous processing, allowing for efficient backend system development. Additionally, FastAPI is written in Python, which provides advantages in code reproducibility and development speed.

We also utilized Docker containers for easy environment management and Cloud Run for quick deployment. For our relational database needs, we chose to use Google Cloud SQL, which allowed us to leverage its features such as automated backups and scalability. Finally, we used various GCP services such as Cloud Build and Artifact Registry for streamlined container image management.

Tech Spec Description
Cloud Run
  • Fast deployment
  • Easy environment management through Docker
  • Built-in CI/CD features
  • Serverless architecture to reduce server costs
  • Use Artifact Registry for Docker image storage and versioning
Cloud SQL
  • Delivery data has a predefined schema.
  • Best option for managing data in a structured manner in the GCP environment.
FastAPI
  • Easiest framework for building APIs
  • Provides efficient backend system construction with asynchronous processing logic
  • Utilizes Python, enabling code reproducibility and fast development speed

🔑 Key Implementations

Word Identifer

Word identifiers are a combination of words used to identify information instead of serial numbers. They are easier to remember and understand, and more secure than traditional identifiers.

They can be useful in situations where serial numbers may not be appropriate and offer a more user-friendly option. Additionally, word identifiers can be made even more secure by using random combinations of words. They provide an alternative to traditional identifiers and can be particularly useful in situations that handle sensitive information.

Work Flow

image

Flow

  • Create
    1. The user registers the shipping information.
    2. The server randomly extracts 3 words from the word DB.
    3. Combine the 3 extracted words into one string.
    4. Encodes the combined string into Base64.
    5. Run a duplicate check to see if the encoded string already exists in the DB.
    6. If not duplicated, store the encoded string in the DB with the shipping information.
    7. Repeat steps 2 through 5 if duplicated.
  • Read
    1. The user enters a word identifier.
    2. The encoder inside the service encodes the user-entered word identifier into Base64.
    3. Get the order information by sending a query to the DB with the encoded value.
    4. Show the imported order information to the user.

📌 Going Forward

We will introduce golang and gRPC additionally.

  • golang - Enable efficient and reliable programming language
  • gRPC - Enables rapid data transfer and scalable service development