Introduction: |
The biggest change in focus when talking about REST (instead of more traditional approaches to distributed systems design) is to focus on resources first, and functions second. Take an everyday scenario you are familiar with, put on REST goggles, and analyze where it is resource-oriented or not, what that means, and what could be changed to make it more RESTful. |
---|---|
Instructions: |
The easiest way to RESTify your thinking is to start by always thinking of paper forms. Assume that your interface to anything
and everything is paper forms, and you only interact with anybody else and with services by A world completely working like this probably would feel very kafkaesque, because actors in it could be very easily replaced, as long as they're sufficiently trained to do whatever form-based job they're trained to do. They wouldn't even be have to be trained for a specific scenario; if their only job was to accept a form, make sure that the ZIP code on it indeed conforms to an existing U.S. zip code, and then follow the instructions on the form where to file it next. This maybe undesirably almost-perfect reduction of actors to the roles they are playing is what makes this style of design so appealing for large-scale systems where the goal is to dynamically compose functionality from system components, and to make sure that replacing components can be done as easily as possible, without requiring any redesign in the overall architecture or the implementation of other components. In many real-world settings, components (i.e., people) do more than just slavishly following
Your task is to identify and describe a concrete scenario that involves multiple cooperating entities, and where it's likely or as least plausible that some of these actors will change over time. Analogous to the list above, identify at least 5 things in this scenario where you think that things actually work pretty well according to the principles of REST, and where actors could be easily switched out without affecting the overall design. Or choose 5 things where things do not work well (or simply break completely) because too many built-in assumptions. Or mix and match between those categories; but you have to come up with at least 5 things where you explain what works or doesn't work and why it works or doesn't work. Submit your assignment by 6pm on 2/28 to kimra@ischool.berkeley.edu. (And you might notice here that even a Klingon could use that link, if he would be able to figure out that this is where he is supposed to submit his answer…) |
Please send comments to dret@berkeley.edu
Last modification: Tuesday, 17-May-2011 03:00:18 CEST |