m (Admin moved page Vision to Intino)
mNo edit summary
 
(34 intermediate revisions by the same user not shown)
Line 1: Line 1:
The ultimate goal of Intino is to develop a distributed system following big data architecture principles. Every distributed system should begin with a clear definition of the system and its structure. By doing it, organizations can lay the groundwork for a successful distributed system. This approach ensures that all subsequent development aligns with the desired architecture, leading to a cohesive and maintainable solution.  
The ultimate goal of Intino is to develop a distributed system following [https://en.wikipedia.org/wiki/Big_data big data] and [https://en.wikipedia.org/wiki/Service-oriented_architecture service-oriented architecture] (SOA) principles. Every Intino software system should begin with a clear definition of its structure. By doing it, organizations can lay the groundwork for a successful project. This approach ensures that all subsequent development aligns with the desired architecture, leading to a cohesive and maintainable solution.  


Intino's approach to developing distributed systems is grounded in the principles of [https://en.wikipedia.org/wiki/Service-oriented_architecture service-oriented architecture] (SOA), where the system is structured as a collection of services that communicate through well-defined interfaces. These services are designed to be loosely coupled yet functionally cohesive, allowing for greater flexibility and scalability. In line with this architectural strategy, Intino provides a series of frameworks that serve as foundational tools for extending functionality across its distributed system architecture. These frameworks are inherently extensible, offering a base structure and a suite of functionalities that specific modules or business units can customize and build upon according to their unique requirements. This approach not only facilitates the modular development of services but also enhances the ability of the system to integrate and adapt to changing business needs, thereby embodying the core characteristics of SOA.
This development [[Devops|lifecycle]] is enabled by the [[plugin|Intino plugin]] available, providing a seamless integration with the [https://www.jetbrains.com/es-es/idea|IntelliJ IDEA], which enhances the developer experience by offering tools and features tailored to the Intino framework.


== Frameworks ==
The system is structured as a collection of services that communicate through well-defined interfaces. These services are designed to be loosely coupled yet functionally cohesive, allowing for greater flexibility and scalability. In line with this architectural strategy, Intino provides a series of frameworks that serve as foundational tools for extending functionality across its distributed system architecture. These frameworks are inherently extensible, offering a base structure and a suite of functionalities that specific services can customize and build upon according to their unique requirements. This approach not only facilitates the modular development of services but also enhances the ability of the system to integrate and adapt to changing business needs, thereby embodying the core characteristics of SOA.
A framework in the context of software development is a comprehensive toolset that offers a structured way to build and manage applications. Unlike standalone libraries, frameworks dictate the architecture of your application. This [https://en.wikipedia.org/wiki/Inversion_of_control inversion of control], where the framework calls your code rather than your code calling the framework, simplifies the development of complex functionalities and ensures consistency across different parts of the application.


Intino provides a series of frameworks that serve as foundational tools for extending functionality across its distributed system architecture. These frameworks are designed to be extensible, meaning they provide a base structure and set of functionalities that services can customize and build upon according to their unique requirements.
From a big data perspective, Intino follows the [https://en.wikipedia.org/wiki/Lambda_architecture lambda architecture] and [https://en.wikipedia.org/wiki/Event-driven_architecture event driving architectures]. The lambda architecture enables the processing of both real-time and batch data by combining batch processing and stream processing. Event sourcing principles focus on capturing all changes to application state as a sequence of events, which can then be replayed to reconstruct past states or analyze data trends over time. By integrating these principles into its distributed system architecture, Intino aims to effectively handle large volumes of data, support real-time processing, and maintain a comprehensive record of application state changes for analysis and insight generation.


The essential services that every distributed system should include:
== Infrastructure Services ==


* '''Federation:''' supported by [[amidas|Amidas framework]], which provides the infrastructure and tools necessary for implementing robust federation services, including user registration, authentication, and authorization processes.
The essential services that conform the infrastructure of every distributed system include:
*'''Analytics:''' supported by [[sumus|Sumus framework]], which is specifically designed to handle the complexities of business intelligence services.
 
*'''Taskhub:''' supported by the [[monet| Monet framework]], which addresses the need for handling manual tasks within automated workflows.
* '''Federation:''' supported by [[amidas|Amidas framework]], this service provides the infrastructure and tools necessary for implementing robust federation services, including user registration, authentication, and authorization processes.
*'''Business Units:''' supported by [[magritte|Magritte framework]] which is oriented the development of business models using the [[proteo|Proteo DSL]. Magritte facilitates the automatic generation of code based on these models, ensuring that the business logic is accurately implemented and maintained.
*'''Analytics:''' supported by [[sumus|Sumus framework]], this service is specifically designed to handle the complexities of business intelligence services.
*'''Taskhub:''' supported by the [[monet| Monet framework]], this service addresses the need for handling manual tasks within automated workflows.
*'''Datahub:''' supported by [[Ness|Ness framework]], this service is a central component that acts as the backbone for data management within the distributed system. The Datahub is supported by a [https://en.wikipedia.org/wiki/Message_broker message broker] that manages events, efficiently handling the ingestion, processing, and routing of events across the system. Additionally, it incorporates a [https://en.wikipedia.org/wiki/Data_lake datalake] where these events are stored. This datalake serves as a repository for structured and unstructured data
 
 
[[File:architecture.png | center | 350px | Architecture.]]
 
 
== Business Units ==
 
A [[Business_Units|business unit]] is an operational service that is responsible for specific functions. It serves as a self-contained division focused on delivering particular functions to meet the needs of the business. Essentially, a business unit acts as a smaller, specialized unit within a company, often with its own leadership, resources, and strategic objectives.
 
The development of [[Business_Units|business units]] follows the [https://en.wikipedia.org/wiki/Hexagonal_architecture_(software) Hexagonal architecture], a software design pattern aimed at organizing application logic while maintaining a clear separation between core functionalities and external interfaces. This architecture is composed of:
 
* Business Model, supported by [[magritte|Magritte Framework]], managing the core processes, rules, and operations at the heart of the application. It embodies the hexagonal architecture's principle of isolating business logic from external usages. This isolation ensures that business rules remain independent of external interfaces or data access methods. Magritte likely defines what are known as ports—interfaces through which the core business logic interacts. These ports are designed to communicate with external services or applications via adapters, which are managed by the Konos framework.
 
* [[Box_Pattern|Box]], supported by [[konos|Konos Framework]], is responsible for managing the adapters, which are the implementations that connect the application's ports to external services such as web interfaces, databases, or external APIs. This role involves overseeing the flow of data between the business core and these services, handling tasks such as data translation, formatting, and adherence to communication protocols. Additionally, Konos may support broader infrastructure needs, including security measures, data storage solutions, and possibly messaging and event-handling systems, all crucial for enabling efficient scaling across various environments.
 
== Archetype ==
 
Additionally, every distributed system should include the definition of the [[archetype|archetype]], containing the structure of directories and files within a software environment. It serves as a model for organizing data, resources, and configurations, providing a standardized definition of the system. Its utility lies in streamlining development, maintenance, and scalability efforts by offering clear guidelines for organizing files, facilitating collaboration among team members, simplifying troubleshooting and updates, ensuring consistency across deployments, and enabling the system to adapt and evolve over time to meet changing requirements. Essentially, it's a practical tool for efficiently managing complex software systems.
 
== DevOps ==
 
At Intino, the management of service lifecycles is seamlessly integrated into the [[Devops| DevOps]] vision, ensuring a smooth transition from development to deployment and beyond. DevOps practices, which emphasize collaboration, automation, and continuous improvement, are fundamental to how Intino handles the lifecycle of its services.
 
Central to this approach is the management of software artifacts—the building blocks of the services. Intino leverages robust tools like [https://maven.apache.org/ Maven] and [https://jfrog.com/artifactory/ Artifactory] to optimize artifact management, enabling efficient package handling and distribution throughout the development lifecycle.
 
Artifact management includes the storage, versioning, and retrieval of binaries and libraries generated during software builds. These artifacts play a fundamental role in continuous integration and deployment pipelines, facilitating consistency and agility in software delivery. However, Intino's approach extends beyond just application code and configurations. It includes the entire technological stack, including infrastructure components and the diverse needs of different business units. Whether it's managing [https://www.docker.com/ docker] images or orchestrating complex service dependencies, Intino's tools provide a comprehensive solution for versioning, storing, and retrieving all essential artifacts.
 
This integrated approach ensures that both the infrastructure and each business unit can consistently deploy and operate with the latest and most stable versions of software. By promoting reliability, scalability, and continuous improvement across the organization, Intino's DevOps-driven lifecycle management strategy underscores its commitment to delivering high-quality services efficiently.


== DSLs ==
== DSLs ==
A significant aspect of Intino's vision is its reliance on Domain-Specific Languages (DSLs). A DSL is a programming language tailored to a specific application domain. Unlike general-purpose programming languages, which are designed to be versatile and applicable to various tasks, DSLs focus on solving particular problems or tasks.
A significant aspect of Intino's vision is its reliance on Domain-Specific Languages (DSLs). A DSL is a programming language customized to a specific application domain. Unlike general-purpose programming languages, which are designed to be versatile and applicable to various tasks, DSLs focus on solving particular problems or tasks.


Intino provides a suite of specialized DSLs designed to streamline different facets of its technology framework, enhancing both development and operational efficiency.  
Intino provides a suite of specialized DSLs designed to streamline different facets of its technology framework, enhancing both development and operational efficiency.  


* '''[[proteo|Proteo]]''' is used for defining the business model, providing clear specifications of data structures and relationships critical for consistent application across platforms.  
* '''[[Ness#DSL|Ness DSL]]''' Ness focuses on creating the structure for the datalake, which is crucial for supporting big data analytics and real-time data processing. It also defines the taxonomy of events within the system, ensuring that events are categorized and managed effectively for easy retrieval and analysis.
* '''[[konos|Konos]]''' facilitates the integration of business logic with external services by defining layers that handle interactions, such as APIs, user interfaces, and business processes. For the deployment and management of software artifacts,  
* '''[[Proteo_DSL|Proteo DSL]]''' is used for defining the business model, providing clear specifications of data structures and relationships critical for consistent application across platforms.  
* '''[[legio|Legio]]''' orchestrates the project model, handling dependencies and configurations akin to a project object model.
* '''[[Konos_DSL|Konos DSL]]''' facilitates the integration of business logic with external services by defining layers that handle interactions, such as APIs, user interfaces, and business processes. For the deployment and management of software artifacts,  
* '''[[ness|Ness]]''' Ness focuses on creating the structure for the datalake, which is crucial for supporting big data analytics and real-time data processing. It also defines the taxonomy of events within the system, ensuring that events are categorized and managed effectively for easy retrieval and analysis.
* '''[[Plugin#Legio|Legio DSL]]''' orchestrates the project model, handling dependencies and lifecycle akin to a project object model.

Latest revision as of 21:03, 17 May 2024

The ultimate goal of Intino is to develop a distributed system following big data and service-oriented architecture (SOA) principles. Every Intino software system should begin with a clear definition of its structure. By doing it, organizations can lay the groundwork for a successful project. This approach ensures that all subsequent development aligns with the desired architecture, leading to a cohesive and maintainable solution.

This development lifecycle is enabled by the Intino plugin available, providing a seamless integration with the IDEA, which enhances the developer experience by offering tools and features tailored to the Intino framework.

The system is structured as a collection of services that communicate through well-defined interfaces. These services are designed to be loosely coupled yet functionally cohesive, allowing for greater flexibility and scalability. In line with this architectural strategy, Intino provides a series of frameworks that serve as foundational tools for extending functionality across its distributed system architecture. These frameworks are inherently extensible, offering a base structure and a suite of functionalities that specific services can customize and build upon according to their unique requirements. This approach not only facilitates the modular development of services but also enhances the ability of the system to integrate and adapt to changing business needs, thereby embodying the core characteristics of SOA.

From a big data perspective, Intino follows the lambda architecture and event driving architectures. The lambda architecture enables the processing of both real-time and batch data by combining batch processing and stream processing. Event sourcing principles focus on capturing all changes to application state as a sequence of events, which can then be replayed to reconstruct past states or analyze data trends over time. By integrating these principles into its distributed system architecture, Intino aims to effectively handle large volumes of data, support real-time processing, and maintain a comprehensive record of application state changes for analysis and insight generation.

Infrastructure Services

The essential services that conform the infrastructure of every distributed system include:

  • Federation: supported by Amidas framework, this service provides the infrastructure and tools necessary for implementing robust federation services, including user registration, authentication, and authorization processes.
  • Analytics: supported by Sumus framework, this service is specifically designed to handle the complexities of business intelligence services.
  • Taskhub: supported by the Monet framework, this service addresses the need for handling manual tasks within automated workflows.
  • Datahub: supported by Ness framework, this service is a central component that acts as the backbone for data management within the distributed system. The Datahub is supported by a message broker that manages events, efficiently handling the ingestion, processing, and routing of events across the system. Additionally, it incorporates a datalake where these events are stored. This datalake serves as a repository for structured and unstructured data


Architecture.
Architecture.


Business Units

A business unit is an operational service that is responsible for specific functions. It serves as a self-contained division focused on delivering particular functions to meet the needs of the business. Essentially, a business unit acts as a smaller, specialized unit within a company, often with its own leadership, resources, and strategic objectives.

The development of business units follows the Hexagonal architecture, a software design pattern aimed at organizing application logic while maintaining a clear separation between core functionalities and external interfaces. This architecture is composed of:

  • Business Model, supported by Magritte Framework, managing the core processes, rules, and operations at the heart of the application. It embodies the hexagonal architecture's principle of isolating business logic from external usages. This isolation ensures that business rules remain independent of external interfaces or data access methods. Magritte likely defines what are known as ports—interfaces through which the core business logic interacts. These ports are designed to communicate with external services or applications via adapters, which are managed by the Konos framework.
  • Box, supported by Konos Framework, is responsible for managing the adapters, which are the implementations that connect the application's ports to external services such as web interfaces, databases, or external APIs. This role involves overseeing the flow of data between the business core and these services, handling tasks such as data translation, formatting, and adherence to communication protocols. Additionally, Konos may support broader infrastructure needs, including security measures, data storage solutions, and possibly messaging and event-handling systems, all crucial for enabling efficient scaling across various environments.

Archetype

Additionally, every distributed system should include the definition of the archetype, containing the structure of directories and files within a software environment. It serves as a model for organizing data, resources, and configurations, providing a standardized definition of the system. Its utility lies in streamlining development, maintenance, and scalability efforts by offering clear guidelines for organizing files, facilitating collaboration among team members, simplifying troubleshooting and updates, ensuring consistency across deployments, and enabling the system to adapt and evolve over time to meet changing requirements. Essentially, it's a practical tool for efficiently managing complex software systems.

DevOps

At Intino, the management of service lifecycles is seamlessly integrated into the DevOps vision, ensuring a smooth transition from development to deployment and beyond. DevOps practices, which emphasize collaboration, automation, and continuous improvement, are fundamental to how Intino handles the lifecycle of its services.

Central to this approach is the management of software artifacts—the building blocks of the services. Intino leverages robust tools like Maven and Artifactory to optimize artifact management, enabling efficient package handling and distribution throughout the development lifecycle.

Artifact management includes the storage, versioning, and retrieval of binaries and libraries generated during software builds. These artifacts play a fundamental role in continuous integration and deployment pipelines, facilitating consistency and agility in software delivery. However, Intino's approach extends beyond just application code and configurations. It includes the entire technological stack, including infrastructure components and the diverse needs of different business units. Whether it's managing docker images or orchestrating complex service dependencies, Intino's tools provide a comprehensive solution for versioning, storing, and retrieving all essential artifacts.

This integrated approach ensures that both the infrastructure and each business unit can consistently deploy and operate with the latest and most stable versions of software. By promoting reliability, scalability, and continuous improvement across the organization, Intino's DevOps-driven lifecycle management strategy underscores its commitment to delivering high-quality services efficiently.

DSLs

A significant aspect of Intino's vision is its reliance on Domain-Specific Languages (DSLs). A DSL is a programming language customized to a specific application domain. Unlike general-purpose programming languages, which are designed to be versatile and applicable to various tasks, DSLs focus on solving particular problems or tasks.

Intino provides a suite of specialized DSLs designed to streamline different facets of its technology framework, enhancing both development and operational efficiency.

  • Ness DSL Ness focuses on creating the structure for the datalake, which is crucial for supporting big data analytics and real-time data processing. It also defines the taxonomy of events within the system, ensuring that events are categorized and managed effectively for easy retrieval and analysis.
  • Proteo DSL is used for defining the business model, providing clear specifications of data structures and relationships critical for consistent application across platforms.
  • Konos DSL facilitates the integration of business logic with external services by defining layers that handle interactions, such as APIs, user interfaces, and business processes. For the deployment and management of software artifacts,
  • Legio DSL orchestrates the project model, handling dependencies and lifecycle akin to a project object model.