project info
- Company : Speed Commerce
- Date : 2014 - 2015
- Role : Architect, Lead Developer
project description
Volume, volume, volume. This was becoming a problem. The company was experiencing such a high volume of orders inbound that the order management system was having a hard time keeping up with sending the same volume to the fulfillment centers. The principle business owner challenged us with building a system that could take an order from being placed on the web to being in a pickers hand in the warehouse in 10 minutes. Insert the Pick Ticket Application.
We took the entire workflow of a pick ticket, from the moment it is created as allocatable units on an order, to the moment a picker can begin looking for product in the warehouse, and broke out every micro step we could think of, in order to build a scalable, high-volume, pick ticket processing application.
This is a transaction system, pure and simple, we leaned heavily on the message queueing system PHP Resque running on top of Redis, to break each of these micro-steps into separate jobs that got placed into queues specific to the job, client and other methods of prioritization. Due to the complexity of the arrangement and management of these jobs and queues we also had to build a fully customizable control panel for the IT Operators to manage the ebb and flow of system needs.
We started with a personal goal of 3 thousand pick tickets per hour. Then we were pushed with a formal goal of processing 10 thousand pick tickets per hour. By the time we neared the end of development we were able to push most of the application processes to 20 thousand pick tickets per hour in scaled tests.
This application suite includes an API interface, an application server (capable of scaling up to multiple application servers), and an adminstrative web site. It is all developed in Symfony 2, and makes use of Phinx database migrations, GIT repository management and Jenkins automated deployments.