5

I've spent the last few weeks really climbing all around the Google App Engine (GAE) and Google Compute Engine (GCE), so I feel that I have a decent understanding about the two related but different platforms. But I'm stuck and want to make sure I jump in the right direction to move forward.

I'm creating a small private business website with a limited number of customers. We are talking 20 concurrent users.

So this question may be more architectural than technical.

I wanted to try and use the MongoDB because of the flexibility of the schema, so here is where I'm stuck.

My initial attempt was to connect via the following:

Option 1:

  • GAE (Java) --> MongoDB Java Driver --> GCE (MongoDB)

  • This is a complete failure because the GAE sandbox will not allow this.

Option 2:

  • GAE (Java) --> RESTFul MongoDB Call --> GCE (MongoDB / Restful front end)

  • I have not fully explored this yet, but this appears promising, but I really don't want to use RESTful to connect to my DB

Which leaves me with where I'm heading.

Option 3:

  • GCE (Java/Tomcat) --> MongoDB driver --> GCE (MongoDB)

  • Ditch GAE and go full in GCE :|

I'd love some feedback. Here are the other stackoverflow answers that I referenced heavily when researching this issue:

My specific questions:

  • Since I don't have to scale, do I really need GAE? (just trying to be fast... and lazy :D)
  • What am I giving up by abandoning GAE? I was using it because it seemed easy and quick, (as long as you use mysql)

Needless to say, this is my first question ever on stackoverflow, which I read about every day, so be nice if this question seems out of line. I figured if I was struggling, probably many others were as well. :D


Answer Summary: 3 perfectly good answers were put forward:

  1. User Google Datastore (I had misunderstood what this was)
  2. User the new(ish) Java Managed VMs
  3. Just use GCE VM and do what I want.

I researched all of these, and decided that for me #1 was the best option for the moment because it was the path of least resistance, but I'm leaving the door wide open to shifting to #2 or #3 in the future if the need arises.

Thanks everybody. I'll mark the response about using GCE as the accepted answer because it does answer the question even though I went in a different direction.

Community
  • 1
  • 1
Cade Thacker
  • 105
  • 2
  • 9
  • why not just use the datastore? – Paul Collingwood Apr 11 '15 at 18:06
  • I was under the impression ( incorrectly ?) that the datastore only connected to Google's provided mysql database. Am I misunderstanding that pieces of this platform? (opening google....) – Cade Thacker Apr 11 '15 at 18:18
  • Datastore is Google's proprietary database that can be used out of the box in GAE, nothing to do with mySQL or mongoDB. – nickmilon Apr 11 '15 at 18:38
  • https://cloud.google.com/appengine/docs/python/ndb/ – Paul Collingwood Apr 11 '15 at 19:01
  • I think your option 1 should be possible with a [Java Managed VM](https://cloud.google.com/appengine/docs/java/managed-vms/) but you should also look into [Datastore](https://cloud.google.com/appengine/docs/java/datastore/) as it is schemaless. – tx802 Apr 11 '15 at 19:45
  • I believe that GAE has recently added support for socket comm (as well as HTTP), so I"m surprised to hear that MongoDB drivers/client library still doesn't work on GAE. Anyone know what the issue is? – Tom Apr 17 '15 at 18:26

1 Answers1

2

IMO you don't need GAE even if you have to scale

nickmilon
  • 1,332
  • 1
  • 10
  • 9
  • I will also add that Managed VMs will let you use the App Engine runtime on a GCE instance, if you want: https://cloud.google.com/appengine/docs/managed-vms/ – Adam Apr 11 '15 at 23:08
  • I'm leaning this weay, but I have a question, and probably a newbie question, but if I'm going to use a Compute VM as the webserver, do I just do the manual setup using sudo apt-get tomcat7 apache2 and wire together like good old times and open the 80/443 on the firewall? – Cade Thacker Apr 11 '15 at 23:23