2022年写的BLOG我们来回顾下, 合计48篇, 总结概要如下:
架构篇
1. 《农产品供应链基于区块链架构设计》,属于智慧农业其中一部分。新冠肺炎疫情突然暴发后,以传统农贸市场为主导的农产品“生产—采购—销售”模式被暂停,供销渠道不稳定导致农副产品供应质量波动剧烈、供应品种单调。 加上城乡道路封闭、物流停运以及供货商停产造成农副产品销售受阻,生产资料、服务供应难以及时获取,严重干扰了农业的正常生产。尽管中国是新冠肺炎疫情防控最为成功的国家,但在缺乏免疫特效药的前提下,2021年年初我国国内出现多地零星散发和局部聚集性疫情交织叠加态势,疫情防控力度再次加大。 在当前疫情防控常态化、严格化的前提下,农产品供应链如何有效应对疫情并实现稳健发展,值得我们深思。
2. 边缘计算《利用Apache Pulsar的实时边缘计算》,Apache Pulsar是一个开源的、云原生的、分布式的消息传递和流媒体平台。Pulsar支持多种消息传递协议,包括MQTT、Kafka、AMQP和JMS。在NVIDIA Jetson Xavier NX上构建了多个网络摄像头和深度学习边缘边缘应用程序.
3. 《微前端架构介绍》是一种应用于前端的设计类型,它允许我们将其划分为更小的、独立的、半独立的应用程序,并一起工作。这种前端概念在很大程度上受到主要用于后台的微服务的启发。这种架构的目标是将网络应用视为一个功能的组合,每个功能都由独立的团队来完成。每个团队都有一个特定的业务领域,开发是端到端的,从数据库到用户界面。
4. 《Twitter系统架构参考》 Twitter历史架构也值得学习与参考,缓存,监控,解耦,搜索。
5. 《微服务设计模式》微服务可以对你的企业产生积极的影响。因此,值得了解如何处理微服务架构(MSA)和一些微服务的设计模式,以及,微服务架构的一般目标或原则:可扩展性,可用性,弹性,灵活性,独立、自主,分散的治理,故障隔离,自动配置.
6. 《当微服务是个坏主意时》 从单体迁移到微服务也不是一件简单的事情,而创建一个未经测试的产品作为一个新的微服务则更加复杂。只有在评估了其他路径之后,才应该认真考虑微服务。几乎所有成功的微服务故事都是从一个单体开始的,这个单体变得太大,被分解了。 模块化有助于设计更好的单体和微服务。如果没有精心定义的模块,我们要么落入传统的分层单体(大泥球),要么更糟糕,成为分布式单体,结合了单体和微服务的最糟糕的特征。模块化是过渡到微服务前的一个必要步骤,它可能是比微服务更好的解决方案。模块化单体与微服务中一样,通过将代码分割成独立的模块,解决了纠结的代码库问题。与微服务不同的是,微服务的通信是通过网络进行的,而单体中的模块则是通过内部API调用进行通信。
7. 《JQueue一个实现Outbox模式的库》 在微服务或任何其他基于事件的架构(event-driven-architecture)中,在一些用例中,一个服务可能需要我们对他们自己的本地数据库进行修改,同时发布一个事件。然后,该事件会被其他服务所消费。为了拥有一个一致的软件系统,这两个动作必须以原子方式执行。这两个动作都需要成功完成,或者都不需要完成。不应该有其他方法。JQueue的灵感来自于Yii2 Queue这个优秀的PHP库。优雅方法是使用收件箱模式(Outbox Pattern)。它通过使用一个数据库表(如果你的服务使用关系型数据库),通常称为发件箱表,来存储这些事件。在这种情况下,你能够将事件的插入SQL语句纳入用例本地事务。另一个运行器可以定期检查收件箱表是否为空,并通过将事件发布到消息代理中来处理这些事件。
8.《你需要知道的4个数据库扩展解决方案》 缓存数据库查询,数据库索引,数据复制,分片. 由于近年来的技术进步,我们拥有所有需要的工具,使扩展过程无缝和毫不费力。人们可以利用云服务提供商,如Azure、AWS或谷歌云来扩展他们的应用程序。然而,在进入可扩展性之前,人们需要考虑某些因素。我希望这篇文章能让你很好地理解与扩展相关的基本问题以及如何解决它们。
9. 《Redis流对比Kafka》 Redis现在有了5.0版本发布的 "Stream"数据结构.权衡:因为一切都在内存中,获得了无与伦比的处理速度,但它不适合存储无限制的数据量。使用Kafka,你可能愿意无限期地保存你的所有事件,但使用Redis,你肯定要存储最近的事件的固定窗口--只够你的处理器有一个舒适的缓冲区,以防止它们变慢或崩溃。部署和操作Redis时涉及的易用性和低成本.
10. 《6个减少Redis内存使用的高级技巧》 序列化,压缩,回落到基于磁盘的存储,规范你的存储, 过期和修剪数据,使用正确的驱逐策略.
11. 《架构遗留应用程序和现代化方案》 使得遗留的代码可以测试:删除多余的代码,使用工具对代码进行重构,进行小的、渐进的改变,将单体转变为微服务.很多遗留的软件应用程序缺乏自动化的单元测试,只有一些有足够的代码覆盖。另外,有一些遗留的应用程序在开发时甚至没有考虑单元测试的范围。由于这个原因,以后很难再增加测试。在遗留系统中,适当的单元测试应该是最重要的。这是因为单元测试是确保新的变化没有引入新的缺陷和功能仍然工作的支柱。小的增量修改有时是改善遗留代码库的正确方法。为了避免负面的后果,强烈建议编写和执行单元测试。封装。通过封装其数据和功能,利用和扩展应用程序的功能,通过API使它们成为可用的服务。重新托管。将应用程序组件重新部署到另一个结构(物理、虚拟或云),而不修改其代码、特征或功能。重构。重组和优化现有的代码(尽管不是其外部行为),以消除技术债务并改善非功能属性。替换。彻底消除以前的应用组件,并替换它,同时考虑新的要求和需要。Strangler模式是一种流行的设计模式,通过用新的服务取代特定的功能,将单体应用逐步转化为微服务。一旦新功能准备就绪,旧的组件就会被 "扼杀",也就是退役,而新的服务就会被投入使用。任何新的开发都是作为新服务的一部分完成的,而不是单体的一部分。
12.什么是松散耦合的架构? 软件技术迅速变化,迫使组织不断适应新的技术和趋势。当涉及到松散耦合与紧密耦合的架构时,信息流和服务之间的协调在紧密耦合的架构中会更好。然而,在对你的应用程序进行修改时,它们会限制你的灵活性。松散耦合的架构是当下的需要。它不仅允许你即时交换或扩展组件,而且还能帮助你在不影响现有系统的可用性和性能的情况下增加新的功能。通过微服务、精益开发和DevOps实践,松散耦合的架构让你在竞争中保持优势 散耦合的架构是一种软件应用程序开发模式,其中多个组件相互连接,但并不严重依赖对方。这些组件共同创建了一个总的网络或系统,尽管每个服务都是为执行单一任务而创建的独立实体。松散耦合架构的主要目的是创建一个不会因为单个组件的失败而失败的系统。面向服务的架构(SOA)通常由松散耦合的架构组成。松散耦合系统中的每个服务都被设计成具有单一的目的或责任,可以独立部署、管理、扩展和移除。每个服务都包含一个用于通信的接口(REST API)。由于每个服务可以使用不同的编程语言、平台、技术和框架,所以很容易对单个服务进行修改、执行测试、扩展服务和删除服务而不影响系统。松散耦合的架构容纳了广泛的API和与接口解耦的可互操作的资源模式。
运维篇
1.《AIOps案例介绍》 AIOps 以全局运营视角解读 IT 运维,整合告警事件、性能指标、日志和容量等多维数据,在 AI 算法平台的支撑下实现包括精准告警、异常检测、根因定位和容量分析等场景,助力企业数字化业务高效、稳定和顺畅运行,并能通过数据价值的提炼分析优化运营决策,彰显运维对业务的影响力。
2.《桌面高性能计算》是基于客户桌面结合AWS云计算实现高性能计算
3. 为什么你应该停止依赖Jenkins的插件? 有许多与Jenkins插件生态系统相关的反复出现的问题。第一个是无休止的升级和依赖性的循环。一个简单的项目可能需要超过25个不同的插件,因为你安装的每一个插件都可以安装其他插件,而这些插件是第一个插件工作所需要的。这就导致了这样一种情况:你可以安装两个插件,每个都需要相同的第三个插件来工作,而每个都依赖于第三个插件的不同版本,导致安装问题或错误。当你发现一个插件有安全漏洞时,更大的问题就出现了。 Jenkins和它的插件生态系统对于为他们的项目寻找CI/CD解决方案的人来说是非常有吸引力的。然而,维护不善的插件、多种不同的依赖关系和安全风险使许多人对这个工具感到失望。
4.《Docker健康检查为什么不要用curl或iwr》如果你依赖一个特定的工具,你的Docker文件就会变得不那么便携。如果你的应用程序是跨平台的,而且你使用的是多架构的镜像,那么依赖于操作系统特定工具的健康检查会破坏你的跨平台性。最好的情况是,你的镜像无法构建。最坏的情况是--镜像建立了,但它的健康检查在一个平台上总是失败(因为它试图在Windows上使用curl或反之亦然)。
5.2022年10个最好的自动化部署的基础设施即代码的工具 基础设施即代码(IaC)是将基础IT基础设施作为软件进行编码和管理的过程。它使DevOps团队能够自动管理、监控和配置资源,而不是手动配置各种各样的硬件设备和操作系统。IaC也被称为可编程的或软件定义的基础设施。Terraform,Ansible,Chef,Puppet,SaltStack,AWS CloudFormation,Vagrant,Pulumi.
6. 17个DevOps指标 软件开发的生产力一直是很难衡量的。与其他行业不同,编程行为并不容易并行化。开发过程是独特的,因为它需要技术和沟通技能的多样化组合,这就要求有一套专门的指标来跟踪团队的生命力。
项目管理
1.项目失败原因包含没有得到高层管理人员对项目的承诺,缺少组织对系统开发方法学的承诺, 走捷径绕过系统开发方法学,范围蔓延。
2. IT项目中组织过程资产 组织过程资产Organizational Process Assets 包括任何或全部与过程相关的资产,可来自任一或所有参与项目的组织,用于帮助项目成功。这些过程资产包括正式和非正式的计划、政策、程序和指南。过程资产还包括组织的知识库,如经验教训和历史信息。组织过程资产可能包括完整的进度计划、风险数据和挣值数据。项目团队成员通常有责任在项目全过程中对组织过程资产进行必要的更新和补充。
3. 辅导你的软件团队获得成功 软件开发人员的团队,需要独特的教练方法,因为他们的工作可能会变得过于分散。通过支持和鼓励协作和个人的进步,你将使你的团队走向团体的成功。 保持对行业趋势和发展的更新。每天抽出1到2个小时阅读你所在领域的材料,并使之成为一种习惯。关注相关的技术出版物。在社交媒体上关注你的同龄人。订阅相关的subreddits。建立一个由经验丰富的技术领袖和分析师组成的网络,以获得对当前和不断发展的技术的洞察力。不要忘记监测你的竞争对手如何改变他们的产品,以及他们使用的技术。了解你的团队正在使用或反对什么。
4. 需求分析-PIECES框架 PIECES框架是IT项目系统需求分析时的一个模型。PIECES框架能够完整、准确、快速地确定信息系统的需求,确认业务中存在的问题、机会和改进目标。
5.《如何管理分布式团队》 管理一个分布式开发团队需要一个完善的、细致的方法。乍一看,这样的模式可能看起来相当复杂和具有挑战性。然而,通过适当的组织、有效的项目管理以及强大的工具和技术,分布式团队模式为现代企业提供了许多机会
6.改进代码审查的10种方法 创建小型pull request,小批量的工作,将代码审查置于编写代码之上,用一个工具强制执行风格化,使用Linters,编写可读的代码,只做一件事,编写描述性的提交和PR信息
7.代码审阅CodeReview金字塔 自动化检查: 代码风格和单元测试,这个可以在代码提交时进行、并由SonarQube定期检查,着重于代码的简洁、可测试,可维护, 人工代码检查:主要关注文档、实现语义及API语义,着重于代码的性能、可扩展性、可靠性。
8.敏捷方法论及其运作的完整指南介绍 敏捷协助客户关系实现其最新的服务目标。开发人员和利益相关者可以用各种方法来处理软件开发生命周期(SDLC)。其中一个最好的方法是敏捷模式。它的主要重点是持续测试和开发迭代。敏捷方法论是以结果为中心的软件开发方法。它以敏捷宣言中的主要原则为基础。它包括与利益相关者的不断合作,以及在产品开发的每个阶段不断增强。有不同类型的敏捷方法学用于快速决策。敏捷通过缩短开发时间和提高生产力,帮助按时交付项目,使团队的工作变得简单。
产品篇
1.《低代码介绍与行业动态 》其是一款图形化、拖拉拽方式快速实现企业数字化转型中的创新应用、支持用少量代码扩展实现个性化需求的数字技术工具平台。
2.《智慧交通与车联网介绍》车联网可以利用 GPS 技术、惯导技术、车载摄像头、雷达及激光雷达实现高可靠高精度的定位服务和全工况、无盲区的感知外部信息,并可以利用实时的交管信息基于 AI 技术和数字化的道路基础设施实现城市智能交通控制技术、交通分析研判技术和车路协同技术在治堵等多交通领域的应用。交通控制技术主要是利用交通控制设施对交通流进行组织优化,并通过调节、诱导、分流来保障交通安全顺畅进行。5G 以及人工智能等新一代信息技术的发展浪潮处于高速发展的浪潮中,在汽车行业从传统机械设备朝着智能化、网联化方向发展过程中,车联网行业作为新一代信息技术与汽车行业的新结合体,正迎来明朗的发展机遇。
3. 《万物智能互联时代》 COVID-19疫情集中爆发期间,各类大数据、AI技术充分发挥作用,如确诊患者同行程查询,信息发布,物资调度等应用和平台的使用为疫情防控发挥了非常重要的作用,依托大数据和AI等技术构建城市大脑,搭建城市紧急状态下的联防联控系统和机制,必将成为在未来的城市建设中提升城市治理水平和效能的必要手段。
4. 《电商WMS介绍》电商wms是仓库管理系统的缩写,仓库管理系统是通过入库、出库、仓库分配、库存分配、虚拟仓库管理,综合应用批次管理、物料对应、储存盘点、质量检验管理、虚拟仓库管理、即时库存管理等功能的管理系统。我们观察行业竞品而思考。
AI
1. 《基于PyTorch的YOLOv5介绍》 YOLO算法使用卷积神经网络(CNN)模型来检测图像中的物体。该算法只需要通过给定的神经网络进行一次前向传播就能检测到图像中的所有物体。这使YOLO算法在速度上比其他算法更有优势.物体检测算法是一种能够在特定帧中检测某些物体或形状的算法。例如,简单的检测算法可能能够检测和识别图像中的形状,如圆形或方形,而更高级的检测算法可以检测更复杂的物体,如人类、自行车、汽车等。
云原生
1.《 Spring Boot服务中使用Kong Ingress控制器》 Kong Ingress Controller允许用户在现有的Kubernetes实施中包含Kong Gateway的功能,Kong Ingress Controller成为Kong Gateway和Kubernetes之间的中间件层。
2.《Apache APISIX云原生网关介绍》Apache APISIX 是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。Apache APISIX 作为云原生架构的开源 API 网关,可以为海量 API 和微服务提供安全可靠的动态、高性能、可扩展的管理平台。Apache APISIX 基于 NGINX 与 etcd,相较于传统的 API 网关,它提供了动态路由、插件热加载等诸多能力。
3.《实现Kubernetes可观测性的3个最佳工具》 一个管理和实施得当的可观测性系统为DevOps提供了细化的洞察力,可用于调试和治愈复杂系统。可观察性将监控、警报和日志与指标可视化及其分析相结合。它允许开发团队详细了解Kubernetes集群和应用程序的实时性能。
开发语言
1.《.netCore HttpClient正确用法》, 基.NET栈HttpClient 这个组件从.net framework延续到.net Core,在使用时稍微不注意,将引发性能问题。实际上文档已提及HttpClient 用于在应用程序的整个生存期内实例化一次并重复使用。
2.《使用Java Faker模拟测试数据》 Java Faker是一个易于使用的数据生成器库。它将你从为你的测试编制测试数据的负担中解脱出来。可以支持中文与扩展。
3.《在浏览器测试JavaScript的方法 》 测试JavaScript是一件很痛苦的事情。很多工具、技术和框架已经被开发出来,以使这个过程尽可能的不痛苦。其中一些工具如Mocha、Jasmine和Jest提供了一个测试结构,而其他一些工具如Istanbul和Blanket也会生成代码覆盖报告。在浏览器中测试JavaScript代码的不同方法有不同的前景和后果。很难将范围缩小到一个工具或技术上,来解决所有的问题!
4.《为JUnit测试提供高效的对象存储 基于Testcontainers的集成测试场景,自动化部署Mino用于集成测试依赖。单元测试场景我们更多推荐是隔离外部依赖。 Java编写的强大的Testcontainers库。Testcontainers是一个特殊的库,它支持JUnit测试,并提供轻量级的、可抛弃的普通数据库、Selenium网络浏览器和其他任何可以在Docker容器中运行的实例。
安全
1.《API安全的最佳实践 》其中安全项目(OWASP)发布了基于风险的十大漏洞建议,以确保网络API的安全。使用节流和速率限制,扫描API漏洞,对REST APIs使用HTTPS/TLS,限制HTTP方法,实施充分的输入验证,使用API网关。
软件测试
1.《软件测试中思维模型》我们研究一下不同的思维类型,以及每种思维类型如何在软件测试和各种测试活动的背景下应用。
2.《中小公司的软件测试过程现状与测试能力成熟度》 建立小而美的团队,团队中每个研发懂得软件测试的基本理论与基础,可以自行完成单元测试,接口测试,性能测试,甚至于安全测试。可使用 TMM测试能力成熟度等级 评估.
3.《渗透测试过程参考 》渗透测试,是一项在计算机系统上进行的授权模拟攻击,旨在对其安全性进行评估,是为了证明网络防御按照预期计划正常运行而提供的一种机制。不妨假设,你的公司定期更新安全策略和程序,时时给系统打补丁,并采用了漏洞扫描器等工具,以确保所有补丁都已打上。我们描述其实施过程。
4.《Bug驱动开发探讨 》Bug驱动开发( Bug-driven development)。尽管名字相同高大上,但实际上各位程序猿对它都不陌生。简单地说就是发现bug——消除bug——发现新的bug,这样一个不断循环的过程驱动着开发,是谓Bug驱动开发。
5.《Web应用程序渗透测试》 SSL和复杂的密码还是网络应用程序安全的全部,所以持续的警惕永远是真正安全的代价。Web应用程序开发人员和管理员必须了解如何渗透测试他们的系统,看看是否有任何已知的漏洞可以穿透他们的多层防御。要做到这一点,他们必须了解渗透测试过程的各个阶段,以避免留下任何安全漏洞。
6.《自动化测试框架Selenium对Cypress:Cypress替代Selenium?》Selenium已经成为几乎任何一种包括基于浏览器的应用程序的测试要求的首选测试框架。然而,随着自动化测试世界的不断发展,最新的工具已经出现了。其中最主要的是Cypress.io,一个自动化测试框架,正在成为Selenium的一个越来越流行的替代品。建议QA团队开始探索Cypress,观察它是否可以补充他们目前的Selenium脚本,以及增加他们完整的测试稳定性和覆盖率。如果你有一个稳定的Selenium套件,并且涵盖了足够的功能,就没有必要更换工具。如果你正在开始一个新的项目,也许用Cypress进行简单的POC可以证明对QA和开发者来说是一个更好的未来。
7.《混沌工程的入门 》通过执行混沌实验带来的价值,比如说: 识别故障和瓶颈, 弹性验证, 规模化验证.
8.《基于Docker的JMeter分布式压测》 分布式负载测试--我们需要1个主站和N个从站来产生巨大的负载。每台JMeter从机都需要安装特定版本的Java和JMeter。特定的端口应被打开,JMeter服务器应运行,准备并等待主站发送指令。使用docker创建测试基础设施是非常容易和快速的。我们把整个基础设施写在一个文件中,可以进行版本控制。
9.《基于StackHawk的API接口安全扫描介绍 》 安全测试有助于确保满足基本安全要求,包括用户访问、加密和身份验证。API 扫描背后的理念是精心设计输入,以发现 API 中的错误和未定义的行为,其在本质上是模仿潜在黑客的行为和攻击向量。API 安全测试从定义要测试的 API 开始。测试工具使用各种规范格式(包括 OpenAPI v2/v3、Postman Collections 和 HAR 文件)提供有关 API 的输入和输出的信息。API 安全测试使用此信息,根据 API 期望的输入来构建定制的模糊输入。API 安全测试输出报告,内容是关于在模糊化 API 时发现的漏洞或错误。这可能包括 SQL 和 OS 命令注入、授权/身份认证旁路、路径遍历问题和 OWASP Top 10 API 漏洞(包括身份验证失效、错误的安全配置和数据泄露)等结果。StackHawk是一家美国动态应用安全测试服务商,专注于帮助用户测试正在运行的应用程序、服务和API是否存在安全漏洞以及可利用的开源安全漏洞。
今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变
Openshift与Kubernetes的区别
如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。