# Core Engineering Concepts Every Developer Should Know :::info :bulb: Whether you're building APIs, blockchain apps, or distributed systems, understanding the fundamentals of software engineering is what sets apart great developers from average ones. Let me introduce you to several critical backend and systems engineering concepts such as: ::: ## 1. Roundtrip A roundtrip refers to the full journey of a request. From when a user (or system) sends a request to a server, to when the response comes back. :::success Example: When you open a mobile app and tap "Get Balance", the time it takes to reach the server, process your request, and receive the result is a roundtrip. ::: ## 2. Latency Latency is the time delay between a request and a response. It is a critical factor in how fast your application feels. There are different types: - Network latency: Delay caused by data traveling between client and server. - Processing latency: Time the server spends handling the request. :::success The time it takes between clicking a button and seeing the result appear. ::: ## 3. Throughput Throughput is the number of operations a system can handle in a given time period. Often measured in requests per second (RPS) or transactions per second (TPS). :::success If latency is about speed per request, throughput is about volume of requests handled. For example: A server with low latency might be fast but only handle 100 users. A high-throughput server might handle 10,000 users — even if it’s slightly slower. Together, latency and throughput help determine how scalable and efficient your app is. ::: ## 4. Scaling: Vertical vs Horizontal #### 1. Vertical Scaling (Scale Up) This means increasing the resources of a single server: Add more CPU, RAM, or Disk Easier to manage but has limits (you can’t keep upgrading forever) Can get expensive #### 2. Horizontal Scaling (Scale Out) This means adding more servers to handle the load: Distributes traffic across machines Better for fault tolerance and availability Requires load balancing, coordination, and often distributed systems ## 5. Distributed Systems A distributed system is a group of computers (nodes) working together to appear like a single system. #### Key characteristics: - Fault tolerance: If one server fails, others take over. - Scalability: Easily handles more users. - Consistency challenges: Data must be synced across nodes. :::success Examples: Blockchain networks, microservices, cloud storage systems. :::