In an exclusive interview with CIO, Andy Baer, CIO of Comcast, talks with Christopher Koch about maximizing the benefits of service-oriented architecture (SOA), including reusing assets and cutting time to market. His expertise stems from developing the internal IT strategy that aligns technology to meet overall business needs and objectives, including oversight of the company's customer care, billing and ordering systems; data centers; desktops; internal telephony; and other corporate systems. He also oversees the integration of the IT organizations in former Time Warner and Adelphia cable systems recently acquired by Comcast.Christopher Koch: What do you see as the primary business reason for doing an SOA? Andy Baer: What you're really getting out of SOA are a couple of really big business benefits. You're getting reuse of a lot of the assets which you're spending money to develop. So you're getting much more value out of the dollar that you're investing in technology because you're able to use things more easily. That's number one.Second, you're getting quicker time to market. Because you're able to assemble components more easily, you can extend those components more easily so that as the business changes, you're able to react more rapidly to those changes in the business.I can give you some specific examples here at Comcast. For example, we have two billing systems-60 percent of customers are billed on one and 40 percent are on the other-mostly as a result of our acquisition of AT&T Broadband. We had applications that needed access to the billing system; developers had to write the same APIs [Application Programming Interfaces] twice to access each of the billing systems.One of the first things we did was to create what we call a billing services mediation layer. Now the developers write the APIs once, to the service layer, rather than to each billing system. That saves money, but it also gives my staff the opportunity to add functionality into the Web services layer themselves without having to go to my billing vendors, which is a lot more cost-effective and a lot more timely.And, if at some point in time I need to change anything with my back-end billing systems, I can do it without having to change the other applications that link to it because they are connected to the service layer rather than directly to the billing systems.How do you distinguish between SOA and enterprise architecture? I don't believe that SOA is enterprise architecture. SOA is an enabling technology, but it's not enterprise architecture. You need to have a vision of your business and describe your business in an enterprise architecture, which can be implemented by a Web services SOA or not. I think SOA is an enabling technology for that enterprise architecture, but it isn't by itself enterprise architecture. Enterprise architecture is required regardless of whether you implement that by SOA or not.Can you describe your enterprise architecture at Comcast?I think of enterprise architecture as business architecture. So I don't think of technology tools; I think about billing, ordering, customer service, human resources and payroll. To me, those are the components, and understanding how I want to break down business functions into macro-level services and understanding the relationships between them is what creates my enterprise architecture. Some people think of enterprise architecture more along the lines of enterprise technical architecture, meaning what the standard middleware software package is going to be across the enterprise, for example. And yes, I have that, and yes, that also relates to SOA, but to me that's not as important as business architecture.EA is also a road map to make sure that every project we do is in the context of the architecture vision. Our enterprise architecture identifies all the various technology components that we need to run our business, but its purpose isn't just to paint a future vision--it also attempts to eliminate redundancy across projects. So if you take two projects and put them in the context of this enterprise architecture, you may see that they are related to the same component in your enterprise architecture. So you may want to combine the projects [or stop one of them].In companies like ours, you don't build 100 percent of what you're deploying; you're buying a lot of it. And, unlike developing the applications yourself, not every vendor is going to deliver the components you need to meet your enterprise architecture vision in the technology stack.Can you talk a bit more about your vision for SOA?I'll give you the big functional components. Billing is one. Provisioning [setting up cable TV in a new customer's home, for example] is another big area where we have already made quite a bit of progress. Many of our provisioning systems have been deployed in an SOA model of services, which helps us then build the composite end to end.[Cable] network management is another focus of SOA. We're building a Web services middle tier that is going to allow us to reuse a number of network management tools in different ways. One is to link to the tools inside a portal for our customer service agents to make it easier for our agents to troubleshoot cable problems with customers. We have also exposed the tools to handhelds that our techs are going to have out in the field. And ultimately, we'll expose those tools to our customers so they can check status anytime as well.By following this SOA model, we're building a middle tier for network management that will then be reused for multiple purposes across the company. In addition, we are moving towards a complete Web services model for all of order management--not just provisioning.So, piece by piece we're creating macro coarse-grained services that are implemented as a composite application made up of underlying services. Those services will be incorporated into other composite applications as part of our enterprise architecture.So you're building the base-level components at this point.It's the base business building blocks, correct. There are infrastructure components which underlie all these, some of which are already built or are in development. So in addition to the business components you've got technical infrastructure components, things like authentication and authorization and identity, but those are being created as part of all these other applications that we're building. We're building out the infrastructure layer to support those larger business components.Let's talk generally about SOA since you're saying you have a lot of experience with it. Let's talk about some of the myths and realities. When would you say that you just don't even want to bother thinking about this kind of thing?I would say that you really shouldn't be looking at revamping your architecture if you don't have a dynamic business with lots of change. Why spend the money to swap out any of your infrastructure if it's working for you? Not only is it a lot of energy to go through this exercise, it's also a relatively newer technology, so the skill sets are harder to come by and you're going to be competing for talent with organizations that are growing. The people who have these skills want to work in a growing environment because it's more fun. Companies that are static or in decline will have a harder time finding people.Some people are challenging the idea that reuse is going to be a big benefit of SOA. Some estimates I've heard say reuse is only about 10 percent to 25 percent. And others are saying you may not want to make reuse part of your strategic goals for SOA-at least at first-because you may find a better way to design a service the second time around. What are your thoughts?We're already seeing reuse here. The biggest challenge to reuse, in my experience, has been governance. The reason that it's a challenge is because by nature software engineers and architects have a "not-invented-here" syndrome. Every time there's a problem to solve, they believe that they have a better way of solving it. And that using someone else's code, or using someone else's service, is not going to be as good as if they reinvented it themselves because they have a unique way of dealing with the issues.So I think that a governance model is really important to fostering and encouraging reuse. Everyone I talk to about governance says, "Oh yeah, that's a really big problem in our organization." I would say we are working hard on it here, but I don't think that we've solved it either. We've already seen some benefits of having an architecture review board in place that reviews all our big projects and can suggest ways to reuse services.Maybe one of the differences here is that we're growing so rapidly and there's so much work to do that people aren't worrying about whether they'd like to reinvent things because they don't have the time. If they can find something to get the project done quicker, they're reusing it. For example, the billing services we've created have already been reused four times. That's partly because we set up an architecture review board that lets people know that there are services out there that can be reused.What would you say are the key aspects of the architecture review board? The architecture review board is responsible for helping, at least at the initial stages of a project, with the service architecture. Things like, "So what should the macro services be? And how do they relate to things that already exist?" The architecture review board also maintains the business enterprise architecture, which is never static. And they are available as internal consultants for projects to help make decisions that are architectural in nature.It's important to mention that the architecture review board is not just a technology organization; we've created it as a subcommittee to our product steering committee so it will be more business focused.Explain how that works. The product steering committee is comprised of all the product owners across the business and is responsible for approving all new business product-related projects. We attached the architecture review board as a subcommittee so that it would not become a technology group for technology's sake, but a technology group that's responsible for supporting business projects.It's one of the lessons I've learned having done SOA three or four times in different organizations. The last time I did an architecture review board we did it as a technology group and it didn't work nearly as well.Sounds great in theory. How does it work in practice? They may call the architecture review board when they are in the initial phases of thinking about a new product. Or they could already have the product in mind and want to know how to deliver it. And that's where the architecture review board will come in.Do you have an example yet of a product that's gone through this process? Recently, we were enhancing some of the features that we want to provide for our customers in video on demand. The project team designed an architecture that we brought to the architecture review board. The board took a look at it and found a way to cut several months off of the development schedule by reusing some of the capabilities that existed within the provisioning engine and within the new billing system we put together.Any other aspects of governance that you've developed that you think work well? I'm still learning how to do it, but I think there are several key pieces in governance. One is to have a registry or repository of services so that you can publish and keep documentation about the services that you're building. The architecture review board is another important piece.Another big piece is having an examples library of services that we think work particularly well. That's been almost more powerful than anything else here. People ask what a good service looks like, but the examples aren't just code, they are a library of every artifact throughout the whole lifecycle. So what does the design look like? What does a test plan look like?Another consideration is when you're introducing a lot of middleware technology to enable SOA, you don't want every part of the company going out and figuring out how to best implement those technologies independently. You want to coordinate the configuration of your middle tier centrally, not just to support the application, but to configure it for the best performance and operability.SOA veterans say it's difficult to determine the right level of granularity for a service-what should be included within it and what shouldn't. Can you offer examples of how you approach this issue? Sure, let's take billing as an example. We have a coarse-grained service called "charging," which includes everything from billing and taxing to bill presentment. Each one of those has its own composite service. What we're trying to do is make sure that people are consistent in how they implement services.A fine-grained service within "charging" might be "accounts hierarchy." I'm going to let an individual team manage that service rather than taking it to the architecture review board level.What's the ROI on all this? The big savings is time to market. For example, in the provisioning process, the ability for us to create a new product or a new flow in the provisioning engine is measured in days and weeks rather than in months, which is how long it takes in our non-SOA-compliant application.