Greetings everyone!

I would like some advice about the best architecture and approach to 
building an application on the Google Cloud Platform. This will be my first 
application on the Google Cloud and first "Cloud Native" application. I 
have a decade or two of development experience under my belt, but have not 
touched a line of code in ten years or so. This included C, Java, 
Perl,JavaScript, HTML, SQL. But I am unfamiliar with all the hip new 
frameworks and I obviously feel a bit rusty when it comes to programming 
now. I do still however work in IT so might still know a thing or two.

I have tried to read a fair bit about GPC but find there is not too much 
out there which shows how a whole solution would be put together - it is 
mainly individual bits.

A general description of the solution is as follows: The solution will 
allow a medical practitioner to survey a patient and generate and email a 
PDF report based on the answers.

Now for a more detailed description of the flow:

   - A patient is sent an email with a link to a web form The patient goes 
   to the web form and fills in some personal details e.g name, email address, 
   location and free text fields etc and submits this form
   - A medical practitioner can see the list of people who have submitted 
   forms for the particular patients location
   - The practitioner goes to a location and interviews the patient.
   - The practitioner answers a bunch of 15 predefined questions 
   (multi-choice) with the ability to add some extra text if needed.
   - They might interview 20 patients, one after another
   - Later that day, once the practitioner has returned to the office, they 
   then are able to generate a PDF report for each patient automatically, 
   which are based on the answers for each person and a whole bunch of 
   predefined text and images
   - They are able to review the PDF reports. Once they are happy, the 
   reports are emailed automatically to the patient with the PDF attached
   - Potentially as phase 2, the patient would login to the site and get to 
   see their report in a webpage rather than a PDF

*Medical Questions*

   - The medical questions asked should be configurable, so that the 
   administrator can alter the questions and also the text which would be 
   written on the report based on the answers. e.g. question is "What is your 
   favourite Colour?" Answers are: Blue, Green, Red. On the report, it would 
   say "Red is a great color as it is deep and strong"
   - The following month, a new question might be added - "What is your 
   favourite food?"

*PDF Report*

   - The Report should be a PDF document
   - It's look and feel should be very professional
   - It will need to have the appropriate branding /styles
   - The rough content would be:
   - A introduction page which includes the patient name and patient 
   details and some general text
   - A page with results in a traffic light style depiction -.e.g. if you 
   answered a question a particular way it might be Green with a description. 
   If it was a negative answer then it might be orange or red colour with a 
   different description.
   - Several more pages of explanatory text
   - The content will need to be modified by an end user as much as 
   possible so a slight wording change would not result in the developer 
   having to alter code

*Usage*

As my org is small, there will only be ~10-20 days a year when someone goes 
and does interviews. There might be months in a row when it is not used at 
all. There will be about 300 PDF reports made/year initially. So volumes 
for the initial solution are very small.

However, if people like it then we might offer it to other orgs to use so 
my preference is for the the solution to be multi-tenanted and able to be 
scaled up on demand. I know obviously then i will consume more resource and 
it will cost more and thats fine as it is for a good cause.

The idea is that this solution will reduce human effort from 1 hour down to 
5 mins for each report so the savings in labour will easily pay for google 
resources and they will be able to help more people. If any other 
organisation uses the solution they should not know about anyone else (i.e. 
complete segregation)

*Security*

   - The practitioners already have google accounts (G Suite) for would be 
   ideal to reuse those accounts as the authentication mechanism
   - Other organisations which use the solution may not have accounts - so 
   would be interested to know what can be done for them.
   - Should be protected with SSL/TLS - the whole lot

In my old world, I would have had a tomcat server with mysql and some 
spring or hibernate or something like that with some basic JavaScript on 
the front end. Being unaware of how to architect this for google cloud and 
the modern front end frameworks, my initial stab in the dark is:

*Platform Components:*

   - Google Forms to capture the personal details (would doing this and 
   then having my app have to read the data be easier than having to build the 
   forms on app engine myself?)
   - Google App engine - standard edition (seems to be good for 
   applications which could go down to zero instances often - which will be 
   mine)
   - Cloud SQL - mqsql 2nd generation (have never used nosql database 
   before - which would be better for this kind of app?) Can this go down to 
   zero instances when not in use?
   - Cloud Storage - to store the generated PDF's
   - StackDriver for logging
   - Cloud IAM to manage users and what they can do?
   - Not sure what I would need to get a domain name and SSL up and running?

*Language & frameworks*

   - 
   
   I am drawn to using Go, even though I have never used it. Simply because 
   it is newer and lots of people seem to like it and i would get to 
   experience something more modern. That being said, do you think one of the 
   other languages would be more suitable to build this app?
   - 
   
   Something like gopdf to generate PDF's
   - 
   
   I have seen a whole bunch of discussion around whether you need any web 
   framework when using Go?
   - 
   
   And for the front end something like React?
   
*Effort*

   - As all this is new to me, I am thinking 3 months in my spare time to 
   learn and complete this... thoughts?

Any thoughts as to if I am on the right path or not? Any suggestions as to 
where I should read more to understand about how to solution for GPC? What 
would you do differently? Where could I go to get some basic mentoring as I 
go through this development (paid/unpaid)?

I am hoping that any answer/discussion around this would also help other 
people understand about how to create an entire solution in GPC.

Thanks!

John

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/ebbfc376-5647-4dc1-8dd6-994ff3cf7fa6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to