After this period of reflection and collation, finally to a more clear understanding of the structure. Architecture is the product from scratch and slowly grow up in the process of all the required technical system collectively, the architectural process:
- Configuration, coding, testing, operations, monitoring and analysis, security, operations and a series of technical system selection, trade-offs
- Plan, design, implement, iterate and formulate relevant specifications on the basis of technology selection
- Relevant technologies and specifications are applied to the entire process of product development and iterative optimization of the architecture during product iteration
Architecture is not just a framework for technology, like someone who uses spring to think I'm an architect, but it's not that simple. We do a Sina Weibo similar products for example, the reality should be this:
- Product early, the classic lamp rapid development to achieve the first version, the function is extremely simple is to add friends, send messages, developers have only a small team. At this time the architecture is embodied in the pure technology selection and implementation, including
- Configuration: Code is managed by Git and is temporarily free of other
- Coding: Technology selection for lamp, lamp-based development framework encapsulation, and development specifications within the development team
- Testing: Technician Manual Testing
- Operation and Maintenance: manual release, the main 2 units, MySQL also master prepared
- Monitoring: No need for temporary
- Security: Post filtering, masking
- Operations: Backstage Delete Posts
- As the user grows and the functionality increases, the product needs to iterate and the architecture needs to iterate. As product enhancements, performance needs to be optimized, and developers grow, there is a big change in the architecture:
- Configuration: Code through git management, to be divided into multiple modules, different teams to develop different modules
- Coding: Technology Selection increase cache, Message Queuing, search engine, and so on, framework packaging more complex, abstract the basic layer and service layer. Team to maintain code, and develop communication standards between different modules. Push-pull models are also extracted.
- Testing: Unit Testing + Automated Testing
- Operations: Batch automated release, rollback, support for grayscale publishing
- Monitoring: Increased flow monitoring, machine monitoring
- Security: Post filtering, masking, protection against other attacks
- Operations: Background Delete, Big V management and so on
- Once again, as users and traffic increase, the product changes again and the architecture changes again.
- Configuration: Code through GIT management, service, each service a single module, different teams to develop different modules
- Coding: Technology selection needs to consider the remote disaster tolerance, the level continues to extract, service granularity refinement, increase the open API, improve the push architecture.
- Testing: Unit Testing + Automated Testing
- Operations: Batch automated release, rollback, support grayscale Publishing, offsite data synchronization
- Monitoring: Increased traffic monitoring, machine monitoring, increased cache monitoring, etc.
- Security: Post filtering, masking, protection against other attacks, open API Rights Management Oauth2, prevent malicious calls
- Operations: Background Delete, Big V management and so on
As can be seen from the above example, the architecture is to follow the product iteration, and as the product becomes more and more complex, the inevitable need to constantly split, multi-team cooperation, operation and maintenance automation. Architecture also becomes the work of the team, not an architect to take care of everything.
Ali has evolved into a similar structure, with many different teams responsible for the development iterations of the infrastructure (middleware) and its architectural innovations. The business also has different teams responsible for developing different business modules, all of which use a unified architecture system. The Technical Support department maintains a unified Automation maintenance tool, and the Security Department maintains security tools. Different departments have their own architects, responsible for this part of the structure, but it is regrettable that there is no overall architect's perspective to promote the overall architecture evolution and the optimization of the various departmental architectures.
Architect Express-Architecture architecture