Sustainable and Efficient Infrastructures With Micro Designed Infrastructure
A look at the concept of micro designed infrastructures (MDIs), how they aide in development, and their relation to techniques like DevOps and microservices.
Join the DZone community and get the full member experience.Join For Free
Technology decisions are difficult and serious, and can determine the success or failure of a project. How do you find the right technology stack? "Micro designed Infrastructures" (MDI) is a new approach that uses reminiscences from "Design Thinking" to develop an optimal, comprehensible, and company-wide recognized infrastructure or technology stack.
Technology and infrastructure decisions are challenging, because different requirements (company, application, future security, etc.) have to be combined and suitable solutions have to be found. In some cases, the complexity of a project is so high that best practice approaches of similar projects are applied, which, however, have a different context. This may result in decisions being made that ultimately do not fit the application or the company. The expectations of the management regarding costs and speed are not met and the deployment or the handover to IT operations becomes a stumbling block. How can this be prevented?
There are two approaches solving complex problems: a structured process for solving problems and splitting a large problem into smaller parts, each of which is easier and clearer to solve.
Structured Development of Solutions: Design Thinking
Design Thinking is based on the assumption that problems are better solved when people from different disciplines work together in an environment that encourages creativity. Together they develop an understanding of people's needs and motivations in order to derive concepts and solutions that are tested several times.
Part of this process are the steps empathy, definition, ideation, prototyping and testing. Design Thinking is used, for example, for the development of an application or the digitisation of a business unit.
Decomposing a Problem: Microblocks
The problem with IT services and applications is the complexity of the requirements, starting with the development, integration, and deployment processes and ending with data backup, IT security, and data protection. If an IT service is divided into individual parts, the specific requirements become more manageable.
A similar approach is used with Microservices in software development. So-called verticals divide an application into functional blocks that are loosely coupled. That simplifies the software development and increases the resilience of the solution. However, enterprise, IT operation, and data contexts are not considered thereby.
The Microblock (named in reference to Microservices) is a part of an IT service decoupled from other blocks, which fulfills a special function. This block must meet the following requirements:
- Clearly defined function.
- Not dependent on technology and infrastructure of other blocks.
- Standardized interface e.g. REST, HTML, SQL, DNS, etc.
- Can be changed/installed independently of other blocks
Design Thinking + Microblocks = Micro Designed Infrastructure
"Micro Design Infrastructure (MDI) applies design thinking to the infrastructure design of IT services. Any form of modular application or IT functionality is considered an IT service. This IT service is broken down into microblocks. These form the basis (in the sense of Design Thinking: Persona) for technology decisions.
The specific infrastructure and technology requirements are derived from the context of a microblock. With fewer but essential requirements, it is easier to make a suitable technology decision. It is important to consider every functional part of an IT service, not only the obvious ones such as application modules (microservices), but also access or PKI management, DNS, service discovery, monitoring, logging, and data backup.
The MDI process uses process steps based on design thinking: Understanding, definition, ideation, prototyping, and testing. In the sense of free unfolding, the steps do not have to be processed exactly in this order, it is much more important to create a framework that covers as many aspects of solution finding as possible.
Setup: Select Team and Environment
The composition of an MDI team is based on different IT disciplines. The aim is to be able to understand and evaluate all contexts and requirements of a service and the individual microblock. This includes IT management, architecture, development and operation, information security, and data protection. The team should consist of versatile people with outstanding expertise in their respective disciplines and broad and interdisciplinary knowledge.
Understanding The Problem
The aim of this phase is to gain an understanding of the process and data flow and to separate the IT service into microblocks. This phase should be carried out in parallel and together with the software architecture team. MDI team members share, discuss, and document the context in which they see a microblock.
Definition: Analyze the Requirements
Interfaces (type, protocol), data (input, sensitivity, quantity, output), processing (parallelization, programming language), monitoring (monitoring, KPI, log data) are part of a microblock that define the requirements. In addition, there are development and operating processes (deployment and integration). Finally, company-specific requirements are added (data protection, information security, cost specifications).
Ideation: Develop Possible Solutions
For each individual microblock, several ideas for a technology solution are developed, the only requirement being that the specifications must be met. By constantly questioning, it is checked whether the selection of a technology is objective and sensible. The 5-Why method, for example, is a good way of doing this.
Prototyping: Create a Prototype
When developing prototypes, automation should be used from the start, as it simplifies the reusability and configuration of microblock prototypes. For each prototype, health checks and automated security checks must be implemented.
Testing: Functional Check of the Service
In the last step the service is assembled from the microblocks. Functional tests and performance tests show whether each individual microblock behaves correctly in conjunction. If errors occur here, they must be analyzed in detail to find out the origin (e.g. overlooked requirements, unsuitable technology, errors in the structure of the prototype, etc.). It is jumped back to the corresponding process step and corrected. If everything behaves as desired, then nothing stands in the way of the go-live.
The aim of "Micro Design Infrastructures" is to develop an optimal infrastructure for IT services with a team of creative specialists. Due to the modular structure, the focus on separation of individual blocks and a high degree of automation, the number of required software environments can be reduced to a minimum and the costs of the service can be reduced.
If this approach is consistently applied in the company, microblock clusters based on the same technology are created, since the contexts will only slightly change (usually only the application context), decisions will most likely result in same technology. This results in a highly efficient infrastructure of core technologies.
Software architecture refers to the fundamental structures of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. The architecture of a software system is a metaphor, analogous to the architecture of a building. It functions as a blueprint for the system and the developing project, laying out the tasks necessary to be executed by the design teams.
Software architecture designs a rough outline of the components of a software, leaving aside the aspect of technology. MDI adds exactly this aspect to the software architecture. This means that Micro Design Infrastructures is not an alternative, but a complementary process that should run in parallel.
Microservices are a software development technique [...] that structures an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight. The benefit of decomposing an application into different smaller services is that it improves modularity. This makes the application easier to understand, develop, test, and become more resilient to architecture erosion.
Microservices mainly relate to application development. Applications are decomposed based on the application context with respect to vertical and horizontal scalability. Micro Designed Infrastructures (MDI) considers a more comprehensive context for defining and partitioning applications and defines a process for making comprehensible and enterprise-wide accepted decisions.
Independent System Architecture (ISA)
ISA is a collection of best practices based on experience in particular with microservices and Self-contained Systems and the challenges faced in those projects.
The principles defined in ISA are very similar to the idea of MicroBlocks in MDI. In addition, Micro Designed Infrastructures defines a process for developing infrastructures for IT services from these principles in context.
DevOps is a new term emerging from the collision of two major related trends. The first was also called "agile infrastructure" or "agile operations"; it sprang from applying Agile and Lean approaches to operations work. The second is a much expanded understanding of the value of collaboration between development and operations staff [...].
The agile admin
DevOps describes a culture of better cooperation. This culture is the basis of any constructive collaboration in IT, including Micro Designed Infrastructures. However, MDI provides specific processes and principles on how a specific problem can be solved through this collaboration.
Domain-Driven Design (DDD)
DDD is an approach to software development for complex needs by connecting the implementation to an evolving model. The premise of domain-driven design is the following:
- placing the project's primary focus on the core domain and domain logic;
- basing complex designs on a model of the domain;
- initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.
DDD has a similar approach to problem solving, especially by focusing on function and context. Mainly, elements in DDD are domain-based in contrast to the function-based microblocks used by MDI. This means that Micro Design Infrastructure is not an alternative, but a complementary process to DDD.
Self-Contained Systems (SCS)
The SCS approach is an architecture that focuses on a separation of the functionality into many independent systems, making the complete logical system a collaboration of many smaller software systems. This avoids the problem of large monoliths that grow constantly and eventually become unmaintainable. Over the past few years, we have seen its benefits in many mid-sized and large-scale projects.
SCS regards individual modules as autonomous web applications that contain both data logic and application logic. Each web application has its own user interface and is processed by separate teams. Micro Designed Infrastructures view technology decisions purely from a functional perspective. There is no reason to combine several functions. In addition, MDI defines a process to develop unbiased and creative infrastructures for IT services.
Published at DZone with permission of Kai Grotelueschen. See the original article here.
Opinions expressed by DZone contributors are their own.