Hi @piske-alex,
Welcome to the community
You would only use App.sol if you were creating Ethereum Packages but the plan is to remove this contract. (See OpenZeppelin/openzeppelin-sdk#1488)
If you are creating upgradeable contracts via Truffle I would recommend looking at OpenZeppelin Truffle Upgrades.
If you are creating upgradeable contracts from a factory in Solidity then you can use ProxyFactory. Though this is Solidity 0.5. There is an initial migration in the solc-0.6
branch. It hasn’t been tested though.
Proxy contracts are in the process of being moved from OpenZeppelin SDK to OpenZeppelin Contracts, though I don’t have a timescale of when this will be completed: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2335