Google App Engine - automatic-scaling with always on instance? : <p>One of the most irritating things about using GAE for a brand new app is having to deal with instances being fired back up if no one has hit your servers in 15 minutes. Since the app is new, or just has few users, there will be periods of great latency for some users who have no clue that instances are being "spun up"</p>

<p>As far as I see it you have these options based on the <a href="https://cloud.google.com/appengine/docs/java/config/appref#scaling_elements">docs</a>:</p>

<p><strong>Use <code>manual-scaling</code> and set the number of instances to <code>1</code>.</strong></p>

<p>When you use <code>manual-scaling</code>, whatever number of instances you set it to is what you will have - no more, no less. This is clearly inefficient as you may be paying for unused instances and instances are not automatically added/removed as traffic increases/decreases</p>

<p><strong>Use <code>basic-scaling</code> and set <code>idle-timeout</code> to something like 24hrs or 48hrs.</strong></p>

<p>This would keep your instance running as long as someone queries your API at least once within that time period.</p>

<p><strong>Use <code>automatic-scaling</code> with <code>min-idle-instances</code> and warm-up requests enabled.</strong></p>

<p>This does not work as intended. According to these <a href="https://cloud.google.com/appengine/docs/java/warmup-requests/">docs</a>:</p>

<blockquote>
  <p>if your app is serving no traffic, the first request to the app will
  always be a loading request, not a warmup request.</p>
</blockquote>

<p>This does not solve our problem because if zero instances are running, then there is nothing to warm-up in the first place. Thus you still get latency on the first request.</p>

<hr>

<p><strong>The desired effect I would like to have is</strong> to always have an instance running and then scale up from there if traffic is increased (and of course scale down but never go below one instance). It would be like automatic-scaling but with 1 instance always running.</p>

<p>Is this possible in GAE? Or am I missing something?</p>

<p>For now, my temporary solution is to set my app to <code>manual-scaling</code> with 1 instance so at least my app is useable to new users.</p>
