I have a video on the topic coming shortly. Boils down to GAE is pretty much the only PAAS, and IAAS still requires an I Manager. So you save a head count out the get go.
Plus GAE is the most elastic of the Rapidly Elastic, so when CrunchMashSlashScobleForbesModo writes about you all on the same day you won’t be down. And when you have crickets… You aren’t going broke.
From: google-a...@googlegroups.com [mailto:google-a...@googlegroups.com] On Behalf Of Levi Campbell
Sent: Friday, August 03, 2012 2:38 AM
To: google-a...@googlegroups.com
Subject: [google-appengine] What are the pros and cons of using Google App engine for my startup?
I'm building a startup, and I'm considering GAE as the platform, however I've been having a hard time finding information on why a startup might consider GAE instead of the many cloud providers out there. Let me explain what I'm working on.
I'm a big fan of David Allen's Getting Things Done: The Art of Stress-Free Productivity, and after trying several tools and online services that (claim to) implement the GTD methodology, I couldn't find anything that I loved, so I decided to build my own and make it available as a SaaS offering. This app will allow users to pull in their info_crap from email, facebook, twitter (and yes, I do have plans to add support for more social networks.), and RSS feeds and organize it by relationship to the sender (i.e. family, work colleague, vendor, and the like), project (i.e. planning a family vacation.), and context (Either the when or where something should happen.).\
Would GAE be a good fit for the application I'm developing? Why?
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To view this discussion on the web visit https://groups.google.com/d/msg/google-appengine/-/mncmD6uYBooJ.
To post to this group, send email to google-a...@googlegroups.com.
To unsubscribe from this group, send email to google-appengi...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To post to this group, send email to google-a...@googlegroups.com.
To unsubscribe from this group, send email to google-appengi...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
If you have lockin you are doing it wrong.
Wrap your Google Specific API calls so that they function like the Heavy versions you can’t/shouldn’t use.
You likely don’t need “ALL” of JDO JPA’s functionality.
I have nothing against JDO/JPA if you don’t need the whole thing strip out what you don’t need. That is hard with the frame work…
But… If you have a
deletePersistent
equivalent in your code, name it that.
If you have a JDO/JPA function that is (Object,thing=array,target=None) for its use, and you have a very similar function in your make your code take the same arguments with the same name.
This is just good practice for making sure your code is readable.
Let’s say you want to do a store…
public void apply(){ Product newProduct = new Product(); newProduct.setName(pname); newProduct.setPrice(Double.parseDouble(pprice)); newProduct.setStock(Integer.parseInt(pstock)); PersistenceManager manager = factory.getPersistenceManager(); Transaction tx = null; tx = manager.currentTransaction(); tx.begin(); manager.makePersistent(newProduct); tx.commit(); manager.close();}
You can easily make your own class that includes makePersistent and Commit
makePersistent
entity.setProperty(newProduct);
commit
DatastoreService datastore = DatastoreServiceFactory
.getDatastoreService();
datastore.put(entity);
Bonus we could add to commit code so that it does a Datastore Put, AND writes the data to memcache
Even if you don’t replace the most complicated functions/classes you reduce your lockin.
Conversely, when you are doing rapid development and proof of concept coding
You can start with classes that are your own that wrap the JDO/JPA, and once you have the app working you can start stripping JDO out of those functions.
However, IMHO, the idea of implementing a decent SOA with different "subprojects" running on different instance environments is one of my own personal gripes. I can't quite agree that the use of "versions" is an adequate solution to the problem. If only Google allowed the Datastore to be shared across different applications then we'd be cooking with gas (I'd say the same for blob store, but cloud storage looks like its stealing it's crown there anyway).
There's an issue raised for it which could benefit from a couple more stars if you agree :-)
There is plenty to complain about, but GAE is still a good choice.
The upsides:
* It really is "fire and forget"; all you do is deploy code. There's
no provisioning, capacity planning, etc. Just pay the bill.
* "Ops" is something people at Google do. You don't.
* Great big box of useful tools; memcache, task queues, blobstore,
image manipulation, etc.
* The High-Replication Datastore is a modern marvel.
There are definitely some downsides to GAE:
* It's expensive to operate. An "instance" is significantly more
expensive and capable of doing significantly less work than what other
platforms offer. Your bill starts at $100/mo just to use SSL (and
with all that private data you certainly are, right?). In the early
days you're going to spend more than you would elsewhere... and if you
have a lot of traffic, you're going to spend a *lot* more. This is of
course balanced against not paying for dbas and sysadmins.
* The concern about lock-in is totally warranted. If you build a
complex app on GAE, it's pretty much a total rewrite to go elsewhere.
The flip side is that you're "locked in" because there are all these
nice high-level services with great APIs that you would otherwise have
to invent and manage yourself.
* Historically, reliability has been spotty. It pains me to say this
but things break a lot and you will likely see downtime a lot more
than if you maintained more of the infrastructure yourself. GAE is a
complicated system that is being upgraded on a schedule that is opaque
to you, plus you're running on shared infrastructure with thousands of
neighbors who might not be very nice. And often there's not much you
can do but scream on this mailing list. On the plus side, when
something breaks, someone at Google fixes it - not you.
* The datastore, while amazing for most web apps, is very challenging
for some classes of problems. Two that come to mind are:
* Heavily transactional systems. XG transactions help but you
still have to go through major contortions to build banking-type
applications. RDBMSes are clear winners here.
* Rapidly mutating datasets. It can be very tricky to work around
the one-transaction-per-second-per-entity-group throughput limit,
which gets even slower in XG transactions. There are usually
solutions (eg sharding, queueing) but they are all huge PITAs that
complicate your business logic. GAE doesn't offer any kind of service
that fills the niche that Redis fills.
There are more Pros and Cons, was my list,
Yes Brandon, I do it all wrong, TIA.
Regards,
André
I'm building a startup, and I'm considering GAE as the platform, however I've been having a hard time finding information on why a startup might consider GAE instead of the many cloud providers out there. Let me explain what I'm working on.
I'm a big fan of David Allen's Getting Things Done: The Art of Stress-Free Productivity, and after trying several tools and online services that (claim to) implement the GTD methodology, I couldn't find anything that I loved, so I decided to build my own and make it available as a SaaS offering. This app will allow users to pull in their info_crap from email, facebook, twitter (and yes, I do have plans to add support for more social networks.), and RSS feeds and organize it by relationship to the sender (i.e. family, work colleague, vendor, and the like), project (i.e. planning a family vacation.), and context (Either the when or where something should happen.).\
Pros:
- being able to use Task queues (+ deferred API) and Cron jobs in form of async HTTP requests is just awesome.
- I haven't seen anything like Guido's NDB for what concerns async and "parallel" execution, plus its caching, autobatching even on url fetches
- LOTs of useful services, which you use via simple APIs
- you totally focus on your app code and not hardware/systems admin. What others call AE limitations actually often helps you deliver a better experience to your users. Not always but again, in our experience, most of the cases. I actually want to thank AE team for imposing some limits (though the real reasons of limitations are totally different)
- when something goes wrong you just wait for SRE team to fix it
- nice support for (unit) testing out of the box. Both Go and Python. Actually Java too.
- Backends are actually of a great value when you need to "talk to" third parties via some API (i.e. not user-facing requests)
Cons:
- some of the services are still a little buggy and their bugfixing is not that fast in some cases (e.g. Channels API 400 errors)
- Users API is awesome but unfortunately works with either Google Accounts or OpenID. Either way, I'd love to see it supporting OAuth 2.0 and/or "abstract" third parties
- I'd love to see a better monitoring system, though I do understand this is a complex system to say the least. plus, I think someone mentioned.
- Examples are too simple, e.g. Hello World. So, you'll need to actually figure it out yourself. This is not the case with Go land - their examples are closer to real world.
Overall we're more than happy with AE. It saved us tons of money so far.
-- alex
PS can't wait for Endpoints API and Compute Engine GA. Unfortunately I didn't get into trusted testers (was hoping for Endpoints API)