<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>EXPONENTIAL DEV by Diego - Tech Blog</title><link>https://diegogborges.github.io/</link><description>Recent content on EXPONENTIAL DEV by Diego - Tech Blog</description><generator>Hugo -- 0.152.2</generator><language>en-us</language><lastBuildDate>Thu, 04 Dec 2025 16:02:19 -0300</lastBuildDate><atom:link href="https://diegogborges.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Microservices vs. Monoliths</title><link>https://diegogborges.github.io/posts/microservices-monoliths/</link><pubDate>Thu, 04 Dec 2025 16:02:19 -0300</pubDate><guid>https://diegogborges.github.io/posts/microservices-monoliths/</guid><description>&lt;p&gt;Microservices or Monolith? Discover the strengths, the trade-offs, and the real-world lessons every developer must know before deciding how to start a project.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="#microservices-and-event-driven-architecture"&gt;Microservices and Event-Driven Architecture&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#introduction-to-the-module-microservices-based-architecture"&gt;Introduction to the Module: Microservices-Based Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#why-study-microservices"&gt;Why Study Microservices?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-you-will-learn-in-this-module"&gt;What You Will Learn in This Module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#why-this-module-matters"&gt;Why This Module Matters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#our-goal"&gt;Our Goal&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="#monolithic-systems"&gt;Monolithic Systems&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-is-a-monolithic-system"&gt;What Is a Monolithic System?&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#characteristics"&gt;Characteristics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#teamwork-inside-a-monolith"&gt;Teamwork Inside a Monolith&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#practical-benefits"&gt;Practical Benefits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#technological-constraints"&gt;Technological Constraints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#deployment-risks"&gt;Deployment Risks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#conclusion-about-monoliths"&gt;Conclusion About Monoliths&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="#what-are-microservices"&gt;What Are Microservices&lt;/a&gt;&lt;/p&gt;</description></item><item><title>System Design</title><link>https://diegogborges.github.io/posts/system-design/</link><pubDate>Thu, 04 Dec 2025 14:28:58 -0300</pubDate><guid>https://diegogborges.github.io/posts/system-design/</guid><description>&lt;p&gt;In this article, we explore how System Design goes far beyond diagrams, serving as a practical framework for reasoning, justifying decisions, and building scalable, well-structured systems.&lt;/p&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#introduction"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#understanding-the-core-concepts"&gt;Understanding the Core Concepts&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#introduction-to-system-design"&gt;Introduction to System Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-is-system-design"&gt;What is System Design?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#why-is-system-design-important"&gt;Why is System Design Important?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#working-with-approximations"&gt;Working with Approximations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-of-system-design-reasoning"&gt;Example of System Design Reasoning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design-in-big-techs"&gt;System Design in Big Techs&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#why-big-techs-use-system-design-in-interviews"&gt;Why Big Techs Use System Design in Interviews&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#why-many-candidates-fail"&gt;Why Many Candidates Fail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-importance-of-deduction-and-approximation"&gt;The Importance of Deduction and Approximation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design-in-the-real-world"&gt;System Design in the Real World&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#why-system-design-is-essential-in-practice"&gt;Why System Design Is Essential in Practice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#justifications-and-trade-offs"&gt;Justifications and Trade-offs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-six-elements-of-system-design"&gt;The Six Elements of System Design&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#introduction"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#six-fundamental-elements-of-system-design"&gt;Six Fundamental Elements of System Design&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#1-requirements-gathering"&gt;1. Requirements Gathering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#2-capacity-planning"&gt;2. Capacity Planning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#3-data-modeling"&gt;3. Data Modeling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#4-api-modeling"&gt;4. API Modeling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#5-architecture-design"&gt;5. Architecture Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#6-exploration--justification-trade-offs"&gt;6. Exploration &amp;amp; Justification (Trade-offs)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-value-of-the-process"&gt;The Value of the Process&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#requirements-%E2%80%94-deep-dive"&gt;Requirements — Deep Dive&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#core-features-and-domain"&gt;Core Features and Domain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#support-features"&gt;Support Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#functional-vs-non-functional-requirements"&gt;Functional vs Non-Functional Requirements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#next-steps"&gt;Next Steps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id="system-design"&gt;System Design&lt;/h1&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In this new module, the focus is on &lt;strong&gt;System Design&lt;/strong&gt;, an essential subject for anyone looking to advance in technology and system architecture.&lt;/p&gt;</description></item><item><title>Messaging Systems Compared: RabbitMQ vs. Apache Kafka</title><link>https://diegogborges.github.io/posts/messaging-comparison/</link><pubDate>Tue, 02 Dec 2025 17:03:47 -0300</pubDate><guid>https://diegogborges.github.io/posts/messaging-comparison/</guid><description>&lt;p&gt;This article provides a clear and concise comparison between RabbitMQ and Apache Kafka to help you choose the most suitable messaging solution for your system architecture.&lt;/p&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#objective"&gt;Objective&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#history"&gt;History&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#rabbitmq"&gt;RabbitMQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#apache-kafka"&gt;Apache Kafka&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#solution-features-and-comparisons"&gt;Solution Features and Comparisons&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#rabbitmq-features"&gt;RabbitMQ Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#kafka-features"&gt;Kafka Features&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#consumption-strategy-pull-vs-push"&gt;Consumption Strategy (Pull vs Push)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#comparative-use-cases"&gt;Comparative Use Cases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#deployment"&gt;Deployment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="objective"&gt;Objective&lt;/h2&gt;
&lt;p&gt;The objective of this article is to clarify doubts regarding which messaging system is most appropriate when implementing your applications. It analyzes RabbitMQ and Apache Kafka.&lt;/p&gt;</description></item><item><title>Rabbit MQ</title><link>https://diegogborges.github.io/posts/rabbit-mq/</link><pubDate>Tue, 02 Dec 2025 16:53:48 -0300</pubDate><guid>https://diegogborges.github.io/posts/rabbit-mq/</guid><description>&lt;p&gt;When you want to develop highly scalable distributed systems in several programming languages and one should communicate with others, it’s necessary an architecture with messaging queue systems and RabbitMq is one of the most used.&lt;/p&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#rabbitmq"&gt;What is Messaging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#rabbitmq"&gt;RabbitMQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#how-rabbitmq-works"&gt;How RabbitMQ Works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#amqp-protocol"&gt;AMQP Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#ack"&gt;ACK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#exchange-and-routing-key"&gt;Exchange and Routing Key&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#fanout"&gt;FANOUT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#direct"&gt;DIRECT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#topic"&gt;TOPIC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#headers"&gt;HEADERS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#channel"&gt;Channel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#publishing"&gt;Publishing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#listener"&gt;Listener&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#stream"&gt;Stream&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="what-is-messaging"&gt;What is Messaging&lt;/h3&gt;
&lt;p&gt;Messaging is a communication mechanism between systems where one publishes the message and any other as a client receives the same, thus simplifying a lot in the development of distributed systems.&lt;/p&gt;</description></item><item><title>REST API - Design Guidelines</title><link>https://diegogborges.github.io/posts/rest-api/</link><pubDate>Mon, 17 Nov 2025 00:00:00 +0000</pubDate><guid>https://diegogborges.github.io/posts/rest-api/</guid><description>&lt;p&gt;Everything you need to know to get started with REST in just a few minutes.&lt;/p&gt;
&lt;p&gt;REST API is the technology that transformed the way systems communicate with each other.
It enables applications, websites, servers, and devices to exchange data quickly, securely, and universally — forming the foundation of modern apps, powerful integrations, and digital experiences that work anywhere.&lt;/p&gt;
&lt;h2 id="index"&gt;&lt;strong&gt;Index&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#-what-is-an-api"&gt;What Is an API?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#-what-is-a-rest-api"&gt;What Is a REST API?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#-key-rest-concepts"&gt;Key REST Concepts&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#resources"&gt;Resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#main-http-methods"&gt;Main HTTP Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#data-formats"&gt;Data Formats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#-restful-api-characteristics"&gt;🔧 RESTful API Characteristics&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#1-stateless"&gt;Stateless&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#2-clientserver-architecture"&gt;Client–Server Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#3-cacheability"&gt;Cacheability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#4-uniform-interface"&gt;Uniform Interface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#5-layered-system"&gt;Layered System&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#general-recommendations"&gt;General Recommendations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#use-plural-nouns-in-urls"&gt;Use Plural Nouns in URLs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#keep-the-base-url-simple-and-intuitive"&gt;Keep the Base URL Simple and Intuitive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#avoid-verb-based-urls"&gt;Avoid Verb-Based URLs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#use-http-verbs-to-operate-on-resources"&gt;Use HTTP Verbs to Operate on Resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#resource-listing-and-detail-retrieval"&gt;Resource Listing and Detail Retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#associations"&gt;Associations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#use-query-parameters-to-reduce-url-complexity"&gt;Use Query Parameters to Reduce URL Complexity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#error-handling"&gt;Error Handling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#versioning"&gt;Versioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#partial-response"&gt;Partial Response&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pagination"&gt;Pagination&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#actions-not-involving-resources"&gt;Actions Not Involving Resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#multi-format-support"&gt;Multi-Format Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#attribute-naming"&gt;Attribute Naming&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#attributes-in-requestresponse-bodies"&gt;Attributes in Request/Response Bodies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#attributes-in-urls-query-parameters"&gt;Attributes in URLs (Query Parameters)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#attributes-in-headers"&gt;Attributes in Headers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#references"&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id="what-is-an-api"&gt;What Is an API?&lt;/h1&gt;
&lt;p&gt;An &lt;strong&gt;API (Application Programming Interface)&lt;/strong&gt; is a set of standards and protocols that allow different systems or users to interact with an application.&lt;br&gt;
It enables clients to access the software’s features and services without needing direct access to its internal implementation.&lt;/p&gt;</description></item><item><title>About</title><link>https://diegogborges.github.io/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://diegogborges.github.io/about/</guid><description>&lt;h1 id="-welcome-to-my-site"&gt;👋 Welcome to my site&lt;/h1&gt;
&lt;p&gt;Hello! My name is &lt;strong&gt;Diego Gomes Borges&lt;/strong&gt;, and this is my personal space on the internet where I share my journey, studies, projects, and insights about the world of &lt;strong&gt;Technology&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;After years of learning, building, experimenting, I decided to organize everything in one place — a clean, simple, and objective blog focused on &lt;strong&gt;high-quality tech content&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="what-youll-find-here"&gt;What You’ll Find Here&lt;/h2&gt;
&lt;h3 id="-programming"&gt;🧩 Programming&lt;/h3&gt;
&lt;h3 id="-cloud"&gt;☁️ Cloud&lt;/h3&gt;
&lt;h3 id="-devops--infrastructure"&gt;⚙️ DevOps &amp;amp; Infrastructure&lt;/h3&gt;
&lt;h3 id="-practical-projects"&gt;🛠️ Practical Projects&lt;/h3&gt;
&lt;h3 id="-real-world-problem-solving"&gt;🐞 Real-World Problem Solving&lt;/h3&gt;
&lt;h3 id="-quick-tips--utilities"&gt;⚡ Quick Tips &amp;amp; Utilities&lt;/h3&gt;
&lt;h3 id="-career--learning"&gt;🎯 Career &amp;amp; Learning&lt;/h3&gt;
&lt;h3 id="-code-challenges"&gt;🧠 Code Challenges&lt;/h3&gt;
&lt;hr&gt;
&lt;h2 id="-why-this-blog-exists"&gt;💡 Why This Blog Exists&lt;/h2&gt;
&lt;p&gt;Because useful technical knowledge should &lt;strong&gt;not&lt;/strong&gt; get lost in random chats, notes, or memory.&lt;br&gt;
This blog helps me &lt;strong&gt;organize what I learn&lt;/strong&gt;, share it with others, and create a personal reference for future projects.&lt;/p&gt;</description></item></channel></rss>