Building a Purchase Order Service at a Fortune 500 Retail Company

Purchase orders hold key data for retailers. They are a representation of future inventory and inventory is one of the most important assets that a retailer has. Teams at the company I was working with had a lack of visibility into purchase order data and it was siloed in an Oracle application database without practical, programmatic access to it. The company wanted to do lots of sophisticated predictive modeling and analytics, but purchase order data was a key missing data source.

I worked on a team that was tasked with building a new purchase order service in Google Cloud Platform that gave teams throughout the company better visibility and access to purchase order data, allowed the company to use PO data for predictive analytics, and allowed other services and applications within the company to consume purchase order data in a reliable, modern way. The project was part of a larger, multi-year cloud transformation and modernization effort that rebuilt a lot of the company’s legacy applications in GCP as microservices, using tools and services like Kafka, Apigee, and Google’s Spanner distributed database. I specifically worked on validating and rewriting business logic, API design and testing, and helping with general team management.

One of the interesting challenges was deciding on the tradeoffs between porting over existing logic in the legacy application as-is (it lived in several poorly documented Oracle stored procedures) vs. making updates to existing logic where you know business requirements diverge. Another interesting challenge was finding every team within the company that would use purchase order data and understanding their use cases at a deep enough level to really make sure the API design was robust.

I learned a lot about the complexity and inherent challenges of distributed systems. When people talk about microservice architectures, you often hear it’s about organization of people in a company as much as it is a software architecture pattern. Seeing a huge company make the transition to microservices really made me feel that in a visceral way. I also learned a lot about exposing complex data models to API consumers in the simplest way possible.