(my DARK and shameful PAST) * 4 years of: ** IBM WebSphere ** ESB ** SOAP/WSDL ** Enterprisey * REST vs SOAP vs HTTP vs JMS vs WMQ vs PUB/SUB vs EDA vs HA vs D/R
CLIENTS PROXIES SERVERS LOAD BALANCERS * will all understand and act accordingly * in addition cool modern software does HTTP/REST out-of-the-box (CouchDB, Riak)
DNS * This is part of your URL * Think about partitioning (subdomains) * Think about future transition, separation, isolation * Does Wildcard DNS make sense to you?
CONTRACTS * What do we promise our clients? * Read these: - http://martinfowler.com/bliki/TolerantReader.html - http://martinfowler.com/articles/consumerDrivenContracts.html
SCHEMAS * Good for automated testing * If you give them away, assume people will generate proxies (and depend on serialized form) * Consider not providing any (or model them loose, xs:any etc - I’m not sure it’s a good idea)
GUARANTEES * Fields annotated with “#userid” will have the following form * Attributes named “email” will conform standard X * This document contains one, and only one field annotated “#id”, which is the unique id for Y