Overview of GAEL Server
Google App Engine (standard version) excels in seamless scalability, automatic load balancing, and high availability, freeing developers from infrastructure concerns. Supporting multiple programming languages such as Python, Java, Node.js, and Go, it offers programming flexibility. The platform boasts robust security features, including built-in security scanning and encryption, while integrating smoothly with other Google Cloud services. Its serverless architecture ensures cost-effective usage, paying only for resources consumed, making it an efficient choice for application hosting and deployment.
The free quota includes 1G of free cloud storage and about 50K reads and 20K writes per day.
The design of the GAEL package would exploits the design of the Google App engine platform, in particular, the free daily quotas. Even when it exceeds the quota, it minimizes how much of the
beyond quota resources are consumed.
The main design points of the GAEL server are:
- It is designed for record counts of 50K records or less (what will fit in a desktop or mobile devices memory)
- A low-frequency update requirement (it uses timestamps to detect update collisions) (10 per minute average)
- A small number of concurrent users that update the DB (100)
- These design points may not be limitations based on the particular use case.
- A Pod definition language is used to define schemas for the data stored on the Google Datastore facility.
- The Pod definition language as the single source of truth for the whole infrastructure including supporting multiple languages.
- The JWire serialization technique provided that encodes data in an efficient, human-readable compressed format that is language agnostic and efficient to store and transmit.
- The use of the UpdateTS marker on each entity that allows for efficient cache updates as well as stale update detection.
- The double login employed by some applications (such as donation recording) that require 2 persons to be present.
- The external access token that can be shared and incorporates knowledge about what application and credentials to use.
- Use of the local server (which has no quota) to process data and then using the bulk transmission to update the production server on the cloud with perhaps summarized data.
- The implementation of the hot loader that coordinates with the Svelte Rollup.js nodeJS application to provide hot loader capabilities to the GAEL application.
- The Icon strategy and generator for multiple servers, multiple applications to each have a visibly unique icon on the browser tab bar.
- The use of the Gael project ID to select and load the application context, both in production and on the local server.
- The use of a DB entity prefix that improves debugging because the log files identify what Entity is being referenced.