Jan 8, 2018 by James Hartling
Why developing a nimble technical architecture is the core of an eCommerce digital business
Our experience building digital platforms at a global scale
Modern business is digital, and you have to speak the language. Many large companies are still trying to modernize their systems of two generations ago, while more nimble and well-structured competitors are able to out-maneuver them due to a more nimble technical architecture. For Omni Channel retail, and for digital business in general, an architecture consisting of a set of well-factored services, running in the cloud, and built and supported by agile pods, represents a powerful foundation upon which can be built a world-class set of capabilities with virtually no limit to its lifetime, extensibility, and capability.
At the heart of such a system is the microservice stack. The central tenet of this architecture is that a set of well-defined services can perform a variety of roles in support of the business:
- Expose data in a controlled manner to internal users, customers, 3rd parties, or the public at large. An example might be a service which provides data about physical store locations, events at those stores, online sales promotions, inventory availability, really the list is almost endless.
- Expose capabilities for use by key partners. There are many examples, but an interesting one is to allow the absorption of a customer order into online systems from a physical store. Similar control and access capabilities to the data layer.
All services are managed in terms of access with readily available services such as the AWS API management gateway. Further, the developer portal allows for rapid prototyping of interfaces, supporting fast-moving innovation and development.
“Form follows function” is the architectural principle that an object’s shape should be based on its intended purpose. In the digital business space, there is a nuance that the intended purpose may be a function of time, so a degree of fluidity should also be present. The change should also be manageable and supported by cross-functional teams (agile pods) employing modern development methodologies.
E-commerce platforms are often monolithic in nature, adhering to the traditional Click to Buy Paradigm. This should no longer be considered sufficient, as other channels should be able to consume services that underlie that same system. For example, if your physical store wants to update a customer’s loyalty data, it should call the same service as your website, native app, 3rd party partners, and other authorized entities do. This allows the economical management of a *capability* spanning *all* users of that capability. The old technique of building separate systems all feeding data downstream is not viable, as they will be driven out of sync as different channels move independently.
The services each publish a specification, in RAML or Swagger or some other standard format. The management gateway helps enforce this protocol and provides a rallying point for developers and managers to establish the language. Adherence to this standard is central to the idea of microservices.
A key benefit of this structure is its inherent modularity and flexibility. Once the aforementioned communication standard is set, all you have to do is follow it, and you can easily swap in, say, a replacement for service #2, or an upgrade to service #3. Contrast this to the monolith, in which a change to this part of the system might have unintended consequences to that part way over there.
- Success in the global e-commerce world through effective platform development that leverages Agile/POD teams and modern technologies such as micro-services to economically support multiple brands, geographies, and languages on one common platform.
- Making the transformation in the face of a mature and extensive business, how to manage:
- Tech transformation
- Channel expansion (“omnichannel”)
- Org transformation (towards agile pods, ci/cd)
Companies that do this will really make it part of their culture, and make technical leadership a point on which they sell themselves.
One good example in retail is WalMart labs: http://www.walmartlabs.com/
Alibaba is another retail example, with projects like vue.js and weex app framework
- Releasing open source software
- Being continually engaged with the community
- Getting editorial in technical publications
- Doing demos at local technology groups
- Going to conferences
- YouTube videos
At the center of it is something being “open source.” Usually, it is some software libraries or other tools which are of general utility to the outside world, yet somehow unique in how they solve a problem. It also can mean sharing information about the process and best practices, something that Etsy does well. At our recommendation, ELC has visited Etsy and it helped kick off a move toward agile and continuous integration. A video we shared with ELC on how Firefox does DevOps, continuous integration and automated QA was also influential in them wanting to adopt those practices.
We can become industry “thought leaders” and build our “brand awareness” very quickly and efficiently by deeply immersing ourselves within the communities that we are already involved. In the process, we will obtain meaningful relationships and build a reputation for leadership.
On the Drupal side we can be contributing to and creating, plugins that not only meet our needs but the needs of many others. On the NodeJS side, we can be contributing to, and create JS modules. On the Mongo side, we can do the same. I’m sure there are other areas we excel in. Angular? React? They all need module development, and contributions to open source code base.
Representing each of these projects could/should be a dedicated website/blog and YouTube channel. We should assert ourselves in the community, offer our services as speakers at relevant conferences, and then upload the talks to the respective project channels. We should blog regularly about topics that are relevant to the community.
Over the years, it’s gotten harder (not easier) to advertise a business effectively. The new “social advertising” trend is to have your employees represent your business, since a personal profile is easier to get in front of potential customers than a company profile. We should, therefore, encourage our developers to maintain Github repositories, business-related social profiles, and blogs that showcase our various projects, code samples, etc.
Our unique challenge and strength is the multi-site nature of the business. We need to support hundreds of sites with all sort of variations on a single code base, layering logic and data to make it manageable. It is an area where we could use a good approach and product to manage that complexity, and where not much really exists. If we were to make an open source product, it would be something where we could differentiate ourselves. Beyond just support a large multinational conglomerate, such a system has used in more mundane places, like hosting large numbers of individual websites or apps for local businesses.