Programming Arduino through ethernet

I am in the process of developing Arduino solutions for customers that communicate with Arduino servers through an App. Nothing special about that. By keeping the intelligence as much as possible in the App (Android & IOS), updates can easily be done through the respective app stores.

However I would also like to be able to upload a new firmware the the Arduino. The app would communicate with the server enabling it to start some sort of ethernet bootloader and getting new firmware from. I have seen several solutions around from about 2-3 years ago. But I am not sure if it is operational enough to use? I was thinking of downloading the new firmware first onto an SD card (I use the Iboard from Iteadstudio) and then loading it into flash.

This way I can maintain my solutions across the globe without having clients do anything themselves.

Anyone have experience with this and is willing to share it?