软件架构师知识图
掌握一门
编程语言 寻求掌握 1-2 种编程语言,例如 Java、Python、Golang、JavaScript 等。
工具
熟练使用 GitHub、Jenkins、Jira、ELK、Sonar 等关键工具。
设计原则
了解重要的设计原则,如 OOPS、Clean Code、TDD、DDD、CAP 定理、MVC 模式、ACID 和 GOF。
架构原则
精通多种架构模式,如微服务、发布-订阅、分层、事件驱动、客户端-服务器、六边形等。
平台知识
了解多个平台,例如容器、编排、云、无服务器、CDN、API 网关、分布式系统和 CI/CD
数据分析
建立数据和分析组件的扎实知识,例如 SQL 和 NoSQL 数据库、Kafka 数据流解决方案、对象存储、数据迁移、OLAP 等。
网络和安全
了解网络和安全概念,例如 DNS、TCP、TLS、HTTPS、加密、JWT、OAuth 和凭证管理。
支持技能
除了技术,软件架构师还需要一些支持技能,例如决策、技术知识、利益相关者管理、沟通、估计、领导力等。
公司如何将代码运送到生产环境?
以下是从规划到生产的 11 个步骤:
产品负责人通过在 Jira 等工具中创建用户故事来启动整个过程。
开发团队执行 Sprint Planning 活动,并将用户情景添加到 Sprint。
开发人员处理分配的故事。故事完成后,他们将代码提交到 Git 并将其推送到 GitHub。
Jenkins 通过测试和质量检查工具(如 JUnit、Jacoco 和 SonarQube)构建和运行代码。
如果构建成功,则会将其存储在 artifactory 中,例如 JFrog。Jenkins 还通过 Docker 将构建部署到开发环境。
接下来,该功能将部署到 QA 环境中。由于多个团队可能正在使用同一个代码库,因此将创建多个 QA 环境
QA 团队使用特定的 QA 环境并运行多种测试类型,例如 QA、回归和性能。
QA 验证完成后,功能将部署到 UAT(用户验收测试)环境。
UAT 测试验证功能是否满足用户的要求。
UAT 测试成功后,构建将成为候选版本。它们根据特定计划部署到生产环境。
SRE 团队使用 ELK 和 Prometheus 等工具来监控生产环境并在出现问题时处理警报。
提高 API 性能的 5 大常用方法
结果分页
该方法用于优化大型结果集,将大型结果集推流回客户端,增强服务响应能力和用户体验。
异步日志记录
此方法涉及将日志发送到无锁缓冲区并立即返回,而不是在每次调用时都处理磁盘。日志会定期刷新到磁盘,从而显著降低 I/O 开销。
数据缓存
经常访问的数据可以存储在缓存中以加快检索速度。客户端在查询数据库之前检查缓存,Redis 等数据存储解决方案由于内存中存储而提供更快的访问。
有效负载压缩
为了减少数据传输时间,可以压缩请求和响应(例如,使用 gzip),从而加快上传和下载过程。
连接池
该技术涉及使用打开的连接池来管理数据库交互,从而减少每次需要加载数据时与打开和关闭连接相关的开销。该池管理连接的生命周期以实现高效的资源使用。
简化的 Git 工作流程
学习 Git 是每个开发人员的基本技能之一。以下是简单而基本的 Git 工作流程中的步骤。
开发人员的工作目录 (未跟踪) 到暂存区 (索引)
相同的命令是git add
。文件从未跟踪变为暂存。
暂存区到本地存储库(头)
此移动的命令是 git commit -m message
。它将更改保存到本地存储库 (HEAD),并标记版本历史记录。
本地存储库到远程存储库 (Remote)
此移动的命令是 git push
。它将提交的更改上传到远程存储库(例如 GitHub 上)以进行协作。
远程仓库到本地仓库
命令 git pull
和 git fetch
有助于解决这个问题。git pull
使用远程更改更新本地文件。另一方面,git fetch
检索远程更改,但不合并它们。命令 git merge
组合来自不同分支的更改。
检查差异
命令 git diff HEAD
显示开发人员的工作目录和最新提交之间的差异。