Author: Dr. Kostja Siefen
Every mathematical optimization implementation project is a unique journey, which begins with an initial idea of how mathematical optimization could be used to address a business problem and ends with the actual implementation of a mathematical optimization application that delivers a solution to that business problem.
As a Technical Account Manager, my job is to guide companies on their journeys from idea to implementation, to advise them on which pathways to take and which pitfalls to avoid, and to help ensure they reach and realize their ultimate objective: the successful deployment of mathematical optimization in their organization.
Although each of these implementation journeys is different, they all – generally speaking – follow a sequence of similar steps. In the first blog in this series, I highlighted the first stages of the journey from project kick-off and scoping discussions to the development of a project roadmap.
In this blog, I would like to move on to the next leg of the journey: Designing a deployment architecture for your mathematical optimization application.
Designing a Deployment Architecture
Once you have determined which business problem you will use mathematical optimization to address, discussed and defined your project roadmap, and aligned all relevant stakeholders around a common vision for your mathematical optimization solution, you are ready to begin conceptualizing your deployment architecture.
It is essential to create a detailed blueprint of your deployment architecture, which will serve as the foundation on which your application will be built and used. To design this blueprint, you will need a “solution architect” (which could be someone from within your organization or an external consultant) who has the necessary technical and business expertise to transform your vision for the solution into an actual application design.
When designing the deployment architecture for your mathematical optimization application, these are the key factors to consider:
- Hardware requirements: Mathematical optimization is a compute-intensive technology, and so it’s critical that you have the computing resources (in terms of core count, clock speed, memory, etc.) and network capabilities that you need to run your application. You should determine the IT requirements for your mathematical optimization application, take stock of your existing IT infrastructure and resources, and identify any gaps the must be filled so that the application can be integrated seamlessly into your IT environment. We as Technical Account Managers help here by looking at the models to assess the required computing capacity and to give a sizing recommendation based on the expected system load.
- Software requirements: After determining your hardware requirements, you should focus on putting together the tech stack that you will need to build, run, and maintain your mathematical optimization application. You will need to decide on which programming languages, front- and back-end tools, and other software solutions that you will use. Most importantly, you will have to decide which mathematical optimization solver you will use as the engine to power your application (and I will discuss in detail how to choose a solver in the next blog in this series).
- Type of deployment: You must decide which type of deployment – on individual workstations (on your company’s private cloud or in-house system), on a hosted cloud environment, or on one or more dedicated servers (on your company’s private cloud or in-house system) – would be best for your application. The key element here is the proper integration into the existing infrastructure and the ability to maintain the solution in the future.
- Costs: In any IT implementation, cost is a crucial consideration. Taking into account your budgetary constraints as well as your hardware and software requirements, you must try to figure out the most cost-efficient architecture for your implementation. Needless to say that costs highly depend on flexibility (both in terms of technology and licensing) – so the key part here is to find the right tradeoff.
- Scalability: When designing and developing the deployment architecture for your mathematical optimization application, it’s imperative that you think not only of your hardware and software needs today, but also in the future. The architecture and infrastructure that you put in place should be scalable – so that you can easily expand your mathematical optimization deployment and enhance your computing and network capabilities to meet the changing needs of your organization, today and in the years to come.
The entire project team should meet and discuss these and other factors, decide on what the right deployment architecture should be, and then begin to design and develop this architecture.
Of course, this process takes time and effort and requires a solution architect (either from within your company or an external expert), but it’s vital that you ensure that you are able to conceptualize and ultimately construct a deployment architecture that is the right size and structure for your organization. Gurobi frequently helps companies here as an external advisor.
Laying the Foundation for Success
The deployment architecture serves as the foundation on which your application will be built and run. By designing, developing, and deploying an architecture that fits the needs of your organization and fulfills the requirements of your application, you are setting the stage for a successful mathematical optimization implementation.
Perhaps the most important decision that you have to make during the process of designing a deployment architecture is which mathematical optimization solver you want to use in your application – and I will delve into this topic in the next blog in this series.