Awesome Software Architecture
repository·main·Indexed 11 days ago
https://github.com/mehdihadeli/awesome-software-architectureA curated collection of high-quality articles and resources on software architecture, patterns, and principles. It covers architectural styles such as Clean, Hexagonal, Onion, and Vertical Slice Architecture, as well as Domain-Driven Design (DDD), Event-Driven Architecture, Microservices, CQRS, and the Actor Model. The resource includes guides on API Gateways (Ambassador, Kong, Ocelot), observability stacks (ELK, EFK, Loki), and distributed application tools like Dapr and CAP.
What's inside Awesome Software Architecture
- YARP is a toolkit developed by Microsoft for building high-performance HTTP reverse proxy applications using .NET. It is designed to be extensible and can be used for various architectural patterns such as API Gateways, Backend-for-Frontends (BFF), and Kubernetes Ingress Controllers.
Overview of Awesome Software Architecture
mainAwesome Software Architecture is a curated collection of articles and resources designed to help developers learn and practice software architecture, patterns, and principles. The repository serves as a centralized, categorized hub for high-quality learning materials covering topics such as Clean Architecture, Event-Driven Architecture, Domain-Driven Design, and more.Overview of Project Tye for Microservices
mainProject Tye is a tool designed to simplify the development, testing, and deployment of microservices and distributed applications. It provides a local orchestrator to facilitate easier microservice development and offers the capability to deploy these services to Kubernetes with minimal configuration. It is particularly useful for .NET developers working with distributed systems.Overview of MetalLB for Kubernetes Load Balancing
mainMetalLB is a network load-balancer implementation for Kubernetes that uses standard routing protocols. It allows Kubernetes clusters (especially on bare metal) to provideLoadBalancertype services by assigning IP addresses from a configured pool to services.Overview of Steeltoe .NET Core Components
mainSteeltoe provides a set of .NET Core components designed to help build cloud-native microservices. It enables developers to implement essential microservice patterns without being locked into a specific cloud platform. Key capabilities include:
- CircuitBreaker: Resilience patterns to prevent cascading failures.
- Configuration: Centralized configuration management.
- Connectors: Integration with cloud-native services.
- Discovery: Service discovery mechanisms.
- Logging: Structured logging for distributed systems.
- Management: Operational management and monitoring.
- Security: Security implementations for microservices.
Overview of K3s Lightweight Kubernetes
mainK3s is a lightweight, production-ready Kubernetes distribution. It is designed to be easy to install, consuming significantly less memory than standard Kubernetes, and is packaged as a single binary of less than 100 MB. It is ideal for edge computing, IoT, and local development environments.Explore AI and LLM libraries
mainThis repository provides a curated list of libraries and tools for working with Artificial Intelligence and Large Language Models (LLMs). Key categories include:
- Model Inference & Frameworks: Tools like
llama.cpp(C/C++ port of LLaMA),ollama(local Llama 2/LLM runner),transformers(HuggingFace state-of-the-art ML), andunsloth(fast fine-tuning for Llama 3.1, Mistral, etc.). - Agentic AI & Orchestration: Frameworks like
langchain(context-aware reasoning),microsoft/autogen(agentic programming),microsoft/semantic-kernel(integrating LLMs into apps), andAuto-GPT(autonomous GPT-4). - Local & Private AI: Solutions for running models locally or privately, such as
LocalAI(OpenAI-compatible local API),privateGPT(private document interaction), andjan(offline ChatGPT alternative). - Specialized Tools:
repopack(packs repositories into AI-friendly files),markitdown(converts documents to Markdown), andscreenshot-to-code(converts screenshots to HTML/Tailwind/JS).
- Model Inference & Frameworks: Tools like
Use ML.NET for machine learning in .NET
mainML.NET is an open-source, cross-platform machine learning framework designed specifically for the .NET ecosystem. It allows developers to build, train, and deploy custom machine learning models within .NET applications without requiring a separate Python environment.
https://github.com/dotnet/machinelearningExplore Nomad tools and resources
mainFor a curated list of tools, libraries, and community resources specifically for HashiCorp Nomad, refer to the
jippi/awesome-nomadrepository.https://github.com/jippi/awesome-nomadExplore Cloud Native learning resources
mainThecloud-native.mddocumentation provides a curated list of external resources for learning about Cloud Native architecture, including training materials, articles, videos, and books. Use these resources to understand the definitions, candidate applications, and reference architectures for cloud-native digital enterprises.Explore Microservices Architecture topics
mainThe
awesome-software-architecturerepository provides a curated collection of documentation regarding Microservices. Key areas of study include:- Core Concepts: Introduction to microservices, benefits, drawbacks, and characteristics.
- Communication: Patterns and protocols (Synchronous vs. Asynchronous, REST vs. Message-based, Service Buses).
- UI Patterns: Composite UI (Server-side vs. Client-side composition).
- Design: Defining Service Boundaries using Domain-Driven Design (DDD) and Bounded Contexts.
- Testing: Strategies for individual services and inter-service interactions.
- API Gateways: Implementation of single entry points, including specific guides for Ambassador, Kong, and Ocelot.
- Observability: Monitoring, distributed tracing, diagnostics, logging, and the use of Correlation IDs to track requests across distributed systems.
Explore Scalability and System Design resources
mainThis section provides a curated collection of high-level resources for learning about distributed systems, scalability, and system design. It includes repositories, slide decks, and foundational patterns for availability and stability.