The document discusses splitting a monolithic service called FIT into multiple smaller services due to it becoming overweight. It describes how FIT handled forecasting and inventory management for multiple business domains. The diagnosis concluded FIT should be split based on code cohesion, business domains, stakeholders, and requirements. The original plan was to split forecasting and inventory management but the plan evolved over time as smaller steps were taken. Now several services have been split off while others like retailer stock are still being defined. Lessons learned include that working with many stakeholders indicates a split is needed, to have a vision and flexible plan, and that incremental changes are better than just moving code.
3. • Software Engineer
• Fulfilment Space
• Team 15b
Responsible for
• Stock
• Stock valuation
• Stock configuration
• Stock replenishment
• Anything stock related
really
Bart Enkelaar
Who am I
• Worked for 7 years @TOPdesk
• @bol.com since Dec 2014
• Live in Amsterdam
3
4. 1. What is FIT?
Broad overview of the service
2. The diagnosis
How did we conclude FIT was overweight
3. Executing the split
From original plan to adjusted plan
4. Now and the future
How far have we come and what’s left to do
5. Learnings and recommendations
Takeaways from our efforts
What to do when your service is overweight
4
Splitting FIT
5. • Forecasting & Inventory
Management
What is FIT?
Broad overview of the service
5
SLIM4
Forecasting Inventory
Management
Purchasing
Webshop
Offers Finance
Fulfilment
Warehouses
• Forecasting
• 5 file interfaces to SLIM4
• 4 file interfaces from SLIM4
• Purchase advices for stock replenishment
• Inventory Management
• 15 Warehouse interfaces
• 6 different stock models
6. 1. What is FIT?
Broad overview of the service
2. The diagnosis
How did we conclude FIT was overweight
3. Executing the split
From original plan to adjusted plan
4. Now and the future
How far have we come and what’s left to do
5. Learnings and recommendations
Takeaways from our efforts
What to do when your service is overweight
6
Splitting FIT
7. 1. The obvious: &
2. Code cohesion
3. Business domains & stakeholders
4. Non-functional requirements
5. Existing knowledge and experience
How did we conclude FIT was overweight
7
The diagnosis
8. 1. Different stakeholders will favor different optimizations in design decisions
2. Multiple stakeholders mean a harder to organize backlog
8
Stakeholders
10. 1. The obvious: &
2. (The object oriented way) Code cohesion
3. Business domains & stakeholders
4. Non-functional requirements
5. Existing knowledge and experience
How did we conclude FIT was overweight
10
The diagnosis
11. 1. What is FIT?
Broad overview of the service
2. The diagnosis
How did we conclude FIT was overweight
3. Executing the split
From original plan to adjusted plan
4. Now and the future
How far have we come and what’s left to do
5. Learnings and recommendations
Takeaways from our efforts
What to do when your service is overweight
11
Splitting FIT
12. 1. After the diagnosis, first lots of discussion and gathering support
2. Make a plan
3. Start with the first small steps
4. Impact and scope gets better defined after each step taken
5. As we’re developing new functionalities, keep moving in the right direction
6. Over time, the plan evolves
From original plan to adjusted plan
12
Executing the split
14. 1. After the diagnosis, first lots of discussion and gathering support
2. Make a plan
3. Start with the first small steps
4. Impact and scope gets better defined after each step taken
5. As we’re developing new functionalities, keep moving in the right direction
6. Over time, the plan evolves
From original plan to adjusted plan
14
Executing the split
16. 1. After the diagnosis, first lots of discussion and gathering support
2. Make a plan
3. Start with the first small steps
4. Impact and scope gets better defined after each step taken
5. As we’re developing new functionalities, keep moving in the right direction
6. Over time, the plan evolves
From original plan to adjusted plan
16
Executing the split
17. • Originally just split Forecasting and Inventory
Management
17
The plan evolves
Warehouse Configuration
Forecasting Inventory
Management
• As we investigated the domains, decided we
need a separate Warehouse Configuration
service
• As an alternative forecasting model was
developed, updating the old forecasting code
no longer necessary
• As we developed features and our vision, more
aggressive splits became a viable option
New
Forecasting
Valuation
Stock levels
Retailer stock
18. 1. What is FIT?
Broad overview of the service
2. The diagnosis
How did we conclude FIT was overweight
3. Executing the split
From original plan to adjusted plan
4. Now and the future
How far have we come and what’s left to do
5. Learnings and recommendations
Takeaways from our efforts
What to do when your service is overweight
18
Splitting FIT
19. • Dedicated retailer stock service is only one that
does not exist yet
• WACO is already in the lead, but not completely
migrated yet
• Work on VAST has just started (And the plan is
glorious ;-) )
19
Where are we now
Warehouse Configuration
Forecasting Inventory
Management
New
Forecasting
Valuation
Stock levels
20. • Retailer stock is still slightly undefined
• Mutations will remain in FIT
20
Where are we going
Warehouse Configuration
Inventory
Mutations
New
Forecasting
Valuation
Stock levels
Retailer stock
21. 1. What is FIT?
Broad overview of the service
2. The diagnosis
How did we conclude FIT was overweight
3. Executing the split
From original plan to adjusted plan
4. Now and the future
How far have we come and what’s left to do
5. Learnings and recommendations
Takeaways from our efforts
What to do when your service is overweight
21
Splitting FIT
22. 1. Working with lots of different stakeholders is probably the strongest indicator that your
service might be in need of a split
2. Create a vision and a plan
3. Take small steps
4. Be 100% flexible about the plan, but brutally unapologetic about the vision
5. Tie small steps to functional improvements
6. Just move the code to a new repository rarely works out in your favor.
Takeaways from our efforts
22
Learnings and recommendations
23. 1. What is FIT?
Broad overview of the service
2. The diagnosis
How did we conclude FIT was overweight
3. Executing the split
From original plan to adjusted plan
4. Now and the future
How far have we come and what’s left to do
5. Learnings and recommendations
Takeaways from our efforts
What to do when your service is overweight
23
Splitting FIT