CoolSocks is an online store for selling socks with funny patterns. In addition to selling and delivering goods, the store offers recommendation system based on what other users have bought, a wish list (users can save a product in their profile without buying it), users also write reviews and are incentivizes by earning points for their reviews. CoolSocks are a growing business and are expanding to several new counties, increasing their user base. At the same time, their team size is growing and has reached the 100 employees mark. CoolSocks is built using monolithic architecture, their whole application is written in Java with MySql database. The codebase is thousands of lines of code and it takes approximately two minutes to compile the project. CoolSocks releases a new feature every quarter, while their CEO wants to release a feature every week. CoolSocks team has also observed that more users buy socks in the evening, while in the morning users use the website to write reviews.
In this seminar, you should demonstrate how the use of micorservices can transform CoolSocks software architecture. You should represent (schematically) using a diagram the new components in the system. You should discuss if microservices can be used to address some of the technical challenges that the company is facing. Do you think this is the right architectural style for them, or you think that such move will be disastrous and inefficient for the company?
STARTER QUESTIONS This set of questions will form the basis of the discussion during the seminar. We may discuss them all together, or may split into break-out groups, and bring the results together during the seminar.
1) What are the technical challenges that the company is currently facing?
2) Which of CoolSocks’s problems can be addressed by shifting to microservice architecture?
3) How a microservice architecture can help with 24/7 availability of the CoolSocks website?
4) Draw an architecture diagram outlining the new components in the system and how they are connected. Explain each component with few words.
5) The recommendation system uses a third-party API that often returns an error. How will you ensure that an error in the recommendation system will not bring down the whole website?
6) What design patterns can be used to make the system easy to deploy?
7) What are the risks of moving to microservice architecture? Be specific and give examples. 8) How will you split the teams in the company?
9) What are the challenges in implementing the solution?