Skip to content

Design principles to modularise a monolith codebase

Photo of Karun Japhet
Hosted By
Karun J.
Design principles to modularise a monolith codebase

Details

Abstract

Managing a monolithic code base is difficult. Over a period of time monolithic code base become difficult to maintain. It becomes difficult to make changes or to access impact on changes. This makes it hard to estimate time or effort required for making a change for the system. A lot of these issues happen due to coupling in the code base. Modern architecture is moving to micro-services to deal with some of the issues caused by monolithic code base. But moving to micro-services is also challenging.

There is one more option to deal with coupling in the monolithic code base. Modules. Principles of modular design help to manage the coupling in the monolithic code base.

In this talk, we will discuss

  • How a good module look like (Discussion on module boundaries - Reusable code).
  • Properties of good reusable code.
  • Principles that help get the module boundaries right (cohesion principles)
  • Principles to manage dependencies between the modules (coupling principles).
  • Tools that can be used to decouple the code base. (We will be using IntelliJ Idea DSM to visualise the code base dependencies and to break them).
  • Techniques that can help to prevent future issues.

We won't be covering all the principles or every aspect of the given principles due to time constrain. Main goal of the talk is to provide actionable points and to have a healthy discussion around the same.

Bio of Speaker

Prashant Kalkar has over 18 years of hands-on experience in technologies like Java, Scala, Spring, Kubernetes, Kafka etc. He has experience in the development, architecture as well as DevOps streams. He helps organisations in adopting agile practices and continuous delivery. He has given talks on SOLID principles, functional programming, Immutable infrastructure with Terraform and consumer driven contracts in the past.

Pre-requisites for Attendees

  • Majority of the talks is from a point of view of statically typed programming languages. Exposure to such a language will be useful.
  • The example code base which will be used for DSM will be in Java. Some familiarity with Java syntax (or similar languages) will be useful.
  • Work exposure to monolithic code base will be useful though not required
  • Some familiarity to SOLID principles
Photo of DevDay - Bangalore group
DevDay - Bangalore
See more events
Online event
This event has passed