API Best Practices Blog
Using your existing systems to create new value with APIs »
Companies need to wring value out of their investments; find new ways to serve customers or create new value with their current systems, products, supply chains and partnerships.
I keep going back to water analogies. My house has a plumbing infrastructure that was paid for a long time ago. I recently found new value in that infrastructure, an automatic sprinkler system. Again the system reminds me of an API. Through this one common interface I can connect many endpoints (sprinkler heads) and my yard has never looked better. I have some endpoints that cover the lawn, some that concentrate on shrubs, others take care of the plant beds. The point is that I tapped in to my existing water pipes and found new value in a 35 year old system.
Can you do the same with your enterprise systems?
Let's take a common strategy like a mobile device strategy. First we have to understand what information customers need when using a mobile device like a smartphone. Certainly location and product come to mind. Maybe information about their account or orders. These little gems of information can be exposed through the API interface and carried to many different endpoints; today a smartphone, tomorrow a tablet PC or connected car. Let's call these 'functional APIs" since they carry a function to the user through a mobile device.
The next step to realizing a functional API is to map the data elements and functionality of the new API to their location in the existing systems. These data elements may map to databases, ERP systems, other internal services, etc. In fact, a single API may map to one or more internal systems. Any holes that are discovered will have to be filled.
For example, if you are designing an API and define features or data that aren't available through existing systems, you will have to provide that new system or new data set. But, in the interest of embracing the legacy systems, you should be able to reuse the majority of what you have by extending it outward through the new abstract API.
Leveraging what you have through an API can reduce your development cost, give you speed to market and also give you more flexibility in the future to integrate with more devices and partners. Leveraging my existing residential water system yielded a "yard of the month" award, perhaps this strategy can beautify your business as well.
Next we'll talk about the details of integrating with existing systems. And ots on this in our recent whitepaper "APIs: A Profit Interface - using APIs to grow your business.
Business logic vs. Business policy in cloud services and APIs »
As our customers move from websites to cloud APIs - we're seeing them separating business logic from business policy.
When you think about business logic, you probably imagine an application server or stored procedures, or custom code that accesses stored data and exposes it in a useful and manageable way – such as “show me all of a given customer’s purchases in this timeframe”.
These pieces of code reflect the understanding of the fundamentals of the business - like customers, orders, tickets, requests – and how they interact. In any business you build skill over time in understanding your domain and then build on top of that understanding to take the business further. Business logic is generally stable, consistent across requests, and subject to careful modification. After all, you wouldn’t want to put partly tested logic about bank balance transfers into production.
When you think about business policy, what comes to mind?
Maybe a stack of papers documenting HR or accounting guidelines, or maybe the elements of Sarbanes-Oxley requirements. Policy is not about how you compute a specific result – like the customer’s purchase history – but about other factors like who can access it, how frequently, from what locations, how it’s rendered, how long the result is considered valid, and other “meta-logic” issues. In any business you make changes to your policies frequently, as a way to meet the changing face of the market environment. The nature of business policy is therefore to be dynamic, varied according to the request context, and subject to frequent experimentation. For example, product managers need to continually test the value of different offers to given segments without having to redevelop the product.
When policies like security (“who can access this and what credentials do they have to show?”) and service level (“how many requests can be made in a given time interval?”) are collapsed into code responsible for business logic, the result is loss of agility, high cost to adopt new policy implementations (e.g. for identity and access schemes or to keep pace with increased hardware capacity), and confusion of concerns (rather than separation of concerns).
In the current era of cloud APIs, where these interfaces are being built as a direct link to what started as the backend for the website, many developers are realizing that what was really policy was built into their business logic layer. They’re also seeing that adding new clients – going from enabling partners to enabling rich clients to enabling mobile device (such as iPhone or Android) applications – require many adjustments to how the request and response of an API are rendered, but should require no changes to the stable core of business logic.
Supporting an API with a set of policies that activate based on the user (such as preventing or enabling access to different parts of the API – for example, only the development & testing methods but not production methods, or query methods only, or limiting requests to a certain transaction volume or financial value) and type of client (such as providing pagination and format translation for a mobile device) means that the risk of delivering the API is reduced, and the risk of negative impact to existing users of the API (typically the original website) are reduced. Also, the computational load for the policy processing can be moved to a low-cost, scale-out tier and away from the high-value application servers that host the business logic.
So what this seems to indicate is a movement towards a separation of concerns between logic and policy. Responsibility for business logic processing lies in a stable and slowly changing layer, and policy is processed in a tier that allows for agile modification and enables the total computational result to meet the shifting needs of the business.
More specific examples will follow in the next blog.
Is enterprise cloud adoption going through a lull ? »
I recently broke my collarbone and couldn't type. So spent a lot of time catching up with some smart folks like Christopher Hoff. Interesting that many of us thought it seems like we are going through a lull in enterprise buying of cloud technologies.
I do see what they are saying - it seems like many of the CIO's who were gung ho to do summer pilot projects are slowing down...why?
I do not think this is a lull - instead the splashing water (survivcal mentality) is starting to go away.. The economy is getting better (or this is anticipated - almost the same thing). Now the pressure's on to act quickly on trying out new things either to increase revenue or save $$'s.
Executives are getting back into a regular budget cycle, and this is planning time for most companies as they get back to thinking how to show good results and pitch budget needs for next year.
We at Sonoa are convinced that promise of cloud is strong as ever and our customers pilots are going into production w/ awesome results. The wave will continue to build into next year as more success stories are discussed - get ready!



