A Look Back Into Architecture and Service Mesh in 2020

What Is Architecture?

  1. Easy Development: An engineer is often expected to start R&D immediately after joining a team and be able to write readable code and build a simple and unified development environment. Imagine the hard work required to quickly get up to speed on an unfamiliar project. When we started to apply Docker to our development work, the architect at the time required that we write only a one-line command to start the local test environment by using Docker. In addition, this command had to be applicable to all microservices. We worked hard to finally complete the transformation, achieving a significant improvement in efficiency. Three years later, any new member of our team could obtain a local environment with complete dependencies simply by running the ./run-dev.sh command on a terminal.
  2. Easy deployment: A system is not very useful if it is costly to deploy. Even now, many enterprises are still using inextensible systems and expect them to keep running without any major faults. Many other enterprises use advanced orchestration systems like Kubernetes but have to release changes every Thursday when they need to deploy and launch applications. These enterprises do not adopt modern release methods, such as A/B testing, canary release, and phased release, because system transformation is costly or they cannot guarantee the appropriateness of modifications through sufficient automated testing, let alone implement continuous integration and continuous deployment (CI/CD).
  3. Easy O&M: DevOps is designed to shorten the cycle from R&D to O&M so that we can handle problems more easily and look beyond the tasks at hand to focus on products. This does not mean that every O&M engineer is expected to become a Java expert and be able to quickly locate problems through heap analysis. Here, we emphasize closed-loop capabilities during the O&M process. As regards software products, we hope to develop products that are sufficiently independent, autonomous, independently deployable, horizontally scalable, and fully observable. This is based on the fact that hardware costs today are far lower than manpower costs.
  4. Maintenance Costs: It is difficult to add new features to long-existing software. Similarly, it is difficult to determine whether to redevelop or refactor a long-running project. The real risk lies in the increased possibility of feature corruption due to code rewriting and the increase of technical workloads. Even when we redevelop some features and modules, we find it difficult to determine whether the rewritten code covers all the intended features and modules. In short, the principle “don’t break anything” is difficult to follow in coding.
  5. Evolution Capability: This is an important point. A well-designed architecture is able to facilitate the evolution of systems. This is like replacing the tire of a car, an easy change where you don’t have to worry about the framework, underlying database, and operating system. However, this is difficult in practice. When we select technologies for a project, we may choose some technologies over others to adapt to the features of a database. However, we must separate upper-level design from database features and handle these features as underlying details. We have to work out an approach to organize beans in Spring without dependency injection and decide on a type of system frontend, which can be web, mobile, or both.

Microservices as a Type of Software Architecture, with No Need for Extension

The Pros and Cons of Spring Cloud

Intrusion and Language Restrictions

Cloud-native Integration

Centralized Resources

The Fear of Platform Binding

Methodological Capabilities

Constant Evolution

Solutions and Problems of Istio and What Service Mesh Lacks

Elasticity and Automatic Recovery

Monitoring and Observability

Throttling and Downgrade Practices

Multiple Automatic Deployment Methods


Saga and Compensation Events

High Availability and Chaos Engineering


Original Source:



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store