<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Subh's blog]]></title><description><![CDATA[Subh's blog]]></description><link>https://subh-cs.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 18:37:20 GMT</lastBuildDate><atom:link href="https://subh-cs.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Designing Netflix Backend System]]></title><description><![CDATA[In this blog post, we will explore how to design a robust, scalable backend for a video streaming service similar to Netflix. Such a service demands high availability, low latency, and the capacity to serve millions of users simultaneously, all while...]]></description><link>https://subh-cs.hashnode.dev/designing-netflix-backend-system</link><guid isPermaLink="true">https://subh-cs.hashnode.dev/designing-netflix-backend-system</guid><category><![CDATA[backend]]></category><category><![CDATA[netflix]]></category><category><![CDATA[System Design]]></category><category><![CDATA[architecture]]></category><dc:creator><![CDATA[Subhodip Roy]]></dc:creator><pubDate>Fri, 19 Apr 2024 05:33:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/lI7dlA5VBp8/upload/6128dfa8b56ec0cdbaf4a5049d67818c.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this blog post, we will explore how to design a robust, scalable backend for a video streaming service similar to Netflix. Such a service demands high availability, low latency, and the capacity to serve millions of users simultaneously, all while delivering large amounts of video content reliably. We'll cover key architectural considerations, technologies, and strategies to achieve these goals.</p>
<ol>
<li><h4 id="heading-microservices-architecture"><strong>Microservices Architecture</strong></h4>
<p> Netflix is one of the pioneering adopters of the microservices architecture. Unlike a monolithic architecture where everything is intertwined, microservices break down the backend into small, independent services that perform specific functions. This approach offers several benefits:</p>
<ul>
<li><p><strong>Scalability</strong>: Each service can be scaled independently, allowing more efficient use of resources and improved handling of demand spikes in particular areas of the application.</p>
</li>
<li><p><strong>Resilience</strong>: Failures in one service do not necessarily cause the entire system to fail, thereby increasing overall system reliability.</p>
</li>
<li><p><strong>Faster Deployment</strong>: Smaller, independent teams can manage individual microservices, leading to more rapid development cycles and easier deployment and updates.</p>
</li>
</ul>
</li>
</ol>
<ol start="2">
<li><h4 id="heading-robust-data-management"><strong>Robust Data Management</strong></h4>
<p> Data management is critical, particularly for a service like Netflix which deals with massive volumes of data across different formats and complexities. Key considerations include:</p>
<ul>
<li><p><strong>Data Storage</strong>: Using a combination of databases tailored to specific needs—such as SQL databases for transactional data and NoSQL databases for large, unstructured data—is common.</p>
</li>
<li><p><strong>Data Caching</strong>: To reduce latency and decrease load on the databases, effective use of caching is crucial. Technologies like Redis or Memcached can store frequently accessed data in memory for rapid retrieval.</p>
</li>
<li><p><strong>Data Replication and Backup</strong>: Ensuring data is replicated in multiple locations can safeguard against data loss and help in quick recovery during outages.</p>
</li>
</ul>
</li>
</ol>
<ol start="3">
<li><p><strong>Content Delivery Network (CDN)</strong></p>
<p> Netflix's ability to stream high-quality video content smoothly is largely enabled by its use of CDNs. A CDN is a network of servers distributed geographically that helps deliver content efficiently to users worldwide by caching content close to where the users are. This significantly reduces latency and bandwidth costs, and enhances the user experience.</p>
</li>
<li><h4 id="heading-load-balancing"><strong>Load Balancing</strong></h4>
<p> Effective load balancing ensures that no single server bears too much load, which can lead to service degradation or failures. Netflix uses a combination of DNS and software-based load balancers to distribute user requests across its infrastructure based on server availability, health, and response times.</p>
</li>
<li><h4 id="heading-fault-tolerance-and-auto-scaling"><strong>Fault Tolerance and Auto-Scaling</strong></h4>
<p> Building systems that are capable of withstanding failures and variable loads is another pillar of designing at scale. Netflix employs the Simian Army—a suite of tools developed in-house that introduces chaos and failures into the system to test resilience and the effectiveness of automatic recovery processes. Additionally, auto-scaling capabilities allow Netflix to dynamically adjust resources based on current demands, ensuring cost efficiency and system responsiveness.</p>
</li>
<li><h4 id="heading-monitoring-and-real-time-analytics"><strong>Monitoring and Real-Time Analytics</strong></h4>
<p> Continuous monitoring of various system metrics and log data helps Netflix maintain high availability and performance. Real-time analytics enable quick decision-making and problem-solving. Tools like Elasticsearch, Logstash, and Kibana (ELK stack) or Prometheus for monitoring, and Apache Kafka for handling real-time data streams are integral to these processes.</p>
</li>
<li><h4 id="heading-security"><strong>Security</strong></h4>
<p> Given the scale and nature of data handled, ensuring security and compliance is paramount. Implementing robust authentication mechanisms, securing data both in transit and at rest, and adhering to global compliance standards like GDPR are essential practices.</p>
</li>
</ol>
<h3 id="heading-conclusion"><strong>Conclusion</strong></h3>
<p>Designing backend systems for high scalability, reliability, and efficiency, as demonstrated by Netflix, requires meticulous planning and strategic implementation of advanced technologies. Embracing microservices, leveraging CDNs, ensuring robust data management, and continuous system monitoring are crucial. Each element of your architecture should contribute towards creating a seamless, scalable, and secure user experience. By studying industry leaders like Netflix, backend architects can gain insights and inspiration for their own systems, tailored to their specific needs and challenges.</p>
]]></content:encoded></item><item><title><![CDATA[Team Mars | Hack The Mountain 4.0]]></title><description><![CDATA[Participating in Hack the Mountain 4.0 was an incredible journey for Team Mars, and we are thrilled to share our success story with you. With Subhodip Roy leading the way, alongside Rajdeep Ghosh, Biswarghya Biswas, and Anirban Paul, we embarked on a...]]></description><link>https://subh-cs.hashnode.dev/team-mars-hack-the-mountain-40</link><guid isPermaLink="true">https://subh-cs.hashnode.dev/team-mars-hack-the-mountain-40</guid><dc:creator><![CDATA[Subhodip Roy]]></dc:creator><pubDate>Sun, 05 Nov 2023 10:42:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1699180874257/b1dd4cb7-e614-4e39-ad94-9b2575c901c4.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Participating in Hack the Mountain 4.0 was an incredible journey for Team Mars, and we are thrilled to share our success story with you. With Subhodip Roy leading the way, alongside Rajdeep Ghosh, Biswarghya Biswas, and Anirban Paul, we embarked on a mission to make a difference. Our project, Sanjeevani AI, is more than just a victory; it's a testament to our commitment to improving healthcare access in rural India.</p>
<p>When we set foot in Gurugram from our hometown of Kolkata, West Bengal, we had no idea how transformative this experience would be. The hackathon brought together brilliant minds, innovative ideas, and a supportive community. The challenges were tough, but our determination was stronger. We poured our hearts and souls into developing Sanjeevani AI, a healthcare solution for those in rural areas where access to doctors is limited.</p>
<p>Winning the 2nd Runner-up title was a moment of sheer joy and accomplishment. It validated our hard work, dedication, and the countless hours we spent coding and refining our project. We felt an immense sense of pride, knowing that our solution could potentially save lives and improve the quality of healthcare for thousands of people.</p>
<p>Hack the Mountain 4.0 not only provided us with a platform to showcase our skills but also an opportunity to learn from mentors and receive valuable feedback from judges. The support and encouragement we received from the community were incredible, and it has left us motivated and eager for the future.</p>
<p>As we look ahead, we are excited about the potential of Sanjeevani AI and the positive impact it can have on rural healthcare. We are grateful for the experience and the recognition we received, and we eagerly anticipate the next edition, Hack the Mountain 5.0. We encourage everyone to participate in hackathons like this, where innovation, collaboration, and determination can lead to groundbreaking solutions. Our journey with Team Mars and Sanjeevani AI has just begun, and we can't wait to see where it takes us</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1699180861150/a993eca5-b92f-4034-8cba-a1a9a38b8171.png" alt class="image--center mx-auto" /></p>
<p>.</p>
]]></content:encoded></item><item><title><![CDATA[Let's Talk about OSI Model]]></title><description><![CDATA[The OSI (Open Systems Interconnection) Model is like a cake with seven layers, where each layer does a different job to help computers talk to each other.
Layer 7 - Application Layer:
This is like the top layer of the cake where you put fruits, frost...]]></description><link>https://subh-cs.hashnode.dev/osi-model-with-cake-analogy</link><guid isPermaLink="true">https://subh-cs.hashnode.dev/osi-model-with-cake-analogy</guid><category><![CDATA[#computernetwork ]]></category><category><![CDATA[jobs]]></category><category><![CDATA[learning]]></category><category><![CDATA[WeMakeDevs]]></category><category><![CDATA[Hashnode]]></category><dc:creator><![CDATA[Subhodip Roy]]></dc:creator><pubDate>Mon, 15 May 2023 05:30:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1684084950287/5d7e151c-41ba-4ee0-8b60-a96bdbd30051.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The OSI (Open Systems Interconnection) Model is like a cake with seven layers, where each layer does a different job to help computers talk to each other.</p>
<h3 id="heading-layer-7-application-layer">Layer 7 - Application Layer:</h3>
<p>This is like the top layer of the cake where you put fruits, frosting, and decorations. It's where different programs and games talk to the internet.</p>
<h3 id="heading-layer-6-presentation-layer">Layer 6 - Presentation Layer:</h3>
<p>This is like the layer where you dress up the cake and make it look nice. It takes the information from the application layer and makes it so the computers can understand it.</p>
<h3 id="heading-layer-5-session-layer">Layer 5 - Session Layer:</h3>
<p>This is like the layer where you invite your friends over to eat the cake. It helps different programs talk to each other so they can share information.</p>
<h3 id="heading-layer-4-transport-layer">Layer 4 - Transport Layer</h3>
<p>This is like the delivery person who brings the cake from one place to another. It makes sure the information gets to where it needs to go and that it's not jumbled up.</p>
<h3 id="heading-layer-3-network-layer">Layer 3 - Network Layer:</h3>
<p>This layer is like a map that tells the cake delivery person where to go. It figures out the best way to send the information from one computer to another.</p>
<h3 id="heading-layer-2-data-link-layer">Layer 2 - Data Link Layer:</h3>
<p>This is like the layer where you put the cake in a box and it gives instructions on how to open the box. It makes sure the information gets to where it needs to go and that there aren't any mistakes.</p>
<h3 id="heading-layer-1-physical-layer">Layer 1 - Physical Layer:</h3>
<p>This is like the layer that talks about the ingredients you need to make the cake. It's all about the physical things like wires and cables that help the computers talk to each other.</p>
<p><em>All of these layers work together to help all kinds of computers talk to each other, even if they're made by different companies. So, just like how you need all the different ingredients to make a cake, you need all the different layers to make the internet work!</em></p>
]]></content:encoded></item><item><title><![CDATA[Cross-Origin Resource Sharing (CORS)]]></title><description><![CDATA[What is CORS?
CORS is a security feature in web browsers that allows servers to specify which domains are allowed to make requests to them, ensuring the secure transfer of data between different domains.
Why is CORS Important?
By default, JavaScript ...]]></description><link>https://subh-cs.hashnode.dev/cross-origin-resource-sharing</link><guid isPermaLink="true">https://subh-cs.hashnode.dev/cross-origin-resource-sharing</guid><category><![CDATA[Programming Blogs]]></category><category><![CDATA[CORS]]></category><category><![CDATA[backend]]></category><category><![CDATA[APIs]]></category><category><![CDATA[error handling]]></category><dc:creator><![CDATA[Subhodip Roy]]></dc:creator><pubDate>Mon, 08 May 2023 09:46:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1683538716834/b0071fe1-6a85-4962-bd72-ff6438113b89.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-what-is-cors">What is CORS?</h3>
<p>CORS is a security feature in web browsers that allows servers to specify which domains are allowed to make requests to them, ensuring the secure transfer of data between different domains.</p>
<h3 id="heading-why-is-cors-important">Why is CORS Important?</h3>
<p>By default, JavaScript running on a web page is not allowed to make requests to a different domain than the one it came from. Therefore, CORS is important to allow cross-domain resource sharing while maintaining security.</p>
<h3 id="heading-how-does-cors-work">How does CORS Work?</h3>
<p>When a browser wants to access a resource from a different domain, it sends a pre-flight request to the domain server using the OPTIONS method to check if the cross-origin request is allowed. If the domain server allows the request, the browser sends a second request with the actual method specified in the original request, and the domain server provides the requested data.</p>
<h3 id="heading-how-to-configure-cors">How to Configure CORS?</h3>
<p>To configure CORS, you need to set the Access-Control-Allow-Origin header in the response from the domain server to indicate which domains are allowed to access the resource. You can also set additional headers like Access-Control-Allow-Methods and Access-Control-Allow-Headers to specify which HTTP methods and headers are allowed.</p>
]]></content:encoded></item><item><title><![CDATA[Database Scaling Best Practices]]></title><description><![CDATA[As we rely more and more on technology to manage and store data, it's important to have proper tools in place to scale and optimize the performance of databases. Whether you're running a personal blog or a Fortune 500 company, understanding these fun...]]></description><link>https://subh-cs.hashnode.dev/database-scaling-best-practices</link><guid isPermaLink="true">https://subh-cs.hashnode.dev/database-scaling-best-practices</guid><category><![CDATA[Databases]]></category><category><![CDATA[System Design]]></category><category><![CDATA[software development]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Subhodip Roy]]></dc:creator><pubDate>Fri, 05 May 2023 09:06:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1683277089879/bf8a0442-ea18-4bf1-94c1-1f2a2d3d319a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As we rely more and more on technology to manage and store data, it's important to have proper tools in place to scale and optimize the performance of databases. Whether you're running a personal blog or a Fortune 500 company, understanding these fundamental concepts can help you build better, more robust database systems and keep your applications running smoothly.</p>
<p><strong>Vertical scaling:</strong> <em>The simplest way to scale a database is by upgrading its hardware or resources. This includes adding more memory (RAM), using faster CPUs, optimizing disk I/O (how data is written and read on the hard drive), and using an efficient network layout. By doing so, we can increase the processing power of the database server and improve its speed and responsiveness.</em></p>
<p><strong>Horizontal scaling</strong>: <em>If vertical scaling is not enough, we can also scale horizontally by adding more replica instances of the database. This means dividing the workload across multiple servers, which allows the database to handle more data and transactions per second. This approach is particularly useful for read-heavy applications, where most queries are requests for previously-stored data.</em></p>
<p><strong>Indexing</strong>: <em>Indexes are vital for any database as they speed up searches and queries while reducing input/output (I/O) operations, making the system more efficient. When creating indexes, it's important to make sure they are optimal and efficient for high-load queries to maximize their benefits.</em></p>
<p><strong>Query optimization:</strong> <em>Slow queries can be a bottleneck for a database, but optimizing them can help improve performance. By using appropriate indices and column data types, queries can be scanned faster and their performance improved.</em></p>
<p><strong>Sharding</strong>: <em>This refers to the process of horizontal partitioning, where a large database is divided into smaller, manageable pieces that can be replicated and distributed across multiple servers. Sharding can help reduce the load on a single server by distributing the workload evenly.</em></p>
<p><strong>Data caching:</strong> <em>Frequently used data can be cached to reduce the load on the database and improve performance. Popular data can be stored in a cache like Memcached or Redis, allowing the system to retrieve it faster and with fewer I/O operations.</em></p>
<p>By understanding these fundamental concepts, you can begin building better databases and optimizing the performance of your applications. Remember – scaling is not just about adding more resources, it's about finding the right balance between hardware and software optimization.</p>
]]></content:encoded></item></channel></rss>