How to understand abci?

why command

tendermint node --proxy_app=kvstore

can start kvstore app? I only see the code in abci->example->kvstore
further more,I want to run my own app to replace kvstore,how to do it exactly?

There a couple ways to do this, first you would have to start with what language you are writing your app in?

IF you are using go, then you can do the same thing that the cosmos-sdk is doing and have it be in process, you can find the code here: https://github.com/cosmos/cosmos-sdk/blob/master/server/start.go#L130

thanks´╝îI am just confused that how tendermint can run with a proxy app,
I think it is cool if I can run my own app with tendermint.
I know a way that tendermint was build in own app,go-built-in
cosmos is next stage I want to figure out
yes I am using go .