In today’s episode of our Meet the Author podcast, Fritz Onion talks to Howard Dierking about his course REST Fundamentals. In the interview Howard explains how he went about getting a grip on what REST really is and what it isn’t and how this played into his course. He also describes how REST may affects the perceptions of infrastructure requirements for applications as well as a telling us a bit about what else he’s been working on lately.
Listen to the Audio (MP3)
[Fritz] Hi this is Fritz Onion. I’m speaking today with Howard Dierking about his new course REST Fundamentals. Howard is a program manager on the web platform and tools team at Microsoft, where his current focus is on all things web. Previously, Howard served as the editor in chief for MSDN magazine and also ran the developer certification program for Microsoft Learning. He spent the ten years prior to Microsoft as the developer and application architect with a focus on distributed systems. So welcome to the discussion Howard glad to have you.
[Howard] Hey thanks, it’s good to be here.
[Fritz] I should mention we’re sort of in a role reversal at this point as me being the editor in chief over at Pluralsight, I previously used to write for MSDN Magazine where you were the editor in chief so it’s an inteRESTing perspective shift we have here.
[Howard] Yeah it certainly made me realize that I had the easier job back in the magazine days.
[Fritz] That’s very true. So great so I want to talk about you new course that just came out REST Fundamentals and in this course you get into you start with a very basic fundamentals of what REST is and I think I was really happy to see this course come to take the shape that it took because I think it answers a lot of questions for people about what REST really is. I mean there’s been confusion in the past several years as people float this term around so in your course you get into the definition, you talk about some of the design ideas behind REST and how that would influence your architecture, you talk about constraints, services, clients, the architecture and REST and the cloud. So I thought I’d start by asking you that fundamental question what is REST and we can sort of move on from there.
[Howard] Right yeah and I sort of started the course as a part of some other work I was doing with the community about building just web APIs in general right and as I was a part of a lot of those discussions I saw that people would say oh I’m building a RESTful service, or I need to use a RESTful service, or you know a lot of those kind of lines of discussion and the more I looked into it, because I didn’t really know a ton about REST at the time and you know I’d see these discussions do one of two things they would just sort of say oh yeah well you know you just put this in your WSDL or you know something like that and it became very sort of implementation focused, or I would see these discussions really blow up into these huge sort of Twitter flame wars or you know blog wars and it really prompted me to say ok wait what is this thing that we’re actually talking about and so I read you know the canonical work on REST, right I read Fielding’s dissertation and I came away from that going I have no idea what that meant and so I read it again and then I read it again and I read it again and I kind of came to a really solid understanding of what REST wasn’t and so then of course I jumped into the discussion and probably too heavy on the dogma side as I think that’s probably the way that people generally evolve into really getting something and then I built a whole bunch of applications to really see what that meant and through the course of doing that I feel like I came to a pretty good place as far as you know what it is and what it is an architectural style that’s really defined by applying these constraints right client server and the cache and so on and so forth and what it isn’t was a lot of the where people usually stop when they’re talking about it right people approach REST and they say oh yeah I’ve got this RESTful service why well because I’ve got these hackable URLs, or you know human friendly URLs, or well because I’m using JSON, or you know they stop with some of these aspects of a RESTful system that are kind of right there on the surface that are visible but they miss kind of the bigger picture of why REST came about, what problems it was trying to solve and so that’s really the focus of this course at the beginning especially is that I wanted to really delve into not just you know what is REST, here is the dogma, you must follow this path, otherwise you will be castigated on the internet but I wanted to really dig into what were the problems that Fielding and the other sort of early architects of the web what were they trying to solve because really you know when you read the dissertation, especially after the chapter on REST, Fielding talks a lot about kind of the history of the web and how REST fits into that and Fielding really came up with REST as a way to sort of put a vocabulary if you will, or put a sort of larger architectural language on top of a lot of the things that they were coming up with in defining how the web should actually work and so I wanted to really capture that and hopefully give people a framework for determining whether or not that made sense in their own systems and then helping them to understand how to make the various elements of it fit within their systems.
[Fritz] Yeah and it really I like the introductory portion of the course where you state those very clear objectives and then you describe what you think REST is not first before you jump into you know what it should be, I think that approach worked really well. Just to follow-up on that I think there’s a perception in the community that REST is about sort of getting rid of infrastructure more than it is building infrastructure in that you know if you compare this with RPC based systems that a lot of us are familiar with or the SOAP protocol or there’s other communication mechanisms that we’ve used over the years, that REST seems to be you know we have an infrastructure in place that has all of these features that works really well why don’t we just use that? Is that sort of the right way to think about it at this point or I sort of want to get your perspective.
[Howard] Yeah you know I’m not sure that it gets rid of infrastructure so much as I feel like and by REST here I mean you know more generally just architecting for architecting an application to work with the web right or how the internet is meant to work, I don’t know that it gets rid of things so much as it more it federates things right? It enables you to tap into infrastructure that’s already there so I guess you could look at that and say it helps you get rid of some of the infrastructure that you might have to buy and put in your data centers and that kind of thing. The other thing that I think it ends up and I think this is a valid statement is that it gets rid of a lot of the tooling that developers tend to rely on when building say soap services right. It doesn’t really make a ton of sense, at least it hasn’t in my experience to the whole concept of a REST proxy for example, right I mean that just doesn’t, it there’s just not a it’s not a valid comparison to like a SOAP proxy so I think that’s kind of the other element that people tend to think of when we think about REST getting rid of stuff.
[Fritz] That makes sense. Well I wanted to wrap up with a discussion of your last module in the course which I think has some really interesting forward looking discussion on REST and the cloud do you want to give us a perceptive on what you thoughts were there and kind of what you’re working on these days.
[Howard] Yeah I mean the cloud right is it is a computing architecture on top of the internet, on top of the web, and so REST just makes sense right? As I was working on the course I was also doing a lot with you know two of my big passionaries are distributed architecture and more recently big data and so you know big data and big data processing is sort of by nature not something that you want to invest in building out a cluster of thousands of machines, I mean it’s a natural fit for the cloud because you spin up machines as you need them, you do your processing, you spin them down, you only pay for what you use, it’s just like I said it’s a natural fit and so I started thinking more about ok so how if REST is really an architecture that’s based around this kind of you know there is latency but it’s all federated it can be transient, like how can I do these two things together so that’s where a lot of my experimentation is today. It’s one of those areas where I’m really excited because you know I’m not at a place where I could teach a course on big data processing in the cloud using REST, I’m still experimenting and tinkering and it’s a really exciting place for me to be right now but yeah that’s the big idea and what I tried to show in that last module, which I think is a sort of honest look of where I am is I didn’t try to answer all the questions, right I wasn’t trying to sort of say do this, do this, do this but what I really wanted to do was kind of paint a vision for how REST in conjunction with cloud computing and cloud providers and just the whole huge landscape of what cloud computing can offer in terms of processing, I wanted to kind of paint a vision of how REST fits very naturally into that and can enable us to take advantage of a lot of these capabilities but in a way that doesn’t end up costing just an insane amount of money right because the great thing about the cloud is you only pay for what you use but if you don’t architect so that you’re not using or I should say you’re not wasting a lot of those resources, it can end up feeling a lot more like a cost rather than a benefit and so that was really the focus of what I was hoping to achieve in that last module was to kind of paint this last vision of how REST can really make cloud computing achieve a lot of that sort of advertised benefits that cloud providers keep trying to sell us.
[Fritz] Great. Well thanks very much Howard. So this is Howard Dierking on his new course REST Fundamentals. Look forward to seeing everyone’s response to your course Howard. Thanks.
[Howard] Thank you.