5 ms·
I tried to use App Engine flex for my application, but it seems to only support the simplest of apps. `gcloud app deploy` would always time out after about 10 m
by ad_hominem 9y ago
I tried to use App Engine flex for my application, but it seems to only support the simplest of apps. `gcloud app deploy` would always time out after about 10 mins with DEADLINE_EXCEEDED due to the Docker build taking too long. It was not well documented, but I figured out I could work around that by defining a custom cloudbuild.yaml with my own "timeout" parameter and submit remote builds using that (`gcloud container builds submit --config cloudbuild.yaml .`), then deploy that specific image (`gcloud app deploy --image`).
Then I found out that I couldn't run my own sidecar container (nginx reverse proxy), and also that Cloud CDN doesn't support App Engine Flex yet. Those were dealbreakers, so I switched to GKE. So far things are working well except a Kubernetes issue not terminating Job/CronJob sidecars correctly which gets tangled up with Google forcing you to run a "magic" proxy sidecar container to access your Cloud SQL instance(s).
- grogenaut 9y agowhat are you doing that takes over 10 minutes that can't be broken up into a series of retryable (and likely parallelizable) steps that a worksflow or queue system wouldn't work, be more resilient, scalable?
- ad_hominem 9y ago`docker build` is not parallelizable by its very nature of each layer depending on the previous layer
- grogenaut 9y agoso you're running a build server?
- ad_hominem 9y agoNo. App Engine Flex uses containers internally (the "flex" meaning supporting any type of app rather than the traditional built-in App Engine environments of Ruby, Python, etc.). The appeal of App Engine is simply being able to type `gcloud app deploy`, which tars up your local source code, builds a Docker image from it, then does a rolling deploy of the new image to replace your old app containers - all from that one command, no complicated build system needed on your part (i.e. Google Cloud does it all for you). My point was the moment you stray from the App Engine happy path (`gcloud app deploy` fails for obtuse reasons), you're out in the weeds. That plus the fact that App Engine has some weird missing integrations (e.g. Cloud CDN) often makes it easier to just jump to GKE in my opinion.
- grogenaut 9y agoOkay, I think I totally missed the point you were complaining about. In my day to day I see a lot of people doing large tasks in things like AWS lambda (5 minute timeout) that really should be decomposed into workflows, decoupled with SQS, done with a batch processor or the like to make them more resilient, debuggable, and parallelizable. Sounds like you're doing something totally different and the heroku-ness is failing you.
- ad_hominem 9y agoNo worries. If we were talking about Lambda I could air grievances there too - unpredictable cold start latency, quarterly major outages, random periods of increased latency w/ no visibility as to why, etc. ;) (unless things've changed a lot in the last 6 months)