Project Icon

awesome-software-architecture

精选软件架构文章与资源库

此项目提供一系列精选文章和资源,帮助学习和实践软件架构、模式及原则。内容涵盖Actor Model、Clean Architecture、微服务、CQRS等最新架构知识,并持续更新。适合软件工程师、架构师和技术爱好者,提升知识和技能,探索最新的软件架构趋势和最佳实践。

Awesome Software Architecture
build-status awesome license

Curated list of awesome articles and resources to learn and practice software architecture, patterns and principles. This repository will be updated continuously, keep yourself up to date .

I created this repository to share a set of links that I found valuable and inspiring and I share them with others to improve our knowledge together ✌️.

🚀 Go ahead to the official web page here: 🌐 https://awesome-architecture.com


Contents

Note: Bellow contents is not complete yet and it's in progress, and I will complete the descriptions over the time, but you are feel free to contribute this part.

Software Architecture

TopicDescription
Software ArchitectureSoftware architecture refers to the fundamental structures of a software system and the discipline of creating such structures and systems.

Actor Model Architecture

TopicDescription
Actor Model ArchitectureThe Actor Model is a programming paradigm in which the basic unit of execution is the actor. In the Actor Model, an actor does work by using messages to express actions upon a system or other actors within the given system
Akka .NETAkka.NET is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on .NET.
Microsoft OrleansOrleans is a cross-platform framework for building robust, scalable distributed applications.
ProtoActorUltra fast distributed actors for Go, C# and Java/Kotlin.

Algorithms

TopicDescription
AlgorithmsAn algorithm is a procedure used for solving a problem or performing a computation.

Clean Architecture

TopicDescription
Clean ArchitectureThe Clean Architecture is the system architecture guideline proposed by Robert C. Martin (Uncle Bob) derived from many architectural guidelines like Hexagonal Architecture, Onion Architecture, etc...

Onion Architecture

TopicDescription
Onion ArchitectureThe Onion architecture, introduced by Jeffrey Palermo, and it is a form of layered architecture and we can visualize these layers as concentric circles.

Hexagonal Architecture

TopicDescription
Hexagonal ArchitectureThe Hexagonal Architecture or Ports and Adapters architecture, introduced by Alistair Cockburn and it's an architectural pattern that allows input by users or external systems to arrive into the Application at a Port via an Adapter, and allows output to be sent out from the Application through a Port to an Adapter.

Vertical Slice Architecture

TopicDescription
Vertical Slice ArchitectureThe vertical slice architecture is a technique that helps us build maintainable applications by separating the application around features or vertical slices.

Event Driven Architecture

TopicDescription
Event Driven ArchitectureEvent-driven architecture is a software design pattern in which decoupled applications can asynchronously publish and subscribe to events via an event broker.

Service Oriented Architecture

TopicDescription
Service Oriented ArchitectureService Oriented Architecture (SOA) is a software architecture design pattern in which application components provide services to other components using a communication protocol over a network. SOA aims to achieve loose coupling between software components, allowing them to be easily replaced or updated without affecting the rest of the system.

Domain Driven Design

TopicDescription
Domain Driven DesignThe key concepts and principles of Domain Driven Design, which emphasizes the importance of building a software system around a shared understanding of the business domain and the use of ubiquitous language.
Value ObjectsThe concept of value objects in Domain Driven Design, which are immutable objects that represent a concept or measurement and are characterized by their value, rather than their identity.
AggregationThe concept of aggregation in Domain Driven Design, which is a way of grouping objects together to form a logical unit that can be treated as a single entity.
Anemic Domain ModelThe Anemic Domain Model anti-pattern in Domain Driven Design, which refers to a model where the domain objects contain little or no behavior and the business logic is instead implemented in separate services.
Rich Domain ModelThe Rich Domain Model pattern in Domain Driven Design, which advocates for placing behavior and business logic in the domain objects themselves, rather than in separate services.
Domain ModelThe Domain Model concept in Domain Driven Design, which is a representation of the core concepts, entities, and relationships that make up a business domain.
Domain ServiceThe Domain Service concept in Domain Driven Design, which is a stateless, transactional operation that performs a business task and is not associated with any specific entity.
Application ServiceThe Application Service concept in Domain Driven Design, which is responsible for coordinating the execution of multiple domain services to achieve a higher-level business goal.
Domain EventsThe Domain Events concept in Domain Driven Design, which are messages that represent a significant occurrence within the business domain and can be used to trigger downstream processes or updates to other systems.
Integration EventsThe Integration Events concept in Domain Driven Design, which are messages that represent a significant occurrence in the context of an external system and can be used to trigger downstream processes or updates to the local system.
Bounded ContextThe Bounded Context concept in Domain Driven Design, which is a way of dividing a large, complex business domain into smaller, more manageable parts that are defined by a common language, context, and set of boundaries.
InfrastructureThe Infrastructure concept in Domain Driven Design, which includes all the components and systems that support the operation of the application, such as databases, message brokers, and third-party services.
Tactical Design PatternsThe Tactical Design Patterns in Domain Driven Design, which are recurring solutions to common problems that arise when building domain models, services, and repositories.
Strategic Design PatternsThe Strategic Design Patterns in Domain Driven Design, which are high-level principles and patterns that guide the overall architecture and organization of a large, complex software system.
MappingsThe concept of mappings in Domain Driven Design, which are the mechanisms used to transform data between the domain model and other parts of the system, such as the database or user interface.
Domain PrimitivesThe Domain Primitives concept in Domain Driven Design, which are simple, immutable value types that represent basic concepts in the domain, such as dates, times, and quantities.
EnumThe Enum concept in Domain Driven Design, which is a special type of domain primitive that represents a discrete set of values.
Exception and ValidationThe concepts of exception handling and validation in Domain Driven Design, which are important mechanisms for ensuring the correctness and robustness of the application.

