If you're worried about lock-in then design for portability. Portability means using open standards rather than open source. The neat thing is that with a well-designed site or service you can switch vendors easily. Cloud is a commodity - who cares who the provider is?