Preface
This article I am writing to share an Idea and Initiative named CMI (Create My Infrastructure).
Earlier I wrote an article [[S1-A&D] How to automate software-architecture, using architecture-as-code (SAaC) approach], This article in the same sequence is any attempt to share two type of information
- Objective & Overview of CMI Platform (Covered below in the article)
- High level solution approach to build the CMI Platform (Please follow the Link)
Small note on HLD (Solution Approach)
In order to keep the article size smaller, not sharing the entire solution-approach here. But the original document (Google Docs) will be available for all, interested & enthusiastic friends can follow the (Link of HLD document). For a long time, I was thinking of building this open-platform and [ABB cartridge] for each technology component, is the atomic component on the [CMI platform]. [ABB cartridge] is very much similar to [Provisioning-cartridges-in-Telecom] e.g. SIM-Activation-Provisioning-Cartridge, Change-SIM-Provision-Cartridge etc. for Telco operators. Technology components in any system architecture, in our architecture world is called [Architecture Building Blocks (ABB) (article on same here)] and [ABB-Cartridge] is the independent utility which can be download by user and execute in their infrastructure manually, or CMI platform can be allowed to executed in user’s infrastructure automatically.
High Level Design for CMI (Create My Infrastructure)
Overall objective of this project is to help the DevOps team/individual for setting up infrastructure for any software project in the required environments e.g. Production & Non-prod environments.
Issues & Challenges
- Software vendors, system integrators and business entities having their own IT applications.
- These stakeholders do setup IT infrastructure to run the respective applications
- DevOps / other responsible teams setup these infrastructure manually
- On-cloud : via Cloud admin console or cloud scripts (e.g. CFS, TFS)
- On-premises : using installation scripts provided by each tool.
Concerns & Observation
- Step “Infrastructure setup” is usually performed in an unorganized & ad-hoc manner.
- Sufficient amount of time is taken to set-up the complete infrastructure.
- For each environment, similar steps are repeated with different configurations and the same amount of time is invested in those repeated tasks.
- Because of manual intervention, many-a-times human mistakes are committed.
- All these concerns & observations are actually impacting efficiency, production and TCO (total cost of ownership).
Mitigation & way forward
- A smart tool can solve all above problems efficiently
- The tool can setup infrastructure for any environment (DIT, SIT, UAT, PT, Pre-Prod, Prod)
- The tool can setup infrastructure on any platform (On-premises : Physical, Virtualize, Containerized | Cloud : AWS, GCP, Azure, etc.)
- The tool can setup infrastructure as per pre-defined architecture templates.
Benefits
Product & services as outcome of platform
- Create my infrastructure (CMI) : This document is written to explains the solution blue-print of CMI.
- Create my business (CMB) : Blue-print for CMB shall be explained in separate document
- Create my user experience (CMUX) : Blue-print for CMUX shall be explained in separate document
Implicit benefit from overall platform journey
- Increased productivity & enhanced efficiency
- Time & Currency saving
- Skilled Developer’s community
- Engaging Academic Pool for development
- Promotion of Free & Open Source Software (FOSS) Community
Many problems get resolved automatically
- Dynamic system architecture diagram generation
- Dynamic functional architecture diagram generation
- Dynamic integration architecture diagram generation
- Water flow testing of entire platform
- Platform readiness testing before GO-LIVE
- Satellite view entire platform or component
- Software-architecture-as-code (SaaC)
- All of above fully or partially
Overall strategy
Detailed strategy for all below points shall be defined later, however high-level guideline will be following.
- Open-source strategy
- I am great admirer of open source software, hence I wish to develop CMI product as “Open Source Project” initiative
- Individual edition would be always part of “Open Source Project”
- Enterprise edition, “Open source” strategy would be decided in future
- Note : In every situation, CMI would be very close to Open-Source principles.
- Customer segment
- CMI product shall be developed for “Individual” & “Enterprise” segments. Initially CMI would be launched for the developers community.
- CMI product would be targeted for both kind of customers
- who want to setup CMI for completely fresh infrastructure (i.e. who don’t have IT setup)
- who want to setup CMI for their existing infrastructure (i.e. defining AS-IS legacy architecture into CMI)
- Product development strategy
- CMI product shall be developed in collaborated manner with help of developer community
- CMI product’s detailed blue-print shall be published to developer community
- Rewards strategy
- Contributors shall be rewarded for their contributions
- Reward criteria shall be defined in detail which will be based on many factors e.g. type of contribution, productivity etc.
- Contributor’s productivity shall be measured based on milestones achieved.
- Revenue model
- “Individual edition” would be free of cost however donation request for “Individual users” will also be promoted
- “Enterprise edition”, revenue model would be decided later
- Which could be either donation basis
- Or yearly very nominal subscription fee e.g. 10 USD for each non-prod and 50 USD for each production environment
- Note-1 : Difference between Individual & Enterprise edition can be Support license
- | OR |
- Note-2 : Some advance features/utilities can be available only in Enterprise edition
About author
Profile : Rajesh Verma – Brief profile
Source : link for this article here
Series : S1 (Architecture & design)
Episode : S1E2 ([S1-A&D] HLD : Create My Infrastructure)
Author’s approach : Rajesh wants to share his learning & experience gained throughout his career from various sources. Author started the series on architectural topics and this article is one of the episodes in that attempt. Author feels that lots of information is available on various forums, but scattered here & there. Episodes in this series will be designed for most of the relevant topics in architecture-&-design, published gradually and organized in logical sequence. Principally episodes will have linkage with other episodes, so that readers can have proper connection among the topics and would be able to correlate with ongoing activities in their software life. Topics for example will be related to functional architecture, integration architecture, deployment architecture, microscopic view of mostly architecture-building-blocks (ABBs), security guidelines & approach to comply, performance KPIs & engineering, git branch & DevOps enabled automation strategy, NFR aspects (e.g. scalability, high-availability, stability, resiliency, etc.), commonly used architecture styles & design patterns, cloudification approaches, multi-tenancy approach, data migration, channel-cutover & rollout strategy, process standardization & simplification, greenfield rollout & brownfield transformation journeys, etc.
Thank you for reading the post, please stay connected.
Small note on HLD (Solution Approach)
In order to keep the article size smaller, not sharing the entire solution-approach here. But the original document (Google Docs) will be available for all, interested & enthusiastic friends can follow the (Link of HLD document). For a long time, I was thinking of building this open-platform and [ABB cartridge] for each technology component, is the atomic component on the [CMI platform]. [ABB cartridge] is very much similar to [Provisioning-cartridges-in-Telecom] e.g. SIM-Activation-Provisioning-Cartridge, Change-SIM-Provision-Cartridge etc. for Telco operators. Technology components in any system architecture, in our architecture world is called [Architecture Building Blocks (ABB) (article on same here)] and [ABB-Cartridge] is the independent utility which can be download by user and execute in their infrastructure manually, or CMI platform can be allowed to executed in user’s infrastructure automatically.
No responses yet