With the individuation of user demand and the shortening of product life cycle, the micro-service architecture is the inevitable direction of future development of software software architecture towards flexibility, expansibility, scalability and high availability. At the same time, the popularity of container virtualization technology represented by Docker will greatly reduce the cost of implementation of microservices, and provide a solid foundation and guarantee for the landing of micro services and large-scale use.
The birth of micro-services
The MicroServices architecture (Microservice Architect) is an architectural model that advocates the partitioning of monolithic architectures into a small set of services, where services are coordinated and matched to provide the ultimate value to the user. Each service runs in its own process, and the service and service communicate with each other using a lightweight communication mechanism. Each service is built around a specific business and can be deployed independently to the production environment, the production environment, and so on.
Although the micro-service architecture has not been born long, its frequency in speeches, articles and books has made many people aware of its impact on the software architecture field.
In fact, the birth of micro-services is not accidental. It is the rapid development of the Internet, agile, lean, continuous delivery methodology, the fast development of virtualization technology and DevOps culture, and the traditional monolithic architecture can not adapt to the rapid change of multiple factors such as the creation of the product:
Background 1: The rapid development of the Internet industry
Over the past ten years, the internet has made a tremendous change in our lives. Shopping, taxi, ordering, payment, even nail, car wash, think of, unexpected activities can be done through the Internet, more and more traditional industry companies are also beginning to rely on Internet technology to build its core competitive advantage. Products in the Internet age usually have two types of characteristics: rapid demand changes and a large user base. In this case, how to build a flexible and extensible system from the perspective of system architecture to quickly respond to the change of requirements, and how to ensure the scalability and high availability of the system is a challenge to the system architecture as the number of users increases.
Background 2: Agile, lean methodologies
Throughout the past decade of the IT industry, the values, methodologies, and practices of agile, lean, and continuous delivery have made many organizations aware of the importance of reacting to market changes and increasing responsiveness. Lean Entrepreneurship (Lean startup) helps organizations analyze and build minimal deliverables (Minimum viable product) through iterative continuous improvement, agile methodologies that help organizations eliminate waste, continue to find the right direction through feedback, and continuous delivery to help organizations build faster, more reliable, Delivery mechanisms that can be published frequently. After the implementation and experiment of these methodologies and practices, most organizations have basically formed a set of delivery systems that can be followed, referenced and implemented in a macroscopic sense. At this point, the need to refine and improve every detail becomes more intense. The so-called details are similar to how to find flexible, scalable architecture, how to use more effective technology, tools to solve business problems and so on.
Background 3: Virtualization technology and the rapid development of DevOps culture
The rapid development of virtualization technology and infrastructure automation (Infrastructure as Code) greatly simplifies infrastructure creation, configuration, and system installation and deployment. For example, the maturity of the cloud platform and the use of tools like Chef, Puppet, ansible, etc., enable more infrastructure to be dynamically created in an automated way. At the same time, the development of containerized technology and the advent of Docker, but also the virtualization technology to an unprecedented climax. In addition, the implementation of the DevOps culture has broken the barriers between traditional development and operations, helping organizations to form more efficient delivery teams that are highly collaborative in their development and operations. These technologies and the rapid development of culture, to a great extent, solve the traditional environment to create difficult, difficult to configure and the ' last kilometer ' deployment difficult, delivery difficult, and become one of the important factors to promote the birth and development of micro-services.
Background 4: Challenges faced by monolithic architecture systems
A few years ago we were familiar with the traditional IT system, also known as a monolithic architecture system, is based on technical stratification, such as the logical layer, data layer. However, with the personalization of user demand, the product life cycle is short, the market demand is not stable and other factors, the single-block architecture system is facing more and more challenges. Therefore, how to find a more effective, more flexible, more adaptable to the current needs of the Internet era of system architecture, become the focus of attention.
Therefore, the birth of micro-services is not accidental, is a multi-factor driven by the inevitable outcome.
microservices and SOA
SOA Brief
As early as 1996, Gartner presented a service-oriented architecture (SOA). SOA states that "for complex enterprise IT systems, a set of feature-related functional providers should be organized together to provide services to consumers in accordance with different, reusable granularity," which is designed to solve the problem of information silos caused by the inability to interconnect different IT resources within the enterprise.
In the 2002, SOA was called "one of the most important topics in modern application development", which is helping enterprises to integrate IT resources into operational, standards-based services from a resource-leveraging perspective so that they can be re-assembled and applied.
However, due to the generalized nature and abstraction of SOA itself, there are different perceptions and understandings of SOA in the very long period of its birth.
Until around 2000, the advent of such technologies as the ESB (Enterprise Service Bus), WebService, and soap have led to the gradual landing of SOA. At the same time, more vendors, such as IBM, Oracle and so on, are also proposing SOA-based solutions or products.
microservices and SOA
In fact, the microservices architecture is not a completely new concept. By carefully analyzing the concept of SOA, you will find that it is almost identical to the idea of microservices we are talking about today. After all these years of SOA, why did you propose a micro-service architecture?
In view of the rapid development of the Internet industry over the past more than 10 years, as well as the deep rooted of agile, continuous integration, continuous delivery, DevOps, cloud technology, service architecture development, testing, deployment, and monitoring, the main differences are different from the traditional SOA implementations we mentioned, as shown in the following table:
SOA Implementation |
Micro-service Architecture Implementation |
Enterprise-class, top-down implementation |
Team-level, bottom-up implementation |
Services are made up of multiple subsystems and are of large granularity |
A system is split into multiple services, with granular granularity |
Enterprise Service bus, centralized service architecture |
No centralized bus, loose service architecture |
Integrated approach complex (ESB/WS/SOAP) |
Simple Integration Method (Http/rest/json) |
Single-block architecture system, interdependent, complex deployment |
Services can be deployed independently |
MicroServices are more flexible, scalable, and scalable than traditional SOA implementations, emphasizing an independent test, standalone deployment, and standalone software architecture model.
definition of microservices architecture
In fact, even if you understand the above introduction, it is difficult to the next precise definition of micro-services. Like NoSQL, we've been talking about a few years of NoSQL, knowing what nosql means, or choosing a different NoSQL database based on different scenarios, but it's hard to define it next. Similarly, about what is ' functional programming ', there is more or less the same dilemma. We can easily choose different functional programming languages to easily write code for functional programming styles, but it is difficult to define the next exact definition of what is functional programming.
In fact, from the industry's discussion, the microservices themselves do not have a strict definition. However, ThoughtWorks's chief scientist, Mr Martin Fowler's description of microservices, seems more specific, relevant and understandable:
Micro-Service Architecture:
A microservices architecture is an architectural pattern that advocates dividing a single application into a small set of services that are coordinated and co-ordinated to provide the ultimate value to the user. Each service runs in its own separate process, with a lightweight communication mechanism between the service and the service (usually the restful API based on the HTTP protocol). Each service is built around a specific business and can be deployed independently to the production environment, the production environment, and so on. In addition, a unified, centralized service management mechanism should be avoided as far as possible, and for a particular service, it should be built according to the business context, choosing the appropriate language and tools.
To summarize, the core part of the MicroServices architecture includes the following points:
Small, and focused on doing one thing;
In an independent process;
A lightweight communication mechanism;
Loosely coupled, standalone deployment.
Summary
With the rapid development of the market and the continuous expansion of the business, the application of single-block architecture is facing more and more challenges, and its reconstruction and reconstruction is imperative. The birth of the micro-service architecture is a comprehensive product of the rapid development of the Internet, the application of virtualization technology and continuous delivery and devops. With the individuation of user demand and the shortening of product life cycle, the micro-service architecture is the inevitable direction of future development of software software architecture towards flexibility, expansibility, scalability and high availability. At the same time, the popularity of container virtualization technology represented by Docker will greatly reduce the cost of implementation of microservices, and provide a solid foundation and guarantee for the landing of micro services and large-scale use.
Source: >
Deep Solution microservices Architecture: From the past to the Future | Architecture (2015-07-15)