Developers, end users, investors, analysts and the competition were all eager to learn what Apple had in mind to maintain its leadership and market share at the recent Worldwide Developers' Conference (WWDC) in San Francisco. No new mind-blowing product was announced, and Apple’s stock price actually fell. But there was a common theme that recurred throughout many sessions: user experience.
Apple is continually aligning all products and apps so a user with multiple Apple products can have a seamless experience while switching from one device or app to another without losing the user’s context of what they are doing. Instead of focusing on the product features or product specs, the company focuses on its customers’ experiences. Apple has a knack for this kind of thinking. While its competitors are touting the large number of megapixels for their cameras and the number of cores in its newest smartphone model, Apple is comfortably showing beautiful, inspirational pictures taken by the iPhone without even mentioning any of the phone’s technical details.
We all know that we can no longer live our day without a smartphone. Plenty of tasks that used to take a lot of time — because the information was not accessible from our fingertips — are now accelerated to the point of instantaneous gratification. For example, in order to find a good place to eat in a new town before owning a smartphone, I used to try to think of people in my network who had previously visited and asked them for a recommendation. If I could not think of anyone, I would ask the hotel receptionist once I got to the hotel. That meant I had to go to the hotel first even though I was extremely hungry. And I had to pull out the Google Map that I had printed way before I had left for the airport and boarded the plane to find my way to the hotel. Today, I can just pull out my iPhone, turn on my Yelp app and once I find the place I want to go, I can then use my Waze app to direct me to the restaurant. And even better, Waze can recommend taking a detour route because the most direct route has a massive traffic jam due to a major accident. Then, I can use my OpenTable app to make a reservation at the restaurant so I can ensure my table and, at the same time, collect the open table rewards points.
Now, Apple thinks that our lives can be even more efficient. Instead of using so many different apps to accomplish the series of tasks to get me to a nice restaurant in a new town that I have never visited before, the company envisions the day that I use Apple services to accomplish the same goal without having to open multiple apps. This vision requires a new product or service design paradigm. Any company that wants to offer a capability to be included in the Apple service to offer the personalised user experience must think OpsDev instead of DevOps. Let me explain.
Let’s assume we are building the following service for an appliance company that makes smart refrigerators. Here is a sample outline of a user’s experience:
Your car recognises you as you climb inside. The smart refrigerator at home has notified your smartphone to stop and pick up some groceries. It gives you three options. The first supermarket requires no detour, but it does not have your favourite flavour of ice cream in stock. The second supermarket has a bit of a detour, adding 10 minutes driving time, but it has all of your favourite brands for the items in your shopping list. And lastly, the third supermarket will add 15 minutes driving time, but has all your favourite items in stock and additionally offers a discount coupon that will save you $12 off your grocery bill. Once you pick the supermarket, the car displays the most optimised driving route on its multimedia infotainment system.
In the not-so-distant future, as companies attempt to capitalise on offering an integrated personalised user experience, several data sources and services must be integrated together: the grocery list from your smart fridge, inventory data from supermarket chains, coupon data from food companies and supermarket chains, traffic and geospatial data. These different data sources are provided by different providers and hosted in different data centres. To access them, you will need different credentials, different processes and different APIs. The designers for this personalised service must understand the different service level agreements (SLAs) from the different data sources and services because the user experience will be impacted if the integrated service has issues retrieving the right information in a timely manner. As a retailer, you don’t want the end user to make the extra 15-minute drive only to find out that their favourite products are out of stock and the grocery bill is actually $20 higher because they cannot use coupons or because they were forced to buy substitutes.
As you can see, the delivery of such personalised software services impacts the design paradigm and now must be inverted. While DevOps tends to start with the developer-led challenges (e.g., code review and code standards, build management and continuous integration), it ultimately sits in the wheelhouse of operations teams once the application is promoted into production. OpsDev begins with the end in mind. Once we understand the interdependencies of the different data sources and their availability, we can then design the components that tie everything together. Additionally, software is constantly updated. As new sensors are enabled to offer different kinds of data the personalised service must keep up with the new data so it can offer new features. The frequency of software updates for the service may be driven by software updates from other services that this personalised experience depends upon. So the designer must develop automated systems to receive update alerts from up-stream services which can immediately make recommendations on which component of the service will be impacted by such updates, and when the personalised service must be updated in order to be synchronised with the rest of the services.
What is OpsDev?
OpsDev means that the dependencies of the various application components must be understood and modelled first before the development process begins. In addition, infrastructure stability, environment modelling, security and audit/compliance measures must be primary considerations. Application components are stubs and they do not need to be in their final forms. Secondly, the environments in which the components will be deployed for production must be modelled. Thirdly, the processes to deploy the various components to the target environments must be automated as much as possible. By doing the above, the design and development teams can consistently replicate the application and environment models and automated processes in the development and test phases. By easily replicating the production environment and processes in development and test, the design, development and test teams will know the production constraints and parameters very early on, such that they develop the applications with those constraints and parameters in mind. In the traditional model, a lot of time is wasted troubleshooting applications that have been approved by QA in the staging or production data centers. And often times, the deployment must be cancelled because the approved applications are dead on arrival in the staging or production environment because the environments are slightly different.
Furthermore, in the OpsDev approach, a release pipeline that orchestrates the deployment of applications to dev, test, staging and production environments will not only accelerate the overall process of deployments in various environments through automation and parallelisation, but it will also improve quality by minimising error-prone manual tasks. The release pipeline can aggregate several commit pipelines that make up a release. A commit pipeline is the individual application pipeline that orchestrates the continuous integration and continues testing. A release may contain several applications developed by several project teams. Each project team can have its own commit pipeline. The collection of commit pipelines from the different teams for the different applications can be aggregated into a release pipeline. The release pipeline will understand the interdependencies among the applications and will marshal those applications into staging and production environments. The release pipeline can have manual and automatic approval gates to make sure that the release is approved and is going on the right deployment schedule.
From the OpsDev approach, the release pipeline can be integrated with Information Technology Service Management (ITSM) and application performance monitoring (APM) solutions. The release pipeline can seek for an approval by sending the electronic bill of materials of the soon-to-be deployed applications to an ITSM solution “service desk” and open a change request ticket. The IT director will get the notification of the upcoming deployment via their ITSM dashboard. The ITSM solution can then marshal the request through the ITSM review and approval workflow. Upon the approval by the IT director, the ITSM solution can send the signal to the release pipeline to schedule the deployment. Upon successful deployment, the release pipeline can inform the ITSM solution about the successful deployment by updating the status of the corresponding change request.
The release pipeline can also be integrated with an APM solution. The release pipeline can deploy the applications in the staging environment and kick off the APM solution to monitor the performance and load testing. The APM can report whether the applications can meet the SLA. If so, the application can move forward with the deployment into the production environment. Otherwise, the release pipeline will be stopped and an alert will be generated about the failure of meeting the target SLA. In the production environment, the APM solution can monitor the transactions, performance and load. When it reaches a certain threshold, the APM can notify the release pipeline to add more server capacity by deploying more applications in the data centres. Upon receiving the request from the APM, the release pipeline will create a change request to the ITSM solution. Upon the approval from the ITSM solution, the release pipeline deploys the same set of apps to more servers to bring in more capacity. When the capacity is no longer needed, the APM can notify the release pipeline to turn off some servers and return the servers to the pool for other uses.
As you can see, with the proliferation of IoT and user-experience-based mobile apps, companies cannot afford to develop products in the traditional development paradigm because of the increased interdependencies of SaaS services and application components (software in devices, software in data center, and mobile app and web app) that make up a single cohesive user experience. Apple, in its crusade to make our lives more efficient by encouraging Apple developers to think of user experiences first and offering the integrated Apple personalised services, may accelerate the mind shift from DevOps to OpsDev.