MIS603 MICROSERVICES ARCHITECTURE ASSESMENT
MIS603 MICROSERVICES ARCHITECTURE ASSESMENT
By Name
Course
Instructor
Institution
MIS603 Microservices Architecture Assessment
Introduction
Microservices currently form the backbone of many enterprises across the globe. Without this technology, several revolutionary ideas and businesses would not have come to fruition. Having worked for 15 years as a certified solutions architect, my roles have included many microservice architect project design, development and maintenance processes. As information systems professional, part of my role over these years have included but not limited to designing available, cost-efficient, fault-tolerant and sustainably scalable microservice architecture systems. Over the years, I have effectively demonstrated knowledge and competencies on how to architect and deploy secure and robust applications. I have defined several solutions through architectural design principles centered on organization needs visa to vie their respective customer needs and expectations. I have provided many implementation guidance structures and protocols that outline best practices to all the organizations I have served as clients and this support service has been consistently encouraged throughout the life cycle of the project.
I have accumulated extensive knowledge, skills, and expertise in a microservices architecture. My abilities and achievements extend from using computers, networking, storage and database development, and management services. Also, with the understanding that microservices architecture is broad and complex, I have been able to put forward many protocols that help organizations to identify and define technical requirements for any microservice architecture-based application. The protocols enable organizations to design applications that meet specific technical needs and requirements based on the architectural principles of building cloud-based solutions. Microservices architecture is a global concept and thus an understanding of the Microservices architecture global infrastructure also comes in hand when defining problems and finding solutions to the problems. As interesting as all these sounds, Microservices architecture is a concept that has evolved through the years with increasing improvements in the frameworks and operation methodologies. This evolution has been closely tied to the evolution of computing and computers, part of which I have had a lot to say and do over the years.
The History of Software Development
The advancements seen the contemporary society including the dawn of the informational age, are directly attributable to the invention and evolution of software. Simply put, the software is a programmed instruction that is stored in the computers for execution by the processor. This technology was not availed to humanity until the 19th Century era where scholars like Charles Babbage and Allan Turing. Charles Babbage came up with the Analytical engine but had challenges developing the computer because his theory on the discipline had proved insufficient at the time. The breakthrough came when Allan Turing came up with a theory for what we now call software.
Turing’s ideas lead to the development and advancement of the two facets of technology; Computer science and software engineering, which are both, concerned with the study of software and its development. At the time Babbage had proposed the analytical engine that was to become a mechanical digital computer. The proposed concept described the analytical engine as a machine that has a memory store and a central processing unit. The analytical engine was to selectively perform functions based on the control assistance done by a program of instructions contained in punched cards connected with ribbons ((Bromley, 1998, Gobbo & Benini, 2013).
The modern computer and the present-day information systems significantly vary from the previous generations in several ways, including design, structure, functionality, and use. For example, Babbage’s analytical engine was aimed at processing numerical values and assisting with mathematical computations. This was a very limited functionality until Adda Lovelace came up with the modern programing language ADA. Beck then when Babbage worked on creating the Analytical engine, worked closely with Lovelace who foresaw the possibility of having a machine that could execute limitless functions including none numeric computations like musical composition rather than just performing mathematical calculations alone.
Unlike the present-day computers running sophisticated programs with highly efficient software, the earliest computers were analog. They required a mechanical operator who would be setting up the machine components and feeding in instructions for computational analysis. The most advanced computing technology at the time was Vannevar Bush’s differential analyzer. The analyzer was the first large-scale automatic general-purpose mechanical analog computer (Bush, 1931). The breakthrough came with Turing’s principle of the modern computer. Turing’s proposal envisioned a computer that has a limitless memory with a scanner moving back and forth, analyzing what it is given and writing further symbols and instructions that are stored in the memory in the form of symbols. This was a machine having the capabilities of operating on and modifying its program for optimum functional efficiency.
In 1994, the first fully digital computer called Colossus was availed. The Colossus was used successfully to decipher German radio communications. The first fully functioning electronic digital computer in the US was ENIAC. ENIAC was an advancement of Colossus and was more functionally flexible. Fast forward to the present day, we now have mainframe-computing machines capable of automated transaction processing. It is imperative to point out that the evolution of computers is tied to the evolution of software development and programming. The two work in a symbiotic fashion whereby as more and sophisticated modern computers were invented, the need for equally sophisticated and efficient software programs was needed to make these computers functional and operational. The modern computers operate via modern microservices architecture design systems and programs that enable the computer to perform multiple functions such as financial computations, word processing, database management, contact linking, emailing, music composition, music sharing, video creation, editing, and sharing, among other numerous functionalities.
Software architecture
Software architecture can be described as the major functional components of a software system and the process of developing and maintaining such software structures or systems. Software is comprised of several components including the software elements, the functional relationships between the components and the corresponding properties of each element concerning how they contribute towards the functioning of the whole software. To understand software architecture, one can consider looking at architecture in the general sense of building design and construction. As an analogy, abuilding architecture is a design blueprint that outlines all the components of the building and how each component is supposed to take like and function. Several people each with certain skills and expertise often work on the architecture.
Similarly, software architecture is just like building architecture. A collective of software engineers and computer scientists develops it by performing a need-based analysis of the problem at hand and come up with software architecture that would best suit and solve the problem, efficiently, cost-effectively and reliably. According to Subramanian, (2010), software architecture involves making many structural design choices. Some of these choices are always permanent and cannot be changed easily. The software architecture choices are informed by several factors including resource availability, the problem to be solved, the need for efficiency and sustainability, the preexisting software architectures, among other factors. To understand software architecture, let us consider Amazon Inc. as an example.
Amazon is among the top multinational corporations operating in almost all countries across the globe. The company operates an online E-commerce platform that collects and distributes goods to people. The company has a web-based platform and mobile application versions that offer the service functionality. To sell or order goods, one must register in the system. Part of the software architecture thus needed functionality for registration and database management that will accept and keep records of both the sellers and the buyers. To place an order, a customer would want to search for it and thus this informs another architectural choice. Also, once a customer has placed orders, he or she will need to pay. The platform is designed to automatically compute the value totals for all the selected items and then automatically ad shipping fees and other related charges necessary before the customer pays, meaning there has to be an infrastructure for facilitating accepting and processing money transfer.
Additionally, after an order is placed, the seller is notified about the sale Amazon accepts credit cards, PayPal and other money transfer technologies. These have been made possible as a result of a deliberate software architecture design choices concerning the prevailing needs and conditions of the business. These are but a few aspects of Amazon’s software architecture. The whole concept is an illustration of how the fundamental structural choices are made. All in all, part of the software architecture process involves the determination of the link and the functionality relationship and mechanisms between all the design choices so that the software functions efficiently and reliably as a whole.
Framework for Software architecture
While architecture is the abstract design concept of the software or a description of how the moving parts of the software are connected, the software architecture framework is the pre-built general or special purpose architecture that is usually designed to be extended. The framework, therefore, becomes the architecture of a foundation for software. For example, some frameworks deal with either augmenting or scaffolding. When it comes to scaffolding, the framework provides a prebuilt module that can be used or extended repeatedly without having to start from scratch every time. An example of a scaffolding framework would be the likes of Django, Pylons, and Codeigniter.
These elements make software implementation, and database connection processes simplistic and efficient. Frameworks dealing with augmenting on the other hand help in filling in missing pieces like a feature that originates from other languages among other extension functionalities. An example of an augmenting framework would be the Underscore Lib, which functions to extend the core functionality of JavaScript. The other augmenting frameworks include JQuery that helps with the process of querying the HTML DOM. JQuery has also created an avenue for adding and writing cross-browser compatible AJAX requests. A software framework thus exists to either augment or scaffold within the software architecture and deployment processes.
Importance of having the Software architecture
Software architecture as described earlier is like the plan that outlines all the aspects and decisions makes up software. It takes into consideration all the possible choices based on the requirements such as efficiency, reliability, performance, and security among other vital components. It identifies all the components of the systems and how each component relates and communicates with the others towards desired task completion. Having good software architecture is important in any contemporary business because it will form the basis for communication, ease decision-making and make the model reusable and easily transferable when there is a need (Orlov & Vishnyakov, 2017). The software architecture forms the basis of communication between all involved stakeholders in the enterprise including the management, the user-side, and the customers among others. Because some components of the business model cannot be changed once the decision is made, having software architecture will inform what the first decision should be made at the initial business development stages. Also, having software architecture makes it possible to reuse the code, transfer the model or readjust components easily without having to start from scratch, which can be very costly for an organization in the long term. Businesses that intend to keep up with the changing technological dynamics in the global economic sphere must, therefore, have good software architecture. For example, a decade ago, there was nothing like the blockchain technology, which is now becoming a common security feature application adopted by most companies. Incorporating such new technologies into the preexisting model is made possible through software architecture. Developers can reuse the code to incorporate the new technological additions rather than having to build a new system from scratch.
The main types of Software Architecture
Presently there are about six main software architecture variants. These include monolithic, Client-server, layering and stack, service-oriented architecture, software as a service and microservices architecture. Monolithic architecture, for example, is software that combines all the functions into one single file to make a tightly packaged application. Client-server architecture, on the other hand, is a software design that separates all the components into either the client or server component. Also, layering and stack architecture is one that facilitates the movement of data across networks. It is also important to point out that choosing between any of these software architecture variants means accepting both the advantages and the disadvantages that come with every one of them.
Conclusion
Software development and business development have become vital components that form the backbone of every global business. As the world adopted computer technology and Internet-based business modeling, the needs for revolutionary software architecture continue to rise. Having the understanding of the intricate details and the relationship between the two gives one an advantage and a strategic opportunity to try and predict the next technological frontier in software design and development and how that advancement will contribute towards streamlining business operations and reliability across the globe just as has been witnessed so far over the years since the invention of the first computer and software concept.
References
Bromley, A, 1998, Charles Babbage’s analytical engine, 1838, IEEE Annals of the History of Computing, 20(4), pp.29-45.
Bush, V, 1931, The differential analyzer. A new machine for solving differential equations, Journal of the Franklin Institute, 212(4), pp.447-488.
Gobbo, F, & Benini, M, 2013, From ancient to modern computing: A History of information hiding, IEEE Annals of the History of Computing, 35(3), pp.33-39.
Orlov, S, and Vishnyakov, A, 2017, Decision making for the software architecture structure based on the criteria importance theory, Procedia Computer Science, 104, pp.27-34.
Subramanian, N, 2010, Software architecture interference – an important non-functional requirement for software ecosystems, International Journal of Software Architecture, 1(1), pp.15-16.
Leave a Reply
Want to join the discussion?Feel free to contribute!