Tuesday, September 10, 2019

Conventional Architectures and Modern Architectures

Fundamental structure developed with a set of abstract layers that connect together to develop a logical body called as the architecture.  The architecture is a blueprint to develop a working system.  The architecture required to confirm conceptually the output of the physical (software or hardware) body to produce the required results.  The architecture are required because, it helps making fundamental structural choices that are costly to change once implemented.  Software architecture is the conceptual glue that holds every phase of the project together for all of its stakeholders. Architecture is an artifact for early analysis to make sure that a design approach will yield an acceptable system. By building an effective architecture, you can identify design risks and mitigate them early in the development process.
The architecture of a software system describes its major components and their relationships how they interact with each other. Software architecture and design includes several factors such as Organization Strategy and Guidelines, Market Agility, quality and security, open Standards, Standard Protocols, and IT environment and support as shown below.

In order to achieve the best results from the products, architecture defines a structured solution to meet all the technical and operational requirements, while optimizing the common quality attributes like performance and security with possible lease cost.

Business function of a company always look for innovative way to solve the daily problems.  Teams coming with innovative ideas to solve the business problem identified with business functions and capabilities of the new idea.  The products developed using those ideas. While developing products some architectural decisions made during the early phases of the innovation process.  To develop the business functional supporting product, the product architecture defines the components for a business, their configurations, and how are interconnected to implement using the technology.  Most widely accepted definitions of product architecture given by Ulrich () as “the scheme by which the function of a product is allocated to physical components,” more precisely as:
1.       the arrangement of functional elements
2.      the mapping from functional elements to physical components
3.      the specification of the interfaces among interacting physical components
The conventional architectures developed using the patterns that play an abstract role to develop the architecture blue print.  There are some famous patters given below are used by the industry for decades. 
·         Client- Service Architectures
·         Layered (N-tier) architectures
·         Event-driven architecture
·         Service Oriented Architectures
·         MVC Architecture for Web applications
·         Microservices architecture
Starting from the Client service architectures, which greatly supported for the product development approaches, continuous change and continuous need of evolvement of architectures, become part of daily routine of the IT world.
Even though the convention designs still used in the latest architectures, every architecture patter has its own advantages and disadvantages.  There are multiple high-level architecture patterns and principles commonly used in modern systems. These often referred to as architectural styles. The architecture of a software system is rarely limited to a single architectural style. Instead, a combination of styles often make up the complete system.
The architectures were not only limited to the software products, it also includes the software platforms.  “The software platforms majorly affected the recent thinking with cloud, big data, artificial intelligence, streaming approaches, and mobile platform support”. With the evolvement of the cloud bases services now the HAAS, PAAS, SAAS, DAAS, etc. patterns within the cloud stagey greatly appreciated by the IT world.  With the cloud solutions, every solution greatly supporting the market agility, quick go to market, and quick roll off while addressing the common concerns by using the expert level services is possible by separating the general operation and platform setup and security out of the core business while reducing the turnaround time and implementation cost. Similarly, the Streaming platforms designed to solve these problems in a modern, distributed architecture. The main benefits are Sending Right Message, transferring message fast, and scalable data integration.  The artificial intelligence is there in the computer world from the beginning.  However in the recent solutions it becoming possible to find out the new business pattern using the archived data, comparing the unstructured (images, voices) data, detailed insight analysis of data (medical x-ray, building damages, theft analysis using videos, facial expressions analysis, etc.) is becoming modern needs which ultimately causing to think the modern product architecture styles.
In simple, conventional product architectures used to think solving only the business problem, but the latest product architectures trying to analyse its own generated archive data and generate more business opportunities, it is also trying to support the operational teams by making self-decisions on scalability, informing the errors by alerts etc.
Irrespective of either the conventional or the recent architecture certainly follow the below five core steps to develop its architecture. However, the future analysis step may change to the traditional process improvement approach.
1.       Define – determine the goals (reduce time/cost, gain quality/flexibility etc.)
2.      Analyse – decompose the product specification into data elements and identify the associated business rules.
3.      Evaluate – conduct a gap analysis, compare existing and redesign process measurements, and build a credible business case.
4.      Implement – establish urgency for change, manage resistance, train staff, and implement the redesigned process.
5.      Control – create a dashboard of trend and control reports.
6.      Monitoring – Self monitoring and sending alerts in advance to take proactive actions
For the easy and quick software development, the design principles also follow:
1.       Maintainable - Easy way maintaining the code, deployments
2.      Testable – Easy and automated testing mechanisms
3.      Separation of Roles -- During development reducing the dependency among the teams is important by separating the "roles"
4.      Automated Deployments – Making easy and quick deployment with automating scripts
5.      Small components -- Websites with small components, micro services
6.      API – Sharing the corporate data securely over the API gateways.
7.      Rapid Development – Using reusable platforms and tools
8.     Integrated communication – It is important to have the correct and integrated communication and data sharing among the teams by using the integrated development platforms.

Conclusion:
Defining the architecture then developing the product by following it is highly adopted by the industry as the best approach.  This will help the business to fail fast with less cost, analyse with logical conclusions.  While developing a product analysing and using the latest trends and standards, as the best practices will help the products to sustain in the market for a longer time as it supports the future enhancements of the technology.  There is no single architecture that suitable for all products, so as the business changes its dimensions the technology and architectures keep change their dimensions and it continues.

The conventional approach built around the database, business logic, and presentation but the recent applications started thinking on cloud, big data, mobile, Artificial Intelligence, and Streaming aspects.