Finding the perfect balance between your needs, the risk, the effort, and the added value of the solution depends on the precise understanding of every component that constitutes your current architecture and the one to come.
Many decisions will be needed to find the perfect fit, especially when choosing to transition from a monolithic architecture to a microservices.
Setting your goals
When choosing to modernize your application (whether being a microservice or monolithic architecture), you need to establish clear SMART goals to guide the selection of the best solution. Most often, these goals are related to the desired benefits: increased productivity, reduced risk, improved reliability, added scalability, enhanced security, better operational visibility, faster execution, etc.
Finding your definition of a good application
When thinking about modernization, you should ask yourself: what is a good application? This question should be analyzed by keeping in mind the specific needs of the development and operations teams. For devs, a good app should increase productivity, which means that it should be easier and faster to develop and deploy. For ops, it should give them operational visibility to facilitate diagnostic and patching manipulations. The idea is to find a balance between these needs, while also ensuring that the app will help differentiate your business from the competition and allow for updates to be made with relative ease.
Selecting the Architecture
Most of today’s companies use monolithic architecture—one that combines the UI, the business logic, and the data access layer—for their systems. While this option has advantages in terms of security because it doesn’t require data duplication, it unfortunately doesn’t allow a lot of flexibility. As a result, every little modification is a very difficult task.
On the other hand, a microservice architecture is a set of fully independent applications with a short life cycle (which accelerates deployment) controlled by a single user interface, which provides a huge variety of services while being extremely easy to update and modify. However, in the event of an error it could be harder to diagnose problems because every separate module needs to be scanned. Since data is duplicated across the various services, the risk of security breaches could be greater than with a monolithic architecture, if not designed correctly.
Choosing the right approach for the right solution
First, you need to choose the right approach (the method used to realize the implementation of your solution). When selecting a method, there are three main considerations: the risk you are willing to take, the value you want to create, and the effort needed to achieve the transition. This step requires a lot of transparency about your organization’s risk appetency and the current capacities. After reflecting on risks, effort and value, you should have the information you need to choose the most suitable approach: a oneshot development methodology (a.k.a. waterfall) or an incremental development methodology (a.k.a. agile).
The first one is best suited to a solution that doesn’t require the creation of a new architecture (like rehosting your services) but will be slower to deliver value to your company. You could, of course, opt for the middle-ground solution of re-platforming your systems, which will give you the best balance between value, risk and effort. While it is possible to deploy a new platform using the waterfall approach, the complexity of the approach would make it difficult to rapidly make changes to scope and requirements, thus making the project at higher risk of delays. This is why an incremental approach—based on agile practices—is the safest (albeit the most demanding) and fastest methodology to achieve a successful and high-value architectural transition.
In summary, when choosing your app, you will need to find the centre of gravity between network, security, application team, platform, operations, DevOps, quality assurance, and release management.
To better understand the role we can play in your project, check out our webinar called “Apps Modernization – Approach, Architecture, and Technology Selection,” produced in collaboration with Opticca.
You can also contact a member of the R2i team for additional information and to learn more about our expertise in the field.