From the course: Cloud Complexity Management for Multicloud Deployments

Abstraction

From the course: Cloud Complexity Management for Multicloud Deployments

Start my 1-month free trial

Abstraction

- [Instructor] So let's enter the service domain around cloud complexity management and specifically talk about service abstractions. So, service abstractions are ultimately the ability to deal with things that contain behaviors. So services, in contrast to data actually do things. They do a credit check, they push something to a user interface, they accept data, those sorts of things are basically parts of services. So we have different varieties of services out there. We have traditional APIs, we have web services, we have micro services, they're anything that make things happen. So, while we have data that stores information, we have services that actually gather the information from human beings typically using mechanisms, or things in communicating are actually carrying something out. And they're really systemic to everything. They're part of applications, they're part of devices, they're part of everything that denotes behavior, so when you look at your mobile phone, when you look at your cloud service, they're all basically collections of services that are executed in a certain pattern, to form the application. The approach that we're leveraging is the ability to look at services as they are. Typically very complex things. We have services that were built 20 years ago, 40 years ago, 40 days ago, 10 days ago, all these things have to work together in harmony to, in essence, modify our applications, allow our applications to execute, really carry out the functions of a systems. They're very heterogeneous. Services can be held in traditional open source systems, such as Lotus, Apache, MySQL, Python, or ancient legacy systems built 30, 40 years ago. Or they can be held in more modern systems today that have been built very recently using devops methodologies, things like that. But understand that we have to access all these services in order to deal with complexity. So again, we deal with abstraction, and ultimately this is about abstracting services, about ability to, in essence, put composite layers on top of existing services, we're able to monitor and manage them as one single whole. If we were going to manage services as independent services, that's not going to be able to scale. We just don't have enough brain power and human power to keep track of all those services. We have to use abstraction and tooling to make that happen. So the notion, ultimately, is to look at service abstraction or service virtualization tools, to make this possible. And also another core foundation of cloud complexity management. So the challenge is service granularity here, basically coarse grained verus find grained services. Ultimately, we're looking at a spectrum in terms of fine grained services that do very discrete things. Such as turning a screen a different color, maybe five lines of code, or coarse grained services that do very complex things, such as a very complex credit check that could be a thousand lines of code. And we have to, in essence, make sure that we're dealing with the levels of granularity that are going to be able to be part of our abstraction and understanding how they exist in that continuum. So the challenges are how do we get information, and business logic into services? Ultimately, this is about understanding the levels of service decomposition from course grained to fine grained, and how we leverage services in a orchestration layer, when in a composite application or anything else that may invoke services. So what we need to do is invoke something called decomposition and typically that's going to be from the top to the bottom. And we're able to do this in essence to learn more about the services. So if we're going to take a service oriented approach to cloud complexity management, we're looking at any number of applications that are able to produce services or behavior. You're ability to, in essence, understand what they do from a macro point of view to a micro point of view is going to be a jumping off point for you dealing with services. So an example would be we'd have a service manager, say it could be an API governance layer, then we have service virtualization, or a composite application, or the ability to look at lots of services, as a single set of composite services, or macro services. Then ultimately we're looking at where the physical services reside. And they could be any number of types of systems, they may be a container based system, they may be a serverless based system, they may be fine grained, they may be coarse grained, they may be within an on premise system, or they could be within a public cloud. So what are the tools available to you? Well you have certain things out there like Apigee, 3scale, IBM API Management, and Akana. And again, dozens and dozens of tools exist that deal with service virtualization and service management and part of this journey in understanding what you need to do around cloud complexity management is picking the right tools to provide you with the right levels of abstraction. So keep in mind that ultimately cloud computing is really service oriented, and your ability to understand how to manage services and do so through abstraction and automation is key to solving the cloud complexity management problem. Again, deal with your approaches, not necessarily the enabling technology to make things happen. A lot of people have become enamored with the tools and ultimately you need to become enamored with how is the right way, the best practice, for abstracting services. And we have to consider this holistically. Everything's going to use services. You can have services within development, operations, human resource systems, ERP systems, any number of things, they're all going to be dependent on behavior, just as the data. And really, systems are a combination of behavior, that's coupled with data.

Contents