Deployment View

Development

The backend is hosted on the Google App Engine.

The Flutter Web apps for the various work stations are hosted on GitHub pages. It might be better not to bundle those components during development, so that the online apps can be updated independently. This simplifies the continuous deployment process and shortes the build times and thus the feedback cycle.

Staging

The final QA for production releases could be done with temporay VMs hosted on the Digital Ocean platform, using the same app structure like the production system.

Production

The production system is started via Docker Compose with the following services:

  • MySQL database
  • backend
  • for each Flutter Web app there is a separate HTTP service which hosts it

Maybe the web apps could also be copied into the src/main/resources/static directory of the backend when it is compiled for production use. This would also make it possible to host the whole system on the Google App Engine which would have the advantage that it can be accessed by the doctors also from home. And if the system doesn't deal with medical records, the data should not be too sensitive to be hosted in a public cloud.

Even if we use the cloud for the production system, it might be best to use Digital Ocean or plain VMs on the Google Cloud to keep the door open for self-hosted servers. Using the Google App Engine would simplify the operations, though. It takes care e.g. care of log storage and alerts.

References

arc42