Our Response: Develop a Scalable Order Management System Leveraging Cloud-native Architectures
While this new system would initially support the EU, it would eventually underpin their North American B2B platform. As such, it was paramount that the system scale with Under Armour’s needs. In comes the power of cloud-native architectures and the technologies that enable it.
MojoTech dug right in to identify natural system boundaries. This process enabled us to identify how certain platform areas could be split into separate services.
Our approach facilitated the incremental transition of Under Armour’s server code from Scala to Go, as some subsystems had already been implemented in Go and were already running smoothly alongside the legacy services.
MojoTech deployed each service in a Docker container tailored to the specific service. Each service lives in a semi-isolated container whose boundaries are clear and comprehensible and contains only the system dependencies necessary to accomplish a particular purpose.
From an organizational perspective, this simplifies UA’s overhead of maintaining robust deployments in the future and secures the environment by breaking it into smaller modules. For example, the container that enables a user’s browser experience cannot do anything else, which is good from a security and systems management perspective.
Given that Under Armour’s codebase has been separated into containerized services, MojoTech programmed the logic to ensure that the different pieces consistently work well together. We used Kubernetes to provide a formal language for defining and enforcing the layout of production deployment and the relationships between various service instances.
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. Or, we may want to ensure that users with items stored in a certain version of the Carts service only see a specific version of the Web service (front-end).