<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>System-Designs on Vivek Kumar Singh</title>
    <link>http://www.viveksyngh.com/system-design/</link>
    <description>Recent content in System-Designs on Vivek Kumar Singh</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Mon, 29 Apr 2019 00:00:00 -0600</lastBuildDate>
    <atom:link href="http://www.viveksyngh.com/system-design/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Key Characteristics of Distributed Systems</title>
      <link>http://www.viveksyngh.com/system-design/key-characteristics-of-distributed-systems/</link>
      <pubDate>Mon, 29 Apr 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/key-characteristics-of-distributed-systems/</guid>
      <description>A distributed system is a system in which components are located on different networked computers, which can communicate and coordinate their actions by passing messages to one another. The components interact with one another in order to achieve a common goal.&#xA;Key characteristics of distributed systems are&#xA;Resource Sharing Link to heading Resource sharing means that the existing resources in a distributed system can be accessed or remotely accessed across multiple computers in the system.</description>
    </item>
    <item>
      <title>Database Sharding</title>
      <link>http://www.viveksyngh.com/system-design/database-sharding/</link>
      <pubDate>Mon, 22 Apr 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/database-sharding/</guid>
      <description>Database sharding is the process of splitting up a database across multiple machines to improve the scalability of an application. In Sharding, one’s data is broken into two or more smaller chunks, called logical shards. The logical shards are then distributed across separate database nodes, referred to as physical shards.&#xA;Database shards are autonomous and they don’t share any of the same data or computing resources. In some cases, though, it makes sense to replicate certain tables into each shard to serve as referenced tables.</description>
    </item>
    <item>
      <title>Event Driven Architecture</title>
      <link>http://www.viveksyngh.com/system-design/event-driven-architecture/</link>
      <pubDate>Mon, 15 Apr 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/event-driven-architecture/</guid>
      <description>Event Driven Architecture Link to heading The event-driven architecture pattern is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. It is also highly adaptable and can be used for small applications and as well as large, complex ones. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.&#xA;It is suitable for applications or systems that transmit events among loosely coupled software components and services.</description>
    </item>
    <item>
      <title>Long Polling vs WebSockets vs Server-Sent Events</title>
      <link>http://www.viveksyngh.com/system-design/long-polling-vs-websockets-vs-server-sent-events/</link>
      <pubDate>Tue, 09 Apr 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/long-polling-vs-websockets-vs-server-sent-events/</guid>
      <description>Web applications were originally designed as a simple client-server model where the web client initiates an HTTP request requesting some data from the server. For example, a basic web application with the client-server model flow will be as follows.&#xA;A client makes an HTTP request requesting a web page from a server.&#xA;The server calculates the response&#xA;The server sends the response to the client&#xA;As developers began to explore ways to implement more “real-time” applications.</description>
    </item>
    <item>
      <title>Microservices Architecture</title>
      <link>http://www.viveksyngh.com/system-design/microservices-architecture/</link>
      <pubDate>Mon, 01 Apr 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/microservices-architecture/</guid>
      <description>Microservices are small, focused on doing one thing well and autonomous services that work together. Microservices were not invented. They emerged as a trend, or a pattern from real-world use case.&#xA;The benefits of microservices are many and varied.&#xA;Technology Heterogeneity: Link to heading With a system composed of multiple, collaborating services, we can decide to use different technologies inside each one. This allows us to pick the right tool for each job, rather than having to select a more standardized, one-size-fits-all approach that often ends up being the lowest common denominator.</description>
    </item>
    <item>
      <title>SQL vs NoSQL Databases</title>
      <link>http://www.viveksyngh.com/system-design/sql-vs-nosql-databases/</link>
      <pubDate>Mon, 25 Mar 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/sql-vs-nosql-databases/</guid>
      <description>SQL Database is also known as a relational database. It has the following properties.&#xA;It uses a table or relation to store the data. Table stores data in row and columns.&#xA;Relational databases are used to store structured data. Data are stored in the form of relationships.&#xA;Uses Structured Query Language ( SQL) for defining and manipulating data.&#xA;Define the schema before you add any data to the system. All your future data must follow the same structure.</description>
    </item>
    <item>
      <title>Consistent Hashing</title>
      <link>http://www.viveksyngh.com/system-design/consistent-hashing/</link>
      <pubDate>Fri, 22 Mar 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/consistent-hashing/</guid>
      <description>Consistent hashing idea was introduced in paper Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web which was released in the year 1997. Akamai distributed content delivery network uses the approach described in the paper.&#xA;In 2007, consistent hashing was used in two published works&#xA;Dynamo: Amazon’s Highly Available Key-Value Datastore Last.fm Memcached client After that it has been used in many other distributed system like Cassandra, Riak etc.</description>
    </item>
    <item>
      <title>Eventual Consistency vs Strong Consistency</title>
      <link>http://www.viveksyngh.com/system-design/eventual-consistency-vs-strong-consistency/</link>
      <pubDate>Mon, 11 Mar 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/eventual-consistency-vs-strong-consistency/</guid>
      <description>Eventual Consistency Link to heading Eventual consistency is a theoretical guarantee that, provided no new updates to an entity are made, all reads of the entity will eventually return the last updated value. The Internet Domain Name System (DNS) is a well-known example of a system with an eventual consistency model. DNS servers do not necessarily reflect the latest values but, rather, the values are cached and replicated across many directories over the Internet.</description>
    </item>
    <item>
      <title>CAP Theorem</title>
      <link>http://www.viveksyngh.com/system-design/cap-theorem/</link>
      <pubDate>Mon, 04 Mar 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/cap-theorem/</guid>
      <description>CAP theorem also known as Brewer’s theorem was introduced by computer scientist Eric Brewer at Symposium on Principles of Distributed computing in 2000. In CAP theorem, C stands for Consistency, A stands for Availability and P stands for Partition tolerance.&#xA;Consistency: Every read receives the most recent writes or an error. For consistency, any read operation that begins after a write operation completes must return that value, or the result of a later write operation.</description>
    </item>
    <item>
      <title>What is API Gateway?</title>
      <link>http://www.viveksyngh.com/system-design/what-is-api-gateway/</link>
      <pubDate>Mon, 25 Feb 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/what-is-api-gateway/</guid>
      <description>In microservices architecture, there are several services running each designed for a very specific component of the system. When clients (Mobile Apps, Web Apps or Third party applications) communicates directly with these microservices then many problems arise.&#xA;The granularity of APIs provided by microservices is often different than what the client needs. Microservice API’s are very generic and granular in nature where each returns only a portion of data for functionality.</description>
    </item>
    <item>
      <title>Load Balancing and Load Balancer</title>
      <link>http://www.viveksyngh.com/system-design/load-balancing-and-load-balancer/</link>
      <pubDate>Mon, 18 Feb 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/load-balancing-and-load-balancer/</guid>
      <description>[Source: https://medium.com/containers-on-aws/using-aws-application-load-balancer-and-network-load-balancer-with-ec2-container-service-d0cb0b1d5ae5]&#xA;Load Balancing Link to heading Load balancing is the process of efficiently distributing network traffic across multiple servers also known as a server farm or server pool. By distributing the load evenly load balancing improves responsiveness and increases the availability of applications. It has become a necessity as applications become more complex, user demand grows and traffic volume increases.&#xA;Load balancing is the most straightforward method of scaling out an application server infrastructure.</description>
    </item>
    <item>
      <title>What is proxy server?</title>
      <link>http://www.viveksyngh.com/system-design/what-is-proxy-server/</link>
      <pubDate>Wed, 06 Feb 2019 00:00:00 -0600</pubDate>
      <guid>http://www.viveksyngh.com/system-design/what-is-proxy-server/</guid>
      <description>Word proxy defines, someone or something acting on behalf of something else. In computer science proxy means one server acting on behalf of other servers. A proxy server is a server ( or computer system or an application) that acts as an intermediary for requests from clients seeking resources from other servers.&#xA;A client connects to the proxy server, requesting for some service (file, connection, web page) available from a different server and the proxy server evaluates the request as a way simplify and control it’s complexity.</description>
    </item>
  </channel>
</rss>
