Oracle describes the Easy Connect string as
username@[//]host[:port][/service_name][:server][/instance_name]
(from http://www.oracle.com/technology/products/oraclenet/files/OracleNetServices_NetEasyConnect.pdf)
However, some of our service folks frequently have the issue that this format is not working on a customer site and for ease, we resort to TNSNAMES.ORA and an alias, which makes the Oracle Instant Client a little less "instant".
But, as matters are, the connection string is centrally managed and so this alias needs to be the same on all machines in the system that connect to the database, which is a maintenance hassle.
The failures are caused by our cluelessness regarding all bits and pieces of the Oracle Naming system, the meaning of "SID", "service name", "host names", "global services names", naming methods, database local and global naming settings, SQLNET and TNS listener configurations.
Since I was unable to dig up a single, consistent and comprehensive reference on the topic, I thought I'd pass that question to the community.