DigiOutsource Blog | Software Design for Modern Architecture

Software Design for Modern Architecture

THE ROLE OF SOFTWARE DESIGN AND MICRO SERVICES IS AN IMPORTANT ONE. SOFTWARE DEVELOPMENT MANAGER, FRANS, GUIDES US THROUGH THE PITFALLS.

Designing a System: How to Avoid Common Issues

Recently I wrote a blog about the role of micro-services architecture in payment gateway transactions.  Unfortunately, there is a trap into which many of us fall when designing a system: we try to break micro-services up into what we know - domain knowledge.  This usually results in these services becoming very reliant on one another, thereby creating nano-services.

How do we solve this issue?  I’ve been looking at IDesign.net and following a Microsoft legend, Juval Löwy (http://www.idesign.net/About).  The focus is primarily on the design of architecture for modern software.  I am not going to repeat what has been written, but I will apply it to the design of our applications.

The advisement is to first collate the smallest building blocks to see whether they will be able to satisfy the current system as well as future requirements.  The second step is to assess the design to see which services are performing an overlapping functionality.  The third and final step is to combine these services into one.  These core services should be able to address all of the required use cases.

The Role of Micro-services in System Communication

In my previous blog article, I spoke about having a micro-service per processor.  Think about it, if you have 100 processors, that means you have 100 micro-services that need to be supported, yet in the end, all of these micro-services achieve the same thing.  They call a processor and make a deposit, handle notifications and perform status checks. All of this happens via communication over HTTPS, with the use of HTTP Requests.  This can be done with a service. The way this service communicates and the information that needs to be extracted for a processor can be data driven, informing the micro-service how to do calls for each processor.  The HTTP communication can then be extended for different functionalities required, such as certificate management.

Another example of what can happen is that companies create small services for functionality that are very similar, and so can be grouped together into services.  For example: SMS service, Email Service and other services responsible for communication.  These can be grouped into a Communication service with functionality for each different way of communication.

I am not going to go into detail on how to achieve or structure your design to achieve your goals.  Here is a great article on one way of how to achieve this.  https://codewithspoon.com/2017/07/software-architecture/.  My advice is to invest a few days up front, ensuring that the design is correct before implementing. This can save you from paying the price down the line where you cannot extend the system properly as all use cases have not been covered, or the services are so dependent on each other that it leads to major timeframes to make simple changes or to add new features.  Also, analyse the functionality and make sure not to solve just the one single problem at hand but rather be able to handle future problems.  Review the design with a few people; ask questions on why certain things are happening, establish which services are performing the same task and move it to one service.  Lastly, do not start coding on the first prototype with the view that it will be the production system, as that will lead to lots of issues down the line.

 

Feeling inspired? Head over to our careers page to see if we have the perfect role for you.

04 NOVEMBER 2019
Germany to Cape Town: Pia Lettenbauer

31 OCTOBER 2019
Digi Women in Tech: Lyndelle Lok

28 OCTOBER 2019
Long Service Awards: Khanyisa Poto

22 OCTOBER 2019
Digi Women in Tech: Jayd Williams

21 OCT 2019
The DIGIOUTSOURCE CUSTOMER SERVICE AWARDS 2019

15 OCTOBER 2019
The Importance of Real-time Risk Management at DigiOutsource

10 OCTOBER 2019
Digi Women in Tech: Ankita Dalmia

02 OCTOBER 2019
Software Design for Modern Architecture

16 SEPTEMBER 2019
The Importance of Good Leadership to Effectively Scale a Tech Department

13 SEPTEMBER 2019
Interview with Carlo Phillips

30 AUGUST 2019
Digi Women in Tech: Cheryl Fowler

26 AUGUST 2019
Software Architecture at DigiOutsource

20 AUGUST 2019
Digi Women in Tech: Tristan Tong

12 AUGUST 2019
Digi Women in Tech: Dudu Mhlanga

05 AUGUST 2019
Risk Services Career Day

01 AUGUST 2019
Digi Women in Tech: Rehana Levesque

24 JULY 2019
THE DATA SCIENCE CHATBOT CHALLENGE

23 APRIL 2019
MICRO SERVICES, WHAT ARE THEY AND HOW DO THEY WORK

3 APRIL 2019
DATA SCIENCE AT DIGIOUTSOURCE

19 FEBRUARY 2019
INTERVIEW WITH RICKY

2 JANUARY 2019
INTERVIEW WITH CHER

31 JULY 2018
INTERVIEW WITH CHARL BAARD

16 MAY 2018
Exploring Career Opportunities

4 MAY 2018
A Hike a Day for a Year

17 APRIL 2018
Q & A with JP Stoltenkamp

19 DEC 2017
INTERVIEW WITH JAMESON KRETZMANN

01 SEP 2017
CCMG AWARD WINNERS

26 AUG 2017
CELEBRATING 20 YEARS OF DIGIOUTSOURCE

05 JUN 2017
DIGIOLYMPICS WINNERS

05 MAY 2017
DARG AND FALLEN ANGELS

10 DEC 2016
DIGIOUTSOURCE YEAR END FUNCTION