Domain-driven design for a major railroad’s operations
As one of America’s leading transportation companies, the client is a large railroad network that covers 23 states across the western two-thirds of the United States. Serving over 10,000 customers per year, the client connects major western ports to eastern gateways and links to the rail systems of Canada and Mexico.
Railroads continue to require innovative and agile technology solutions to gain efficiencies, improve operating ratios, and maintain an edge in a competitive transportation market. The client contracted PK, an experienced consultant in the railroad industry, to develop a robust enterprise application to handle its terminal operations. The application needed to accommodate testability at various levels to minimize downtime and ensure the efficiency of terminal operations.
PK developed a web-based enterprise application with a domain-driven design for terminal operations that could be easily integrated with other applications and provide an efficient system for terminal operations.
The client required an application that would drive productivity and allow integration with other applications at minimal or no code change required. PK developed a domain-driven, web-based application using reusable J2EE components and the Spring Integration Framework to ensure compatibility with other applications. The enterprise application was divided into several domains so that each domain would be a self-contained deployment unit. All domains except the User Interface were deployed on Linux servers; the User Interface was deployed on a Web logic cluster.
Snapshots of domains can be deployed individually, without deploying the entire application, resulting in minimum or no downtime. The domain-driven-design was chosen to ensure minimum downtime, accommodate testing at multiple levels, and increase productivity.
The separation of domains resulted in increased efficiency, as individual team members could focus on their particular domain. Adopting a domain-driven design for the client’s web-based enterprise application enhanced testability at the unit and integration levels, resulting in efficient troubleshooting and increased productivity.