Data Driven Design

TopicDescription
Data Driven DesignData-Driven Design is a software development methodology that emphasizes the use of data and analytics to inform design decisions. It involves collecting, analyzing, and using data to create and improve software products, services, and experiences. This approach relies on empirical evidence to guide design choices, and it requires a strong data infrastructure and analytics capabilities. Data-Driven Design can help organizations create more effective, efficient, and user-friendly products and services by making informed decisions based on real-world data. It can also lead to better customer engagement, increased revenue, and improved user satisfaction.

CQRS

TopicDescription
CQRSCQRS (Command Query Responsibility Segregation) is a design pattern that separates the concerns of command execution and data querying in a system. The basic idea behind CQRS is to split the application model into two separate models: one for reading data and another for writing data. This allows the two models to be optimized for their specific purposes, and provides benefits such as better scalability, performance, and maintainability. The CQRS pattern is often used in conjunction with event sourcing, which is a technique for capturing all changes to an application state as a sequence of events. Together, CQRS and event sourcing can provide a powerful way to build highly scalable and fault-tolerant systems.

Microservices

TopicDescription
MicroservicesA brief introduction to the concept of microservices, including their benefits and drawbacks, as well as common characteristics of microservices architecture.
CommunicationAn overview of the different communication patterns and protocols that can be used in microservices architecture, such as synchronous vs. asynchronous communication, REST vs. message-based communication, and the use of service buses.
Composite UIA discussion of the Composite UI pattern, which involves combining multiple microservices into a single user interface, and the different approaches to implementing it, such as server-side composition vs. client-side composition.
Service BoundariesAn exploration of how to define and enforce service boundaries in microservices architecture, including strategies for identifying service boundaries and techniques for implementing them, such as domain-driven design and bounded contexts.
TestingA guide to testing microservices, including strategies for testing individual services and testing the interactions between services, as well as tools and frameworks for testing microservices.
API GatewayAn introduction to the concept of an API Gateway, which acts as a single entry point for clients to access multiple microservices, and the benefits and drawbacks of using an API Gateway.
API Gateway - AmbassadorA specific implementation of an API Gateway using the Ambassador open-source project, including an overview of its features and how to configure and deploy it.
API Gateway - KongA specific implementation of an API Gateway using the Kong open-source project, including an overview of its features and how to configure and deploy it.
API Gateway - OcelotA specific implementation of an API Gateway using the Ocelot open-source project, including an overview of its features and how to configure and deploy it.
ObservabilityAn exploration of the concept of observability in microservices architecture, which involves the ability to monitor and debug distributed systems, and the different techniques and tools for achieving observability, such as logging, tracing, health checks ,and monitoring.
Observability - Distributed TracingA deep dive into the use of distributed tracing as a tool for achieving observability in microservices architecture, including an overview of how distributed tracing works, common tracing frameworks, and how to instrument microservices for tracing.
Observability - MonitoringAn overview of the different types of monitoring that can be used in microservices architecture, such as system monitoring, application monitoring, and business monitoring, and the different tools and approaches for monitoring microservices.
Observability - DiagnosticsAn overview of the different techniques and tools for diagnosing and debugging issues in microservices architecture, including log analysis.
Observability - LoggingLogging is an important aspect of observability in microservices architecture. This topic covers different logging frameworks and strategies used for monitoring and troubleshooting distributed systems.
Observability - CorrelationIdCorrelation ID is a technique used to track requests across multiple microservices. This topic explains what Correlation ID is and how it is implemented in a distributed system.
Observability - Tools - EFKEFK stack (Elasticsearch, Fluentd, and Kibana) is a popular logging and observability solution. This topic covers the basics of EFK, how it works, and how to set it up in a microservices architecture.
Observability - Tools - ELKELK stack (Elasticsearch, Logstash, and Kibana) is another popular logging and observability solution. This topic covers the basics of ELK, how it works, and how to set it up in a microservices architecture.
Observability - Tools - Fluent BitFluent Bit is a lightweight and efficient log processor and forwarder. This topic covers the basics of Fluent Bit, how it works, and how to set it up in a microservices architecture.
Observability - Tools - FluentDFluentd is an open-source log collector and aggregator. This topic covers the basics of Fluentd, how it works, and how to set it up in a microservices architecture.
Observability - Tools - LokiLoki is a horizontally-scalable, highly-available log aggregation system. This topic covers the basics of Loki, how it works, and how to set it up in a microservices architecture.
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号