2019-12-01 23-50-25
Pedro Neto
Champion
Long-Lived Apps for Personal Environments
48
Views
3
Comments
New
Community

Problem: Personal Environments cost OutSystems unnecessary AWS compute time, but deleting them frustrates developers who lose their apps unless they manually export them.

Idea: Make Personal Environments ephemeral but with automatic daily app snapshots, so they can be safely deleted sooner without hurting the developer experience.

How it works

1. Daily App Snapshots

  • Automatically snapshot all apps/modules once per day.

  • Store snapshots in cheap object storage.

  • Only snapshot OML + metadata (default: no DB data).

  • Developer never loses their apps again.

2. Faster Environment Recycling 

  • Only do this if needed to offbalance the data usage in point 1 

  • Reduce always-on uptime from 7 days to 4 days.

  • After 4 days of inactivity:

    • Kill the AWS compute

    • Keep the daily snapshots

3. Auto-Restore on Spin-Up

When a user requests a new Personal Environment:

  • OutSystems spins up new infra

  • Automatically reinstalls the most recent snapshot

  • Developer resumes instantly with their apps already there

Benefits

For OutSystems

  • AWS savings (compute reduced from 7 to 4 days).

  • Storage cost minimal vs. compute cost.

  • Personal Environments become fully elastic.

For Developers

  • Apps are never lost.

  • Personal Environment deletion becomes painless.

  • Better trust, better onboarding, better learning experience.

This will certainly stimulate the use of the personal environments and reduce frustation when something is lost again for a developer and a cost reduction for OS +1

Hi Pedro,

I like your thinking about trying to improve things for both OutSystems and the community.

I think the Personal Environment deletion will still be a pain for most developers, also considering few people "read the manual", they won't understand that their apps won't be lost. Losing data all the time will also be painful - though the workaround would be to bootstrap data.

Additionally, if you develop Forge components and have a "Try Now" for the demo, your personal environment has to be up and running for the demo to work. There would need to be a solution for this issue.

So I think the idea needs more work, so I'm not voting for it at this stage. But please don't take this as a criticism, I love the way you are thinking!

Kind regards,

Stuart

2019-12-01 23-50-25
Pedro Neto
Champion

Hi Stuart and thank you for your feedback.

I agree that most people won't "read the manual" in a first instance, and they will be angry once the environment is deleted, however they would quickly understand that the apps would there again once they spin the environment up again. 
If outsystems could also save the data and run the needed bootsraps to populate the database on the environment creation this problem would be solved.

This won't solve the "Try now" problem, for that what I've thought in the past was: 

  • If user has any supported component, then mark that environment as long live, and never kill it.
  • Or have a shared environment where all the try nows would run.