-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Google App Engine Runtime Upgrade
- Priority: High
- Knowledge required: Back-end development/testing, information security, infrastructure configuration and management, Google Cloud Platform services
- Status: Completed
TEAMMATES is currently deployed in Google App Engine Standard Environment for Java 8, which is part of the first generation runtime provided by Google App Engine. This decision dated back to TEAMMATES' inception in 2010, although it started with Java 6 and upgraded to Java 8 at some point of time. The first generation runtime for Java 8 comes bundled with Jetty web framework and many APIs to perform different functions.
As time goes by, the first generation runtime is no longer desirable for more advanced developers because:
- The application can only be deployed in Google App Engine and nowhere else.
- Google has shifted their attention to developing standalone services in GCP.
- The bundled APIs that work differently in production server than they are in dev server make debugging hard/impossible.
- The application is not containerize-able, which is not favorable today where containerization is heavily adopted.
The second generation runtime removes all the bundled services, resulting in development of application that can be deployed anywhere and connecting to GCP services as necessary. This is exactly what we need in order to gain full control of the application logic back. This also provides an opportunity for us to scrutinize all the bundled services that we were previously using and to choose the replacements which may or may not be part of GCP's offering.
In order to transition to second generation runtime, we need to replace all services bundled by App Engine:
- Blobstore API -> Google Cloud Storage
- Datastore API -> Google Cloud Datastore (via Objectify v6)
- Logs API -> Google Cloud Logging
- Task Queue API -> Google Cloud Tasks
- Mail API -> deprecate (we already have Sendgrid configured)
- Search API -> suitable alternative such as ElasticSearch hosted in Google Compute Engine
- Users API -> suitable alternative such as OAuth 2.0
- Jetty web framework -> suitable alternative such as Spring Boot, Struts, Tomcat, or even Jetty itself (explicitly configured)
It will be a bonus if we can:
- Upgrade language to Java 11 and make use of new language features
- Dockerize the application
References:
Project Ideas
-
Google Cloud SQL Migration
VH
🔬 🏁 -
Automation Hero
VH
🔬 -
Performance Hero
H
R
🔬 -
Testing Hero
H
R
-
Usability Hero
H
R
-
LMS Integration
M
🔬 -
Questions Plus
M
R
-
Reports Plus
M
R
-
Data Protection
M
🔬 -
Email Plus
L
R