You'll need a standard database to get started with (e.g. PostgresSQL/MySQL).
This is needed to track open/close orders as well as the private keys associated with each user account (private keys are randomly generated).
Then to verify the balance of those user accounts, you can either use a full node or communicate with an API (e.g. blockchain.info)
Specific coin's wallet is one and its private key is owned by exchange, and then for user, just give address. Isn't it? So private key for each user will not be given?
And what is good way between full node or API? And is this server should be ubuntu?
And API means this?
https://blockchain.info/api/blockchain_wallet_api