A modern browser is required for security, reliability, and performance. Contact us.

We helped this global B2B e-commerce client build a new wholesale order management portal for their EU business using scalable cloud-native architecture.

We helped Under Armour build an international B2B ordering system which could support all the languages spoken and currencies accepted in the markets they service within the EU. It also had to be easy to use for their customers who had historically placed orders by speaking directly with a sales rep. While this new platform would at first support the EU, it would eventually underpin their North American B2B platform. This would require we integrate with an existing inventory management system (SAP), and provide each customer with a customized catalog of products they could order, based on their business needs.

Service Separation

Natural system boundaries are sought and aggressively identified. Where feasible, areas of responsibility are split off into separate services. This approach provided some important benefits.

For example, service separation facilitated the incremental transition of our client’s server code from Scala to Go; some subsystems have already been implemented in Go, and these are already running smoothly alongside the older Scala services.

Containerization

When deployed, each service runs in a Docker container, based on a Docker Image custom tailored to the specific service. From an organizational perspective, this simplifies the overall problem of maintaining a robust deployment and secure environment by breaking it into smaller problems.

Each service lives in a semi-isolated container whose boundaries are very clear and comprehensible, and which contains only the system dependencies necessary to accomplish a very specific purpose.

For example, the container that enables customers’ browser experience is dead simple; it is very nearly a straight Alpine Linux server, with a creatively configured static web server. It actually CAN’T do anything else, which from a security and systems management perspective is a very good thing.

Orchestration

Given that our client’s codebase has been separated into containerized services, it is natural to formalize the problem of how to ensure that the different pieces consistently work well together.

For example, the Orders service may experience a much heavier load at certain times of the year, while the need for the User Identity service may remain consistent.

For another example, we may want to ensure that a certain version of the Web (front-end) cannot be seen by consumers without a compatible version of the Carts service being available for Web to talk to.

Our client relies on Kubernetes to address these and many other types of concerns. Kubernetes provides a formal language for defining and enforcing the layout of a production deployment and the relationships between various services instances.

Continuous Deployment

Each time a developer pushes source code to a given service, our client’s continuous integration server publishes a fully deployable image for that service (provided that the build passes all the tests.) This means that there are very few barriers between development and deployment. The normal process of development produces the actual artifact that is deployed.

Hosting

Nearly all of our client’s infrastructure is hosted on the Google Cloud platform. This ensures easy access to additional scale when necessary and allows our client to effectively serve their customers in various continents (currently North America and Europe) with minimal administrative overhead.

Results

In the end, the benefits of the engagement were ten-fold. Our client got a global wholesale order management portal that is scalable, internationalized, and accessible with a React front-end that works smoothly within their cloud deployment environment for their custom catalogs, account management, order processing, and customer support via API abstraction layer.

Leveraging cloud-native development enhanced the capabilities of their web-centric application; keep them running consistently, across continents, with less pain and less overall expense.

Ready to get started?

Tell us about your projectclay devices in various sizes