Master the Essential Skills to Become a Great Software Architect
This comprehensive guide outlines the mindset, methodology, general and professional skills, core architectural concepts, design principles, and essential tools needed for anyone aspiring to become a proficient software architect in modern technology environments.
Preface – Philosophical questions like "Who am I?" and "Where am I going?" are mirrored for architects as three key challenges: defining identity, clarifying responsibilities, and building a knowledge system.
General Skills
1. Methodology: set goals, devise methods, execute actions.
2. Thinking structures: Pyramid Principle, Structured Thinking, Systems Thinking.
3. Documentation: proficient with Excel and PowerPoint.
4. Collaboration: tools such as Trello, Slack, WeChat, regular meetings.
5. Communication, business understanding, planning and execution, project management, architecture reviews, code standards, code review, Kanban, SCRUM, Agile, XP, pair programming, FMEA.
Professional Skills
1. Fundamentals: computer basics, computer architecture, data structures & algorithms, OS concepts (process, thread, memory), networking, TCP/IP, HTTP, I/O models, socket programming.
2. Programming languages: Java (core libraries, exceptions, JVM tuning, concurrency, multithreading), PHP (core, frameworks, exception handling, deep kernel knowledge).
3. Design: high‑quality code (reusability, low coupling, extensibility, maintainability, performance, security), OOP, MVC, UML, design patterns, refactoring.
4. Development process: waterfall, agile, rapid iteration, wiki updates.
5. Security: web security (XSS, SQL injection, DDoS), HTTPS, security literature.
6. Linux, operations, monitoring, CI (Jenkins), automation (Ansible, SaltStack), virtualization (KVM, VM), containers (Docker), OpenStack, DevOps.
7. Databases: theory, normalization, MySQL internals and optimization, engines (InnoDB, MyISAM), NoSQL (Redis, MongoDB).
8. Common applications: web servers (Nginx, Apache, OpenResty, Tomcat, Jetty), message queues (RabbitMQ, RocketMQ, ActiveMQ, Kafka, Redis, ZeroMQ), RPC frameworks (Dubbo, Thrift, gRPC), load balancing (LVS, Keepalived, HAProxy), DNS load balancing.
9. Performance: optimization methodology, capacity planning, CDN, connection pools.
10. Big Data: Hadoop, Storm, Kafka Streams.
11. Engineering tools: Maven, Git, Jenkins.
Architecture Basics
1. Evolution: from LAMP on a single server to multi‑tier, caching, clustering, read/write splitting, reverse proxy, CDN, distributed storage, service decomposition, distributed services.
2. Patterns: layered architecture (application, service, data), vertical splitting, distribution, clustering, caching, asynchronous communication, redundancy, automation, security.
3. Core elements: high performance (frontend, application, database optimization), availability (redundancy, load balancing, backups, automated deployment, gray releases, monitoring), scalability (clusters, load balancing, cache distribution), extensibility (modular design, open‑closed principle), security (XSS, SQL injection, CSRF, firewalls, SSL).
Design Principles
Redundancy, rollback, monitoring, fault isolation, independent deployment, statelessness, mature technology, asynchrony, deprecation, degradation, rate‑limiting, horizontal scaling.
Layer Design
Access layer: DNS round‑robin, static/dynamic separation, reverse proxy (LVS, Nginx), CDN, security (DNS hijacking protection, rate limiting).
Application layer: RPC, MQ, async processing, connection pools, configuration center.
Database layer: high‑availability architecture, master‑master, master‑slave, read/write splitting, sharding.
Classic Internet Company Architectures
Examples from Google, Facebook, eBay, Amazon, Weibo, Baidu, Alibaba, Tencent, Meituan, NetEase covering distributed databases, file systems, high‑availability, Docker, front‑end, real‑time communication, logging, messaging, security, DevOps, AI, payment systems, etc.
Useful Tools & Resources
Technical sites: Hacker News, Reddit, MSDN, InfoQ, OSChina, 51CTO, Cnblogs, StackOverflow, GitHub, OpenStack e‑books, DevStore.
Books: "The Mythical Man‑Month", "Code Complete", "The Art of Computer Programming", "Design Patterns", "Effective C++", "TCP/IP Illustrated", etc.
Platforms: Redmine, Trac, Jenkins, Jira, Sonar, Git, SVN, GitLib, GitHub, Travis CI, Selenium, OpenQA.
Automation: Puppet, Nagios, Icinga, Ganglia, fleet.
Crawlers: PhantomJS, berserkJS, SlimerJS, CasperJS, Selenium.
Load testing: http_load, webbench, ab, Siege, squid, HAProxy, ElasticSearch, PageSpeed, YSlow, HAR Viewer, protractor.
Front‑end tools: Grunt, Sea.js, Knockout.js, Angular.js, Highcharts, Flot, Rickshaw, PDF.js, ACE, CodeMirror, NProcess, impress.js, Three.js, Hightopo, DataTables, Raphaël.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
ITFLY8 Architecture Home
ITFLY8 Architecture Home - focused on architecture knowledge sharing and exchange, covering project management and product design. Includes large-scale distributed website architecture (high performance, high availability, caching, message queues...), design patterns, architecture patterns, big data, project management (SCRUM, PMP, Prince2), product design, and more.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
