Based on my experience, I am trying to list down key features which can help in deciding whether technical solution is modern, future-proof–
I am very keen to receive inputs/views to make above list comprehensive. Idea is to build a checklist to qualify a solution modern or something which can be refereed while starting a greenfield implementation.
Note – I am not getting into execution methodologies like Agile/Devops etc.
Thanks a lot Andrey for detailed response and recommendations.
Please see my comments inline.
<Mohit: By Model driven, I mean use of various data modelling standards like TOSCA for service templates, YANG for resource templates, BPMN 2.0 for workflow templates etc. This will bridge gap been business/planning/network teams and IT and let not-IT ppl use data models designed for them.
My Point 2 and Point 4 are addressing use of APIs and open standards like Open API etc. which will finally result in standard replaceable components and smooth integration.> 2. API/Micro service compliance, I suggest to just leave API in here. Microservices is really just an specific way of building internal systems architecture. It fits certain purpose, such as highly-available applications like portals, etc, where support for high-availability, auto-scalability is needed. The loosely coupled architecture may or may not be based on micro-services. <Mohit: makes sense, idea is to build a loosely coupled architecture.>
<Mohit: since I was compiling from Telco side, I meant ready to be deployed in either public, hybrid or private cloud infrastructure.
But from vendor viewpoint, Saas is picking up. I shall rephrase this point to cover all aspects.>
This is very interesting topic. Amit, thanks to bring this discuss to the group!Honestly, I feel very hard to define what modern architecture is after working in this industry for 20+ years in both R&D and solution side.First, software/product architecture is very different from solution architecture. By reading the messages above, I got the feeling this is mainly about solution architecture though, there are items applicable to both software/product architecture and solution architecture. For example, model driven, coupling, etc.Second, based on my experience (I might be wrong) the key features for a solution to be modern and future prove are:1. standard based software product and API (this included data model, interface, process, etc.) This would make the solution modern because the standards are moving forward and keep themselves modern, and future prove because new standards will continue to come out. This also will prevent vendor locking or at least make it easier to switch vendor or integrate with multiple vendors. Standard based software also can enable vendor agnostics for assurance, fulfillment, data analysis, etc.2. cloud native, cloud ready is not good enough, has to be could native or has roadmap to migrate to cloud native The key difference is that cloud native system can be deployed to either small or large logical server.3. symmetric distributed system architecture therefore symmetric HA and DR As solutions for OSS/BSS are very complex with large amount of code and data processing huge amount of entities, high scalability, performance, reliability, etc. are must. Active-standby HA/DR are just waste of resource and gives low confidence if the standby would work when the active goes down. With symmetric distributed architecture, system can scale out easily to increase performance, reliability, and scalability.4. component-oriented with model driven software In this industry, how to make solution mature/reliable and also flexible (I mean like requirements come in today, the patch ready tomorrow or next week, not months later) has been a big challenge for long time. Component-oriented with model driven can resolve this with peace of mind.Other features seem have far less importance compare to above, or they actually belong to above items.This is just one opinion. I'd love to discuss and learn from you all.