DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
  1. DZone
  2. Data Engineering
  3. Data
  4. Experience Service — eBay’s Solution to Web/Mobile Multi-Screen Application Development

Experience Service — eBay’s Solution to Web/Mobile Multi-Screen Application Development

Learn how eBay is offering a solution for those who want to develop cross-platform, native-like experiences for both web and mobile.

Chuck Zheng user avatar by
Chuck Zheng
·
Mar. 07, 18 · News
Like (2)
Save
Tweet
Share
6.21K Views

Join the DZone community and get the full member experience.

Join For Free

Many companies want to offer their products and services as both web and native experiences — so-called multi-screen application development. Application development on various devices is historically siloed. Every device-specific team performs the same tasks:

  • Orchestration of calls to underlying domain services for data

  • Massaging the data from various services to fit into UI’s need

  • Performing L10N translation and formatting on data

  • Implementing Experimentation of features

  • Handling user behavior tracking

  • Presenting UI to end user and managing user interactions 

Device-specific programming

Presentation work is truly device specific and must be done for each device type. Other works are almost the same, but duplicately developed on all devices. This approach has caused many problems:

  • Duplicate development wastes engineering resources. It is not a scalable process.

  • So much duplicate work by each team slows down business feature time-to-market.

  • Users see different experiences on different devices. Features are either not available or implemented differently.

Delivering new business functionalities to all native app users with a fast time-to-market is particularly challenging. Studies show that 70-80% of users upgrade to the new app version within a couple of weeks of its release. The remaining 20-30% users wait up to 2 years before getting latest business features. Therefore, we need a different approach that can deliver business functionality to most mobile users with minimal or no change to the mobile native app.

Experience Service Comes to the Rescue

An Experience Service removes duplicate work by centralizing those duplicate tasks into a new server-side layer to speed up client app development, as illustrated in the diagram below.  

Removing duplicate work using Experience Services

A UI page/view is comprised of a collection of UI modules. The Experience Service interface is driven by the UI module, as opposed to a regular data service driven by a data entity. The experience service can

  • Identify between web and native clients

  • Select an appropriate set of modules for the client type, taking experimentation into account

  • Orchestrate calls to the underlying domain process and entity services

  • Select/transform/compute domain service responses into groups of what’s needed for each UI module

  • Format/convert/localize the data to the client’s need, with presentation hints when needed

  • Attach user behavior tracking metadata to user actions

  • Return module data in a standardized format to clients 

Client apps, upon receiving the Experience Service response, render the module data with matching UI components and deal with user interaction. This approach greatly speeds up client app development and, at the same time, increases information and user experience consistency.

An Example of the eBay Checkout Experience Service Interface

Let’s take a look at one of eBay’s first Experience Services -- Checkout Experience Service. In the diagram below, on the left is the Experience Service JSON response. To its right, we have screen dumps of the checkout page for a desktop browser, mobile web, and iOS app. Unlike the domain service interface consisting of data entities -- orders, items, users, etc., the Experience Service response JSON contains a collection of modules made of synthesized/transformed entity data, which provides concise and relevant information within each module. For easy matching between JSON responses and UI modules in the screen dumps, modules are color-coded, e.g: Summary module - pink, Shipping Address module - green, Payment Method module - red, Cart Details module - blue.

Checkout Experience Service example

Let’s zoom into the Summary Module:

Summary Module

Across the desktop Web, mobile web (mWeb), and iOS apps, the Summary module needs the following info:

  • An Order total with label and amount

  • A list of line items, each with a label and an amount for Items purchased and shipping cost 

These are directly supported by the JSON module’s “total” attribute and “summaryItemList” attribute. Each element is consistently modeled with

  • A “label” attribute with localized text

  • A “type” attribute to provide a client hint to present “TOTAL” differently from others

  • An “amount” attribute, which has

    • “textSpans” holding multiple segments of localized/formatted/styled version of amount

    • An optional “value” of raw data for the client to store and process when needed

With this approach, all client apps are receiving consistent and relevant data ready to present to the user, without concern about which underlying domain services to call and what business rules to implement. New line items and business functionalities can be added (e.g. coupons) into the list and delivered to eBay users on all devices with very little or without client app change. For the modules where different clients do need different experiences, the Experience Service can identify the client type and return different modules or data for each.

Conclusion

It has proven in eBay production that a carefully designed Experience Service interface that abstracts most business logic/knowledge away from the clients can provide new functionality to native and web apps without a client code change by altering business logic inside the service. If new UI components need to be built, a client app change is required. However, many new business functionalities can be introduced by composing the previously built client UI components with agreed protocols from the Experience Service. This drastically reduces client app development and release timelines.

Since the introduction of Experience a couple of years ago, most eBay major user-facing apps have developed Experience Services. Some of them are already in production, and most eBay’s major user-facing pages will be served by Experience Service by the end of 2018 on all devices. The Experience Service pattern has proved valuable to eBay’s customers, business, and engineering organization. Teams also have found many areas for Experience Service patterns and processes to evolve, so it can further improve the multi-screen application development.

Web Service mobile app Data (computing)

Published at DZone with permission of Chuck Zheng. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Event Driven 2.0
  • Building a Scalable Search Architecture
  • Agile Transformation With ChatGPT or McBoston?
  • The 12 Biggest Android App Development Trends in 2023

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: