Principles of a Digital Platform
Tags: platform, opensource, digital
Published: 2022-01-11 13:29:35

**Introduction**

This is the second text about platforms, now we will detail a digital platform from a technical point of view. If you haven't read the [first article](https://dev.to/lucasnscr/accelerating-business-with-platforms-2i8f), I recommend going over it, as it is an introduction to platforms and will bring more details from an operational point of view, where we discuss advantages, disadvantages and potential platforms within a business.

Now that we have a more detailed understanding of the topic, we are going to break down the specific layers of a digital platform, for that we are going to apply each step of this model with open source software, so we can be more generalists without being tied to cloud computing products or providers. , focusing only on architecture, technology, benefits and the responsibility that each division will have within this universe. The ideal of opting for this way of doing is that it allows us the creative freedom to use what is most convenient to your scenario, considering that the loose coupling allows us to implement and implement the steps mentioned later in this text of independently, remembering that if you want to take this build to your production, it is recommended to get commercial support.

**Digital Platform and its characteristics**

If you are already a technology professional, I believe you have already come across some terms that we will mention, but if you are not, I will detail each property that we choose to represent and that are essential for the operation of your business not to be compromised. , therefore, they are essential points that can be improved, but preferably not reduced. The main features are: **Low Coupling**, **APIs**, **Agile Methodology**, **Resilience**, **Modularization**, **Performance-Efficiency** and **Open source**.

**Low Coupling**

The term loosely coupled emerged in the mid-**1960s**, when **Larry Constantine** conducted a study of system modules and their definitions. Loosely coupled systems are better developed, this behavior provides ease in future functionality as it has a lower cost and lower risk. One of the essential points for this type of approach is its greater ease of understanding, which can be an interesting factor from the point of view of function domain, because in technology we know that there is a high turnover rate and that knowledge is in the empirical form of the construction of the solution. The advantages are extensive, testing and analysis of systems with this profile are faced in a much simpler way. There are **Patterns** that help loose coupling and Facade is one of them, providing **decoupling** and **abstractions**.

**APIs**

Applications protocol interface, better known as _API_. This form of integration emerged in the early days of computing and its application was widely used in the libraries of the first operating systems. It was only after the **1930s** that this form of integration expanded beyond local connections. Its main function is to allow communication between layers of your business without needing to know how it was implemented, here we have an example of loose coupling. The main gain of _APIs_ is the **simplification** in development, generating time **optimization** and **cost reduction**. An _API_ has the **flexibility** to serve the business and at the same time provide an opportunity for innovation. This type of communication provides secure access. There are several types of APIs that are categorized in a way: **Private**, **Partner** and **Public**. With the evolution of **Web 2.0** and **Web 3.0**, APIs became essential for the functioning of the **digital products** that we have today, normally the **HTTP** protocol is used for communication and its messages follow a standard that can be **XML** or **JSON**.

**Agile Methodology**

Developing software that meets technical requirements is essential for the life cycle and future maintenance, but the time to build a solution according to the **Time to Market** is essential for the product to reach the desired **expectations**. The agile method of development has as main objective the **delivery of a product with maximum quality in the shortest possible time**. To align these two objectives, planning is needed that prioritizes **prototype releases**, deliveries need to add value to the business and bring the end-user experience closer while still in the construction process. In **2001**, the agile manifesto was published, whose main objective is to prioritize the user and their interaction with the system in exchange for tools and processes.

**Resilience**

This is an extremely **important** topic that encompasses multiple practices. The summary of resilience in systems would be: t**he ability of a system to handle changes in a way that does not affect its operation**. It is important to say that we **hardly** have systems that are **fully resilient** to all types of adversity faced. To achieve the desired level of availability, we need to ask some basic questions and the answers will vary from product to product, the questions are: **What critical services does the system need to provide without interruptions?** **What kind of adversity can affect critical systems?** **What conditions must critical systems withstand?** Based on the answers, it is possible to map risks and think of solutions that aim to keep the operation intact at critical moments.

**Modularization**

Computational concept that consists of **division of responsibilities** over the system, part of this approach was exemplified when we talked about **loose coupling**. One of the advantages that this practice gives us is the **ability to detect errors** in the respective layers of systems, after all we will have a module responsible for covering a certain domain within the architecture. The **tests** are more **intensified** because you can apply several types of tests in a single point of the system, making your approval much more efficient, the practicality of maintenance does not compromise the ecosystem as a whole, you will be directed only in what is the responsibility of the function. **Parallelized development** so that different teams can work on the solution, gaining **performance in development**, **delivery** and **reuse**. Once a well-built functionality and generic behavior can serve other systems.

**Performance-Efficiency**

This topic covers two fronts because they need to be linked, because to **have performance you need efficiency and the same case for the opposite**. The premise of **performance is extremely essential** when we conceptually apply the idea of ​​**serving as many people as possible with as little resources as possible**. Thinking about performance ranges from the **adoption of processes and practices** that optimize the development team, thinking of features and that directly reflect on the end user, whether as a user experience or in their waiting time when requesting something within the system, the gain of time is essential on this topic. Efficiency, on the other hand, can be focused on resources, having a sustainable operating model that is flexible, scalable and that makes the business decision increasingly easier to apply and its result is obtained in the shortest possible time. Efficiency involves from the **adoption of rites** within the agile methodology, through the **computational environment** for operation and your choice for the **cloud provider** that is essential to support the peak demands of your business without burdening the operation from a financial point of view.

**Open Source**

Matrix of **innovation**, open source is not only an important point of this theme, but a determining factor for a **disruptive**, powerful solution with great **community engagement**. There are some points that are decisive when choosing Open tools, remembering that we are not recommending only this type of tool, but it is a stimulus to the community that has always shown itself to be a powerful aspect of innovation in technological solutions. Its benefits are: Possibility to try it without having to pay in advance, flexibility to modify to better suit your case, open source and low cost.