<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sanjok Gyawali</title>
    <description>The latest articles on DEV Community by Sanjok Gyawali (@sanjok_gyawali).</description>
    <link>https://dev.to/sanjok_gyawali</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3989506%2F2dac28f2-9ea5-480b-bb1f-9eb5f8f7cef7.png</url>
      <title>DEV Community: Sanjok Gyawali</title>
      <link>https://dev.to/sanjok_gyawali</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sanjok_gyawali"/>
    <language>en</language>
    <item>
      <title>Technical Architecture Documentation: Warehouse Management System</title>
      <dc:creator>Sanjok Gyawali</dc:creator>
      <pubDate>Wed, 17 Jun 2026 17:07:11 +0000</pubDate>
      <link>https://dev.to/sanjok_gyawali/technical-architecture-documentation-warehouse-management-system-2eao</link>
      <guid>https://dev.to/sanjok_gyawali/technical-architecture-documentation-warehouse-management-system-2eao</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Architecture Overview for WMS&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This document details the agent-based architecture in which autonomous agents react to events, making changes to their internal state. The focus of this architecture is scalability and &lt;br&gt;
high maintainability. With this architecture, we want to address a dynamic and complex field of “warehouse management," which requires the application to be highly maintainable to adapt to &lt;br&gt;
changes and scalable to allow for massive throughput.&lt;br&gt;
(&lt;a href="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f7nmyrosqsagzxthpvrh.png" rel="noopener noreferrer"&gt;https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f7nmyrosqsagzxthpvrh.png&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  System Components
&lt;/h2&gt;

&lt;p&gt;*&lt;em&gt;Client Layer *&lt;/em&gt;&lt;br&gt;
The client layer includes the frontend application, which interacts with the backend via the Ocelot API Gateway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;React SPA&lt;/strong&gt; &lt;br&gt;
The front end for the web will be implemented using React SPA. We had other options &lt;br&gt;
like ASP.NET MVC/Angular, but we chose React based on the following criteria. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its modular component-driven design makes the app more maintainable &lt;/li&gt;
&lt;li&gt;Reusable components help us write less code for the same functionality &lt;/li&gt;
&lt;li&gt;Powerful libraries are available to implement complex functionality &lt;/li&gt;
&lt;li&gt;Loose coupling of backend and UI &lt;/li&gt;
&lt;li&gt;Designed for an API-first system &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are also some challenges with react some are, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hard to think the right way &lt;/li&gt;
&lt;li&gt;Less experienced team with React&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  API Gateway
&lt;/h2&gt;

&lt;p&gt;The API gateway will be implemented using .NET Core and the Ocelot Library. Ocelot is a more mature and feature rich library than its alternative YARP, so we opted for using Ocelot for our gateway. The following are the responsibilities of the gateway. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Acts as reverse proxy and manages request routing to backend microservice &lt;/li&gt;
&lt;li&gt;Handles authentication, rate-limiting, logging and load balancing &lt;/li&gt;
&lt;li&gt;Converts HTTPS request to HTTP which offloads SSL encryption and decryption for the microservices &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Microservice Agents
&lt;/h2&gt;

&lt;p&gt;Microservice agents are autonomous agents maintaining their own data which can be &lt;br&gt;
deployed and scaled independently. The following different agents are identified initially &lt;br&gt;
for WMS which can further be merged or further decomposed in the future based on the &lt;br&gt;
needs, &lt;br&gt;
Agent &lt;br&gt;
Inventory Agent: Manages inventory-related operations (stock updates, product listings). &lt;br&gt;
Receiving Agent: Handles inbound shipments, verifying received goods. &lt;br&gt;
Storage Agent: Manages storage allocation, retrieval, and warehouse space tracking. &lt;br&gt;
Shipping Agent: Handles picking, outbound logistics, tracking shipments and deliveries.&lt;br&gt;
User Identity Agent: Manages user authentication, roles, and permissions. &lt;/p&gt;

&lt;h2&gt;
  
  
  Communication Protocols
&lt;/h2&gt;

&lt;p&gt;The architecture will support the following methods for communication between the services. &lt;/p&gt;

&lt;h2&gt;
  
  
  Synchronous Communication using REST
&lt;/h2&gt;

&lt;p&gt;REST communication is generally kept at a minimum between services. REST methods are used in following scenarios: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementing simple service to service communication &lt;/li&gt;
&lt;li&gt;When instant feedback is required &lt;/li&gt;
&lt;li&gt;Use mostly for read operation &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Asynchronous Event Based Communication using RabbitMQ
&lt;/h2&gt;

&lt;p&gt;Use event-based communication for following scenarios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trigger background jobs &lt;/li&gt;
&lt;li&gt;Propagate changes between services &lt;/li&gt;
&lt;li&gt;Distributed transactions &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Observability and Monitoring
&lt;/h2&gt;

&lt;p&gt;Open telemetry is used as an observability framework, the data generated by open telemetry (logs, metrics, and traces) are displayed by the .NET Aspire Dashboard for local environments, and for production, they are managed by Loki for logs, Grafana for visualization, Tempo for traces, and Mimir for metrics. This stack is popular for persisting and searching through the logs. &lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment Strategy
&lt;/h2&gt;

&lt;p&gt;The following things are our deployment strategy:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single service per repository &lt;/li&gt;
&lt;li&gt;Single CI/CD pipeline per service &lt;/li&gt;
&lt;li&gt;Single Container per service &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For local deployment, .NET Aspire is used, and for deployment, each service. The microservice will be deployed to a Kubernetes cluster.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>architecture</category>
      <category>systemdesign</category>
    </item>
  </channel>
</rss>
