<?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: Vishnu Chilamakuru</title>
    <description>The latest articles on DEV Community by Vishnu Chilamakuru (@vishnuchilamakuru).</description>
    <link>https://dev.to/vishnuchilamakuru</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F460357%2F338df110-bb76-4257-abba-73cca65be4c1.png</url>
      <title>DEV Community: Vishnu Chilamakuru</title>
      <link>https://dev.to/vishnuchilamakuru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vishnuchilamakuru"/>
    <language>en</language>
    <item>
      <title>Using Geospatial Queries in MySQL</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Thu, 02 Feb 2023 11:24:34 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/using-geospatial-queries-in-mysql-3kkn</link>
      <guid>https://dev.to/vishnuchilamakuru/using-geospatial-queries-in-mysql-3kkn</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Geospatial data, or data that represents a location on the Earth's surface, is becoming increasingly prevalent in today's data-driven world. To effectively work with geospatial data, databases need to have the ability to perform geospatial queries, which allow users to search, filter and analyze this data based on location. In this blog post, we will focus on implementing geospatial queries in MySQL, one of the most popular open-source relational databases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Enabling Geospatial Support in MySQL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MySQL does not have built-in geospatial support, but it can be enabled through the installation of a plugin called "MySQL Spatial Extensions." This plugin adds a set of geospatial data types and functions that allow for the creation and querying of geospatial data. To install the plugin, you can run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;INSTALL&lt;/span&gt; &lt;span class="n"&gt;PLUGIN&lt;/span&gt; &lt;span class="n"&gt;mysql_no_login&lt;/span&gt; &lt;span class="n"&gt;SONAME&lt;/span&gt; &lt;span class="s1"&gt;'libgeometry.so'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2.Creating a Geospatial Table in MySQL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To create a geospatial table in MySQL, you will need to specify the geospatial data type for each column that will contain geospatial data. Some common geospatial data types in MySQL include POINT, LINESTRING, and POLYGON.&lt;/p&gt;

&lt;p&gt;Here is an example of how you can create a table to store restaurant locations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;restaurants&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt; &lt;span class="n"&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="k"&gt;location&lt;/span&gt; &lt;span class="n"&gt;POINT&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3.Indexing Geospatial Data in MySQL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To improve query performance, it is recommended to create a spatial index on the geospatial column. This can be done by using the following syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;restaurants&lt;/span&gt; &lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="n"&gt;SPATIAL&lt;/span&gt; &lt;span class="k"&gt;INDEX&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;location&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4.Performing Geospatial Queries in MySQL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once the geospatial data has been indexed, it can be queried using geospatial functions. Some common geospatial functions in MySQL include ST_Distance, ST_Within, and ST_Contains.&lt;/p&gt;

&lt;p&gt;Here is an example of how you can find all restaurants within a certain radius of a location:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;restaurants&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;ST_DWithin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;location&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;POINT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;longitude&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;latitude&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5.Other Databases Supporting Geospatial Queries&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MySQL is not the only database that supports geospatial queries. Other popular databases that support geospatial queries include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PostgreSQL with PostGIS extension&lt;/li&gt;
&lt;li&gt;Microsoft SQL Server with spatial data types and functions&lt;/li&gt;
&lt;li&gt;Oracle with Spatial and Graph option&lt;/li&gt;
&lt;li&gt;MongoDB with native support for geospatial data and indexing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Geospatial queries allow databases to effectively work with geospatial data, enabling users to perform location-based analysis and search operations. Implementing geospatial queries in MySQL requires enabling geospatial support through the installation of a plugin and creating a geospatial table with the proper data types and indexes. Whether you are working with real estate data, tracking delivery trucks, or mapping out locations, geospatial queries provide a powerful tool for analyzing and understanding location-based data.&lt;/p&gt;

</description>
      <category>database</category>
      <category>mysql</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Mastering Database Indexing: A Comprehensive Guide</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Wed, 25 Jan 2023 09:25:46 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/mastering-database-indexing-a-comprehensive-guide-43p7</link>
      <guid>https://dev.to/vishnuchilamakuru/mastering-database-indexing-a-comprehensive-guide-43p7</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Database indexing is a fundamental concept for optimizing the performance of database queries. It enables faster data retrieval by providing a quick way to look up specific rows of data in a table. In this blog post, we will take a deep dive into the world of database indexing, including the different types of indexes, the benefits of indexing, and best practices for indexing your database.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an Index?
&lt;/h2&gt;

&lt;p&gt;An index is a data structure that improves the performance of database queries by providing quick access to specific rows of data in a table. It works by creating a copy of the data in a specific order, making it easy to find specific rows of data. Indexes can be thought of as an extra layer of organization on top of the data stored in a table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Indexes?
&lt;/h2&gt;

&lt;p&gt;Without an index, a database must scan the entire table to find the specific rows of data requested in a query. This can be slow when the table has a large number of rows. Indexes improve the performance of queries by allowing the database to quickly find the specific rows of data requested in a query without having to scan the entire table. This can lead to significant performance improvements, especially for large tables or tables with a large number of rows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Indexes
&lt;/h2&gt;

&lt;p&gt;Several types of indexes can be used in a database. The most common types of indexes are:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B-tree index&lt;/strong&gt;: This is the most common type of index and is used in most relational databases. B-tree indexes are efficient for both small and large tables and are well-suited for equality and range queries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hash index&lt;/strong&gt;: This type of index is used primarily for equality queries on a small number of columns. Hash indexes are faster than B-tree indexes for equality queries but are not efficient for range queries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bitmap index&lt;/strong&gt;: This type of index is used to efficiently find specific rows of data in a table with a large number of columns. Bitmap indexes are efficient for both equality and range queries but are not well-suited for large tables.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clustered index&lt;/strong&gt;: This type of index determines the physical order of the data in a table. Each table can have only one clustered index.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Indexes
&lt;/h2&gt;

&lt;p&gt;To create an index in a database, you must specify the name of the index, the name of the table that the index will be created on, and the columns that will be included in the index. The syntax for creating an index will vary depending on the type of database you are using. Here is an example of how to create an index in a MySQL database:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE INDEX index_name ON table_name (column1, column2);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is important to note that indexing can also hurt performance if done excessively or inappropriately, so it's crucial to carefully select the columns that need to be indexed and avoid indexing columns that are rarely used in queries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maintenance
&lt;/h2&gt;

&lt;p&gt;Indexes require maintenance to keep them up-to-date and efficient. When a table is modified (rows are inserted, updated, or deleted), the corresponding index must be updated as well. This is known as index maintenance. If the index is not maintained properly, it can lead to poor performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this blog post, we've discussed the basics of database indexing and why it's an important aspect of database management. We've also shown how to implement an index and the importance of proper index selection. By understanding and implementing proper indexing, you can greatly improve the performance of your database queries and ensure efficient data retrieval.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>saas</category>
      <category>developers</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Git Show Command Cheat Sheet</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Tue, 24 Jan 2023 18:35:07 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/git-show-command-cheat-sheet-45ph</link>
      <guid>https://dev.to/vishnuchilamakuru/git-show-command-cheat-sheet-45ph</guid>
      <description>&lt;p&gt;A Beginner's Guide for the 'git show' command&lt;/p&gt;

&lt;p&gt;Git is a powerful version control system that allows developers to track and manage changes to their code. One of the most useful Git commands is &lt;code&gt;git show&lt;/code&gt;, which allows you to view the details of a specific commit. In this post, we'll explore the &lt;code&gt;git show&lt;/code&gt; command and provide a cheat sheet of some of the most commonly used options.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Basic Usage
&lt;/h2&gt;

&lt;p&gt;The basic usage of the git show command is to display the details of a specific commit. You can use the following syntax to view the details of a commit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git show &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will display the commit message, the author, the date, and the changes made in the commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Showing Changes
&lt;/h2&gt;

&lt;p&gt;One of the most useful options of the git show command is the ability to view the changes made in a specific commit. You can use the following syntax to view the changes made in a commit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git show &amp;lt;commit-hash&amp;gt; --stat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will display a summary of the changes made in the commit, including the number of files changed and the number of lines added or removed.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Showing Diffs
&lt;/h2&gt;

&lt;p&gt;Another useful option of the git show command is the ability to view the actual diffs (differences) made in a specific commit. You can use the following syntax to view the diffs made in a commit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git show &amp;lt;commit-hash&amp;gt; --patch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will display the actual diffs made in the commit, including the lines added and removed.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Showing File Changes
&lt;/h2&gt;

&lt;p&gt;You can also use the git show command to view the changes made to a specific file in a specific commit. You can use the following syntax to view the changes made to a file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git show &amp;lt;commit-hash&amp;gt; &amp;lt;file-path&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will display the changes made to the specified file in the specified commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Showing Branch
&lt;/h2&gt;

&lt;p&gt;you can also use git show command to see the latest commit on a branch, you can use the following syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git show &amp;lt;branch-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion:
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;git show&lt;/code&gt; command is a powerful Git command that allows you to view the details of a specific commit. It's a useful tool for understanding the changes made to your code and for debugging. The basic usage, showing changes, showing diffs, showing file changes, and showing branch are some of the most commonly used options of the git show command. By mastering these options, you can quickly and easily view the details of specific commits in your Git repository.&lt;/p&gt;

</description>
      <category>godotengine</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>4 Service Discovery Patterns for your Microservice</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Sat, 31 Jul 2021 06:33:41 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/4-service-discovery-patterns-for-your-microservice-pg</link>
      <guid>https://dev.to/vishnuchilamakuru/4-service-discovery-patterns-for-your-microservice-pg</guid>
      <description>&lt;p&gt;Let's say you’re writing some code that invokes a service that has a REST API. In order to make a request, your code needs to know the network location (IP address and port) of a service instance. In a traditional application, the network locations of service instances are usually static. &lt;/p&gt;

&lt;p&gt;For example, your code could read the network locations from a configuration file that’s occasionally updated. But in a modern, cloud-based microservices application, it’s usually not that simple. It is much more dynamic.&lt;/p&gt;

&lt;p&gt;Service instances have dynamically assigned network locations. Moreover, the set of service instances changes dynamically because of autoscaling, failures, and upgrades.Consequently, your client code must use service discovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Service Discovery?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1627707198767%2FiyKATW_Dg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1627707198767%2FiyKATW_Dg.png" alt="Service Discovery For Microservices.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the above image you can see, you can’t statically configure a client with the IP addresses of the services. Instead, an application must use a dynamic service discovery mechanism. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Service discovery is conceptually quite simple:&lt;/em&gt;&lt;/strong&gt; its key component is a service registry, which is a database of the network locations of an application’s service instances.&lt;/p&gt;

&lt;p&gt;The service discovery mechanism updates the service registry when service instances start and stop. When a client invokes a service, the service discovery mechanism queries the service registry to obtain a list of available service instances and routes the request to one of them.&lt;/p&gt;

&lt;p&gt;In this article, I will mention about 4 service discovery patterns that you should consider for your microservices.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1. Self Registration Pattern&lt;/li&gt;
&lt;li&gt;2. Client Side Discovery Pattern&lt;/li&gt;
&lt;li&gt;3. Server Side Discovery Pattern&lt;/li&gt;
&lt;li&gt;4. 3rd Party Registration Pattern&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The services and their clients interact directly with the service registry:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1627710400234%2FO_qjswyGo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1627710400234%2FO_qjswyGo.png" alt="Service discovery client and service with service registry.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Self Registration Pattern
&lt;/h2&gt;

&lt;p&gt;The first pattern is the Self Registration pattern. A service instance invokes the service registry’s registration API to register its network location. It may also supply a health check URL. &lt;/p&gt;

&lt;p&gt;The health check URL is an API end-point that the service registry invokes periodically to verify that the service instance is healthy and available to handle requests. &lt;/p&gt;

&lt;p&gt;A service registry may require a service instance to periodically invoke a “heartbeat” API in order to prevent its registration from expiring. &lt;/p&gt;

&lt;p&gt;A service instance registers itself with the service registry. Find out more details &lt;a href="http://microser-vices.io/patterns/self-registration.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Client Side Discovery Pattern
&lt;/h2&gt;

&lt;p&gt;The second pattern is the Client-side discovery pattern. When a service client wants to invoke a service, it queries the service registry to obtain a list of the service’s instances.&lt;/p&gt;

&lt;p&gt;To improve performance, a client might cache the service instances. The service client then uses a load-balancing algorithm, such as a round-robin or random, to select a ser-&lt;br&gt;
vice instance. It then makes a request to a select service instance.&lt;/p&gt;

&lt;p&gt;Find out more details &lt;a href="http://microservices.io/patterns/client-&amp;lt;br&amp;gt;%0Aside-discovery.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The deployment infrastructure handles service discovery:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1627711333552%2FyUTFYCnjl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1627711333552%2FyUTFYCnjl.png" alt="Service discovery via deployment infrastructure with service registry.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Server Side Discovery Pattern
&lt;/h2&gt;

&lt;p&gt;In this pattern, Instead of a client querying the service registry, it makes a request to a DNS name, which resolves to a request router that queries the service registry and load-balances requests.&lt;/p&gt;

&lt;p&gt;A client makes a request to a router, which is responsible for service discovery. Find out more details &lt;a href="http://microservices.io/patterns/server-side-discovery.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 3rd Party Registration Pattern
&lt;/h2&gt;

&lt;p&gt;In this pattern, Instead of a service registering itself with the service registry, a third party called the &lt;em&gt;registrar&lt;/em&gt;, which is typically part of the &lt;em&gt;deployment platform&lt;/em&gt;, handles the registration.&lt;/p&gt;

&lt;p&gt;Service instances are automatically registered with the service registry by a third party.&lt;br&gt;
Find out more details &lt;a href="http://microservices.io/patterns/3rd-party-registration.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advantages of platform-provided service discovery:
&lt;/h3&gt;

&lt;p&gt;The key benefit of platform-provided service discovery is that all aspects of service discovery are entirely handled by the deployment platform. Neither the services nor the&lt;br&gt;
clients contain any service discovery code. Consequently, the service discovery mechanism is readily available to all services and clients regardless of which language or framework they’re written in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disadvantages of platform-provided service discovery:
&lt;/h3&gt;

&lt;p&gt;One drawback of platform-provided service discovery is that it only supports the discovery of services that have been deployed using the platform. For example, Kubernetes-based discovery only works for services running on Kubernetes.&lt;/p&gt;



&lt;h2&gt;
  
  
  Thank you for reading
&lt;/h2&gt;

&lt;p&gt;Hope you find these resources useful. If you like what you read and want to see more about system design, microservices, and other technology-related stuff... You can follow me on &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter - &lt;a href="https://twitter.com/vishnuchi?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;Follow @vishnuchi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribe to my weekly newsletter &lt;a href="https://www.getrevue.co/profile/vishnuch" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>architecture</category>
      <category>discuss</category>
      <category>microservices</category>
      <category>distributedsystems</category>
    </item>
    <item>
      <title>Kubernetes Cheatsheet</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Thu, 22 Jul 2021 09:29:29 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/kubernetes-cheatsheet-n93</link>
      <guid>https://dev.to/vishnuchilamakuru/kubernetes-cheatsheet-n93</guid>
      <description>&lt;p&gt;Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available. Kubernetes provides you with a framework to run distributed systems resiliently. It takes care of scaling and failover for your application, provides deployment patterns, canary deployments, and more. In this blog post, I will mention Kubernetes commands which we need for most of the use-cases.&lt;/p&gt;

&lt;p&gt;I will list down &lt;code&gt;kubectl&lt;/code&gt; commands in the sections below as a quick reference to work with Kubernetes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;List Resources&lt;/li&gt;
&lt;li&gt;Create Resources&lt;/li&gt;
&lt;li&gt;Update Resources&lt;/li&gt;
&lt;li&gt;Display the State of Resources&lt;/li&gt;
&lt;li&gt;Delete Resources&lt;/li&gt;
&lt;li&gt;Execute Command&lt;/li&gt;
&lt;li&gt;Print Container Logs&lt;/li&gt;
&lt;li&gt;Modify Kubeconfig Files&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  List Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Get list of all namespaces
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get namespaces
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Get list of all pods
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Get list of all pods with detailed information like IP, Node Name etc...
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods -o wide
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Get list of all pods running on a particular node server
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods --field-selector=spec.nodeName=[server-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Get list of all replication controllers and services
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get replicationcontroller,services
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Get list of daemonsets
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get daemonset
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a new namespace
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl create namespace [namespace-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create a new namespace from JSON or YAML file.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl create –f [filename]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Update Resources
&lt;/h2&gt;

&lt;p&gt;To apply or update a resource use the &lt;code&gt;kubectl apply&lt;/code&gt; command.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a new service with the definition contained in [service-config].yaml
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f [service-config].yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create a new replication controller with the definition contained in [controller-config].yaml
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f [controller-config].yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create the objects defined in any .yaml, .yml, or .json file in a directory
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f [yaml-file/directory-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Edit a service config
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl edit svc/[service-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Above command opens the file in your default editor. To choose another editor, specify it in front of the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;KUBE_EDITOR=”[editor-name]” kubectl edit svc/[service-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Display the State of Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Get Details about Particular Node
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl describe nodes [node-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Get Details about a Particular pod
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl describe pods [pod-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Get Details about a Particular pod whose name and type are listed in &lt;code&gt;pod.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl describe –f pod.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Get Details about a Particular pod managed by a specific replication controller
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl describe pods [replication-controller-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Get Details about all pods
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl describe pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Delete Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Delete a pod using the name and type mentioned in pod.yaml
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl delete -f pod.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Delete all pods and services with a specific label
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl delete pods,services -l [label-key]=[label-value]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Delete all pods
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl delete pods --all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Execute Command
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Get output from a command run on the first container in a pod
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl exec [pod-name] -- [command]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Get output from a command run on a specific container in a pod
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl exec [pod-name] -c [container-name] -- [command]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Run /bin/bash from a specific pod. The received output comes from the first container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl exec -ti [pod-name] -- /bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Print Container Logs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Print Logs from Pod
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl logs [pod-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Stream Logs from Pod
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl logs -f [pod-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Tail Logs from Pod (Print last 200 logs from pod)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl logs --tail=200 [pod-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Modify Kubeconfig Files
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;kubectl config&lt;/code&gt; command lets you view and modify kubeconfig files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get Current Context
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl config current-context
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Set cluster entry in kubeconfig
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl config set-cluster [cluster-name] --server=[server-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Unset an entry in kubeconfig
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl config unset [property-name]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h2&gt;
  
  
  Thank you for reading
&lt;/h2&gt;

&lt;p&gt;Hope you find these resources useful. If you like what you read and want to see more about system design, microservices, and other technology-related stuff... You can follow me on &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter - &lt;a href="https://twitter.com/vishnuchi?ref_src=twsrc%5Etfw"&gt;Follow @vishnuchi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribe to my weekly newsletter &lt;a href="https://www.getrevue.co/profile/vishnuch"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>6 Observable Patterns to consider for your Microservice</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Fri, 16 Jul 2021 09:35:17 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/6-observable-patterns-to-consider-for-your-microservice-4oh2</link>
      <guid>https://dev.to/vishnuchilamakuru/6-observable-patterns-to-consider-for-your-microservice-4oh2</guid>
      <description>&lt;p&gt;When any Microservice is deployed to production, you most probably want&lt;br&gt;
to know what the application is doing like &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No of requests per second&lt;/li&gt;
&lt;li&gt;Memory Utilization of application instances&lt;/li&gt;
&lt;li&gt;CPU utilization of application instances &lt;/li&gt;
&lt;li&gt;Disk Utilization of application instances etc...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You also need to be alerted if there’s a problem, such as a failed service instance or a disk filling up, ideally before it impacts a user. If there’s a problem, you need to be able to troubleshoot and identify the root cause.&lt;/p&gt;

&lt;p&gt;Many aspects of managing an application in production are outside the scope of the developer, such as monitoring hardware availability and utilization. These are clearly the responsibility of operations. But there are several patterns that you, as a service developer must implement to make your service easier to manage and troubleshoot. Below are 6 key Observable patterns that you need to consider for your Microservice&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Health Check API&lt;/li&gt;
&lt;li&gt;Log Aggregation&lt;/li&gt;
&lt;li&gt;Distributed Tracing&lt;/li&gt;
&lt;li&gt;Exception Tracking&lt;/li&gt;
&lt;li&gt;Application Metrics&lt;/li&gt;
&lt;li&gt;Audit Logging&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Health Check API
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Expose an endpoint that returns the health of the service.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A service instance needs to be able to tell the deployment infrastructure whether or not it’s able to handle requests. A good solution is for a service to implement a health check endpoint.&lt;/p&gt;

&lt;p&gt;For example, implement a &lt;code&gt;GET /health&lt;/code&gt; endpoint, which returns 200 if and only if the service is healthy, and 503 otherwise.&lt;/p&gt;

&lt;p&gt;The deployment infrastructure periodically invokes this endpoint to determine the health of the service instance and takes the appropriate action if it’s unhealthy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Log Aggregation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Log service activity and write logs into a centralized logging server, which provides searching and alerting.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Logs are a valuable troubleshooting tool. If you want to know what’s wrong with your application, a good place to start is the log files. But using logs in a microservice architecture is challenging. &lt;/p&gt;

&lt;p&gt;Most of the time, the log entries you need are scattered across the log files of the API gateway and several services. The solution is to use log aggregation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ukG7E-tY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626425209339/L9Xd0yIXM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ukG7E-tY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626425209339/L9Xd0yIXM.png" alt="log-aggregation-pipeline.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The log aggregation pipeline sends the logs of all of the service instances to a centralized logging server. Once the logs are stored by the logging server, you can view, search, and analyze them. You can also configure alerts that are triggered when certain messages appear in the logs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Distributed Tracing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Assign each external request a unique ID and trace requests as they flow between services.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A good way to get insight into what your application is doing is to use distributed tracing. Distributed tracing is analogous to a performance profiler in a monolithic application. It records information (Ex: start time and end time) about the tree of service calls that are made when handling a request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exception Tracking
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Report exceptions to an exception tracking service, which de-duplicates exceptions, alerts developers and tracks the resolution of each&lt;br&gt;
exception.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A service should rarely log an exception, and when it does, it’s important that you identify the root cause. The exception might be a symptom of a failure or a programming bug. The traditional way to view exceptions is to look in the logs. You might even configure the logging server to alert you if an exception appears in the log file. A better approach is to use an exception tracking service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Application Metrics
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Services maintain metrics, such as counters and gauges, and expose them to a metrics server&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A key part of the production environment is monitoring and alerting. So it's important to have a monitoring system that gathers metrics, which provide critical information&lt;br&gt;
about &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Health of an application, from every part of the technology stack.&lt;/li&gt;
&lt;li&gt;Metrics range from infrastructure-level metrics, such as CPU, memory, and disk utilization, to application-level metrics, such as service request latency and a number of requests executed, etc...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ex: &lt;a href="https://newrelic.com/"&gt;Newrelic&lt;/a&gt;, &lt;a href="https://www.datadoghq.com/product/apm/"&gt;Datadog&lt;/a&gt;, etc...&lt;/p&gt;

&lt;h2&gt;
  
  
  Audit Logging
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Log user actions&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The purpose of audit logging is to record each user’s actions. An audit log is typically used to help customer support, ensure compliance, and detect suspicious behavior.Each audit log entry records the identity of the user, the action they performed, and the business objects.&lt;/p&gt;



&lt;h2&gt;
  
  
  Thank you for reading
&lt;/h2&gt;

&lt;p&gt;Hope you find these resources useful. If you like what you read and want to see more about system design, microservices, and other technology-related stuff... You can follow me on &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter - &lt;a href="https://twitter.com/vishnuchi?ref_src=twsrc%5Etfw"&gt;Follow @vishnuchi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribe to my weekly newsletter &lt;a href="https://www.getrevue.co/profile/vishnuch"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>microservices</category>
      <category>architecture</category>
      <category>distributedsystems</category>
    </item>
    <item>
      <title>Interprocess Communication in Microservices</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Mon, 12 Jul 2021 09:56:00 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/interprocess-communication-in-microservices-3l32</link>
      <guid>https://dev.to/vishnuchilamakuru/interprocess-communication-in-microservices-3l32</guid>
      <description>&lt;p&gt;There are lots of different technologies available to choose from that can be used to communicate between your microservices. In this blog post, I will explain a few important ways that can be used to communicate between microservices. &lt;/p&gt;

&lt;p&gt;The communication between microservices can be one of the following two ways.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Synchronous  Communication&lt;/li&gt;
&lt;li&gt;Asynchronous  Communication&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Synchronous Communication is real-time communication between two services. The caller service will wait until it gets the response from the invoked service within the configured timeout threshold.&lt;/p&gt;

&lt;p&gt;Services can use synchronous request/response-based HTTP communication mechanisms, such as&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REST&lt;/li&gt;
&lt;li&gt;gRPC&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  REST
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;REST&lt;/strong&gt; is an acronym for &lt;strong&gt;RE&lt;/strong&gt;presentational &lt;strong&gt;S&lt;/strong&gt;tate &lt;strong&gt;T&lt;/strong&gt;ransfer. It is an architectural style for distributed hypermedia systems and was first presented by Roy Fielding in 2000.&lt;/p&gt;

&lt;p&gt;REST also does have it's own 6 guiding constraints which must be satisfied if an interface needs to be referred to as RESTful. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1. Uniform interface&lt;/strong&gt; - A resource in the system should have only one logical URI, and that should provide a way to fetch related or additional data.&lt;/li&gt;
&lt;li&gt;*&lt;em&gt;2. Client-server *&lt;/em&gt; - This constraint essentially means that client application and server application MUST be able to evolve separately without any dependency on each other. A client should know only resource URIs, and that’s all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3. Stateless&lt;/strong&gt; - Make all client-server interactions stateless. The server will not store anything about the latest HTTP request the client made. It will treat every request as new. No session, no history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4. Cacheable&lt;/strong&gt; - In REST, caching shall be applied to resources when applicable, and then these resources MUST declare themselves cacheable. Caching can be implemented on the server or client-side&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5. Layered system&lt;/strong&gt; - REST allows you to use a layered system architecture where you deploy the APIs on server A, and store data on server B and authenticate requests in Server C, for example. A client cannot ordinarily tell whether it is connected directly to the end server or an intermediary along the way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;6. Code on demand (optional)&lt;/strong&gt; - Most of the time, you will be sending the static representations of resources in the form of XML or JSON. But when you need to, you are free to return executable code. 
e.g., clients may call your API to get a UI widget rendering code. It is permitted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Find out more details about REST constraints &lt;a href="https://restfulapi.net/rest-architectural-constraints/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  gRPC
&lt;/h3&gt;

&lt;p&gt;gRPC is a modern, open-source, high-performance remote procedure call (RPC) framework that can run anywhere. gRPC enables client and server applications to communicate transparently and simplifies the building of connected systems. It was initially developed at Google in 2015 as the next generation of the RPC infrastructure Stubby.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgrpc.io%2Fimg%2Flanding-2.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgrpc.io%2Fimg%2Flanding-2.svg" alt="grpc-architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In gRPC, a client application can directly call a method on a server application on a different machine as if it were a local object, making it easier for you to create distributed applications and services.&lt;/p&gt;

&lt;p&gt;On the server-side, the server implements this interface and runs a gRPC server to handle client calls. On the client-side, the client has a stub (referred to as just a client in some languages) that provides the same methods as the server.&lt;/p&gt;

&lt;p&gt;By default, gRPC uses &lt;a href="https://developers.google.com/protocol-buffers/docs/overview" rel="noopener noreferrer"&gt;Protocol Buffers&lt;/a&gt;, Google’s mature open source mechanism for serializing structured data (although it can be used with other data formats such as JSON). &lt;/p&gt;

&lt;p&gt;Find out more details about gRPC &lt;a href="https://grpc.io/docs/what-is-grpc/introduction/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Asynchronous  Communication
&lt;/h2&gt;

&lt;p&gt;Asynchronous Communication is when you send a message without expecting an immediate response from the invoked service. The caller service will just send the request and invoked service will queue the request and process it. &lt;/p&gt;

&lt;p&gt;Services can use asynchronous, message-based communication mechanisms such as &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Message Queues &lt;/li&gt;
&lt;li&gt;Pub/Sub&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Message Queues
&lt;/h3&gt;

&lt;p&gt;A message queue is an architecture that provides asynchronous communication, allowing microservices to interact with each other without coupling. These messages are then stored (in memory or persisted) in a queue and processed by another microservice (called the Consumer).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--N8xIKEcs--%2Fc_imagga_scale%2Cf_auto%2Cfl_progressive%2Ch_420%2Cq_auto%2Cw_1000%2Fhttps%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frzk2zcsmsfa9fmmcz40a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--N8xIKEcs--%2Fc_imagga_scale%2Cf_auto%2Cfl_progressive%2Ch_420%2Cq_auto%2Cw_1000%2Fhttps%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frzk2zcsmsfa9fmmcz40a.png" alt="message-queues"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below are the few popular Messaging Queues that can be used for your application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.rabbitmq.com/" rel="noopener noreferrer"&gt;RabbitMQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://activemq.apache.org/" rel="noopener noreferrer"&gt;Apache ActiveMQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ibm.com/in-en/products/mq" rel="noopener noreferrer"&gt;IBM MQ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pub/Sub
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdashbird.io%2Fwp-content%2Fuploads%2F2021%2F01%2Fpub-sub-messaging.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdashbird.io%2Fwp-content%2Fuploads%2F2021%2F01%2Fpub-sub-messaging.png" alt="pub-sub-architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pub/Sub enables you to create systems of event producers and consumers, called publishers and subscribers. Publishers communicate with subscribers asynchronously by broadcasting events, rather than by synchronous calls.&lt;/p&gt;

&lt;p&gt;Publishers send events to the Pub/Sub service, without regard to how or when these events will be processed. Pub/Sub then delivers events to all services that need to react to them. &lt;/p&gt;

&lt;p&gt;Compared to synchronous communication through REST or RPCs, where publishers must wait for subscribers to receive the data, such asynchronous integration increases the flexibility and robustness of the system overall.&lt;/p&gt;

&lt;p&gt;Below are the few popular pub/sub services that can be used for your application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kafka.apache.org/" rel="noopener noreferrer"&gt;Apache Kafka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cloud.google.com/pubsub" rel="noopener noreferrer"&gt;Google pub/sub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/sns/" rel="noopener noreferrer"&gt;AWS SNS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://redis.io/topics/pubsub" rel="noopener noreferrer"&gt;Redis pub/sub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://restfulapi.net/rest-architectural-constraints/" rel="noopener noreferrer"&gt;https://restfulapi.net/rest-architectural-constraints/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grpc.io/docs/what-is-grpc/introduction/" rel="noopener noreferrer"&gt;https://grpc.io/docs/what-is-grpc/introduction/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h2&gt;
  
  
  Thank you for reading
&lt;/h2&gt;

&lt;p&gt;Hope you find these resources useful. If you like what you read and want to see more about system design, microservices, and other technology-related stuff... You can follow me on &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Twitter&lt;/strong&gt; - &lt;a href="https://twitter.com/vishnuchi?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;Follow @vishnuchi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribe to my weekly newsletter &lt;a href="https://www.getrevue.co/profile/vishnuch" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>architecture</category>
      <category>discuss</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>5 Open-Source Search Engines For your Website</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Mon, 05 Jul 2021 08:34:10 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/5-open-source-search-engines-for-your-website-31np</link>
      <guid>https://dev.to/vishnuchilamakuru/5-open-source-search-engines-for-your-website-31np</guid>
      <description>&lt;p&gt;A &lt;strong&gt;search engine&lt;/strong&gt; is a software program that helps people find the information they are looking for online using search queries containing keywords or phrases.&lt;/p&gt;

&lt;p&gt;Search engines are able to return results quickly even with millions of records by indexing every data record they find. In this blog post, I will list 5 popular open-source search engines which can be used to build search functionality in your website.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apache Lucene&lt;/li&gt;
&lt;li&gt;Apache Solr&lt;/li&gt;
&lt;li&gt;Elasticsearch&lt;/li&gt;
&lt;li&gt;MeiliSearch&lt;/li&gt;
&lt;li&gt;Typesense&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Apache Lucene
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi2.wp.com%2Fwww.cmsbestpractices.com%2Fwp-content%2Fuploads%2F2014%2F04%2Flucene-logo.png%3Fssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi2.wp.com%2Fwww.cmsbestpractices.com%2Fwp-content%2Fuploads%2F2014%2F04%2Flucene-logo.png%3Fssl%3D1" alt="apache-lucene"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://lucene.apache.org/" rel="noopener noreferrer"&gt;Apache Lucene&lt;/a&gt; is a free and open-source search engine software library, originally written completely in Java. It is supported by the Apache Software Foundation and is released under the Apache Software License.&lt;br&gt;
It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.&lt;/p&gt;

&lt;p&gt;Below are some of the key features of Apache Lucene.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Indexing&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Spellchecking&lt;/li&gt;
&lt;li&gt;Keyword Highlighting &lt;/li&gt;
&lt;li&gt;Advanced analysis/tokenization capabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Apache Solr
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fnorconex.com%2Fwp-content%2Fuploads%2FSolr_Logo_on_white_web.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fnorconex.com%2Fwp-content%2Fuploads%2FSolr_Logo_on_white_web.png" alt="apache-solr"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://solr.apache.org/" rel="noopener noreferrer"&gt;Apache Solr&lt;/a&gt; is the popular, blazing-fast, open-source enterprise search platform built on Apache Lucene. Solr is a standalone search server with a REST-like API. You can put documents in it (called "indexing") via JSON, XML, CSV, or binary over HTTP. You query it via HTTP GET and receive JSON, XML, CSV, or binary results. &lt;/p&gt;

&lt;p&gt;Below are some of the key features of Solr.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;*&lt;em&gt;Advanced Full-Text Search Capabilities *&lt;/em&gt;: Solr enables powerful matching capabilities including phrases, wildcards, joins, grouping, and much more across any data type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimized for High Volume Traffic&lt;/strong&gt;: Solr is proven at extremely large scales the world over&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Comprehensive Administration Interfaces&lt;/strong&gt;: Solr provides a responsive administrative user interface to make it easy to control your Solr instances.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Easy Monitoring&lt;/strong&gt;: Solr publishes loads of metric data via JMX which helps to get more insights about your Solr instances.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Elasticsearch
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fencrypted-tbn0.gstatic.com%2Fimages%3Fq%3Dtbn%3AANd9GcTAy3mYnTuHNa6Rb1OFOq6y3bnu4RcjTHgOvebV2ksmaqTHiPbIqUAjsuKMPNACaNbmLxA%26usqp%3DCAU" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fencrypted-tbn0.gstatic.com%2Fimages%3Fq%3Dtbn%3AANd9GcTAy3mYnTuHNa6Rb1OFOq6y3bnu4RcjTHgOvebV2ksmaqTHiPbIqUAjsuKMPNACaNbmLxA%26usqp%3DCAU" alt="elasticsearch"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.elastic.co/elasticsearch/" rel="noopener noreferrer"&gt;Elasticsearch&lt;/a&gt; is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases. It is built based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.&lt;/p&gt;

&lt;p&gt;Elasticsearch provides key features like Advanced Full-Text Search Capabilities like Data indexing, Search capabilities including phrases, wildcards, auto suggestions, filters &amp;amp; facets, etc... Elasticsearch can also be used for other use-cases like&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logs - Storing logs via ELK (Elasticsearch, Logstash, Kibana)&lt;/li&gt;
&lt;li&gt;Metrics - Monitor and Visualise your system metrics&lt;/li&gt;
&lt;li&gt;APM - Get insights into your application performance&lt;/li&gt;
&lt;li&gt;App Search - Search across your documents, geodata, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  MeiliSearch
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fprofile_images%2F1083373459839832066%2Fumk6BM0F_400x400.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fprofile_images%2F1083373459839832066%2Fumk6BM0F_400x400.jpg" alt="meiliSearch"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.meilisearch.com/" rel="noopener noreferrer"&gt;MeiliSearch&lt;/a&gt; is an open-source, blazingly fast and hyper-relevant search engine that will improve your search experience. It provides an extensive toolset for customization. It works out-of-the-box with a preset that easily answers the needs of most applications. Communication is done with a RESTful API because most developers are already familiar with its norms.&lt;/p&gt;

&lt;p&gt;Below are the few key features of MeiliSearch.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;*&lt;em&gt;Synonyms *&lt;/em&gt;: Ability to create synonyms for a better search experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Highlight&lt;/strong&gt;: With highlight, users understand their search results and act upon them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Relevancy&lt;/strong&gt;: It gives you the possibility to add new sorting rules. You can order results by date, likes, whatever suits your dataset.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filters&lt;/strong&gt;: Improve your search query by adding custom filters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faceting&lt;/strong&gt;: Empower users to drill down on search results and find what they need faster.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Typesense
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fprofile_images%2F1392352271111888901%2F5vvtoxsS_400x400.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpbs.twimg.com%2Fprofile_images%2F1392352271111888901%2F5vvtoxsS_400x400.jpg" alt="typesense"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://typesense.org/" rel="noopener noreferrer"&gt;Typesense&lt;/a&gt; is a fast, typo-tolerant search engine for building delightful search experiences. It claims that it is an Easier-to-Use ElasticSearch Alternative &amp;amp; an Open Source Algolia Alternative.&lt;/p&gt;

&lt;p&gt;Below are few key features of Typesense&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Typo Tolerance&lt;/strong&gt;: Handles typographical errors elegantly, out-of-the-box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple and Delightful&lt;/strong&gt;: Simple to set up, integrate with, operate, and scale.
-⚡** Blazing Fast**: Built-in C++. Meticulously architected from the ground-up for low-latency (&amp;lt;50ms) instant searches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tunable Ranking&lt;/strong&gt;: Easy to tailor your search results to perfection.
Sorting: Sort results based on a particular field at query time (helpful for features like "Sort by Price").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Faceting &amp;amp; Filtering&lt;/strong&gt;: Drill down and refine results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grouping &amp;amp; Distinct&lt;/strong&gt;: Group similar results together to show more variety.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Federated Search&lt;/strong&gt;: Search across multiple collections (indices) in a single HTTP request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Synonyms&lt;/strong&gt;: Define words as equivalents of each other, so searching for a word will also return results for the synonyms defined.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geo search&lt;/strong&gt; - Search and sort by results around a geographic location &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other Popular Enterprise Search Engines
&lt;/h2&gt;

&lt;p&gt;Below are a few other popular Enterprise Search Engines that are not free&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.algolia.com/" rel="noopener noreferrer"&gt;Algolia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://swiftype.com/" rel="noopener noreferrer"&gt;Swiftype&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.klevu.com/" rel="noopener noreferrer"&gt;Klevu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h2&gt;
  
  
  Thank you for reading
&lt;/h2&gt;

&lt;p&gt;Hope you find these resources useful. If you like what you read and want to see more about system design, microservices, and other technology-related stuff... You can follow me on &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter - &lt;a href="https://twitter.com/vishnuchi?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;Follow @vishnuchi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribe to my weekly newsletter &lt;a href="https://www.getrevue.co/profile/vishnuch" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>elasticsearch</category>
      <category>opensource</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Docker Cheatsheet</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Sat, 26 Jun 2021 08:49:17 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/docker-cheatsheet-39fa</link>
      <guid>https://dev.to/vishnuchilamakuru/docker-cheatsheet-39fa</guid>
      <description>&lt;p&gt;Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production. In this post, I will mention docker commands which we need or most of the use-cases.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lifecycle Commands&lt;/li&gt;
&lt;li&gt;Starting and Stopping Containers&lt;/li&gt;
&lt;li&gt;Docker Image Commands&lt;/li&gt;
&lt;li&gt;Docker Container And Image Information&lt;/li&gt;
&lt;li&gt;Network Commands&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lifecycle Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a container (without starting it):
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker create [IMAGE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Rename an existing container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker rename [CONTAINER_NAME] [NEW_CONTAINER_NAME]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Run a command in a new container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker run [IMAGE] [COMMAND]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Remove container after it exits
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker run --rm [IMAGE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Start a container and keep it running
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker run -td [IMAGE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Start a container and creates an interactive bash shell in the container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker run -it [IMAGE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create, Start, and run a command inside the container and remove the container after executing command.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker run -it-rm [IMAGE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Execute command inside already running container.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker exec -it [container]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Delete a container (if it is not running)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker rm [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Update the configuration of the container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker update [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Starting and Stopping Containers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start Container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker start [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Stop running Container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker stop [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Stop running Container and start it again
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker restart [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Pause processes in a running container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker pause [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Unpause processes in a running container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker unpause [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Block a container until others stop
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker wait [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Kill a container by sending a SIGKILL to a running container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker kill [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Attach local standard input, output, and error streams to a running container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker attach [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Docker Image Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create an image from a Dockerfile
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker build [URL/FILE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create an image from a Dockerfile with Tags
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker build -t &amp;lt;tag&amp;gt; [URL/FILE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Pull an image from a registry
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker pull [IMAGE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Push an image to a registry
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker push [IMAGE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create an image from a tarball
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker import [URL/FILE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create an image from a container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker commit [CONTAINER] [NEW_IMAGE_NAME]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Remove an image
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker rmi [IMAGE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Load an image from a tar archive or stdin
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker load [TAR_FILE/STDIN_FILE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Save an image to a tar archive
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker save [IMAGE] &amp;gt; [TAR_FILE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Docker Container And Image Information
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;List running containers
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Lists both running containers and ones that have stopped
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker ps -a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;List the logs from a running container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker logs [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;List low-level information on Docker objects
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker inspect [OBJECT_NAME/ID]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;List real-time events from a container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker events [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Show port mapping for a container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker port [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Show running processes in a container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker top [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Show live resource usage statistics of container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker stats [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Show changes to files (or directories) on a filesystem
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker diff [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;List all images that are locally stored with the docker engine
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker [image] ls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Show the history of an image
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker history [IMAGE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Network Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;List networks
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker network ls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Remove one or more networks
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker network rm [NETWORK]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Show information on one or more networks
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker network inspect [NETWORK]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Connects a container to a network
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker network connect [NETWORK] [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Disconnect a container from a network
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;docker network disconnect [NETWORK] [CONTAINER]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h2&gt;
  
  
  Thank you for reading
&lt;/h2&gt;

&lt;p&gt;Hope you find these resources useful. If you like what you read and want to see more about system design, microservices, and other technology-related stuff... You can follow me on &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter - &lt;a href="https://twitter.com/vishnuchi?ref_src=twsrc%5Etfw"&gt;Follow @vishnuchi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribe to my weekly newsletter &lt;a href="https://www.getrevue.co/profile/vishnuch"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>10 Websites To Find Your Next Programming Course</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Fri, 25 Jun 2021 08:36:55 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/10-websites-to-find-your-next-programming-course-526l</link>
      <guid>https://dev.to/vishnuchilamakuru/10-websites-to-find-your-next-programming-course-526l</guid>
      <description>&lt;p&gt;In this blog, I will list the Top 10 Popular Websites where you can find Programming-related courses covering multiple topics including Frontend &amp;amp; Backend Development.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Freecodecamp
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--lfMhrPQM--%2Fc_imagga_scale%2Cf_auto%2Cfl_progressive%2Ch_900%2Cq_auto%2Cw_1600%2Fhttps%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frphqzfoh2cbz3zj8m8t1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fpracticaldev%2Fimage%2Ffetch%2Fs--lfMhrPQM--%2Fc_imagga_scale%2Cf_auto%2Cfl_progressive%2Ch_900%2Cq_auto%2Cw_1600%2Fhttps%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frphqzfoh2cbz3zj8m8t1.png" alt="freecodecamp-logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;Freecodecamp&lt;/a&gt; provides multiple courses starting from Python, Responsive Web Design, Javascript Algorithms &amp;amp; Data Structures, React, Machine Learning, Data Analysis, etc...&lt;/p&gt;

&lt;p&gt;They also offer tutorials/courses on how to build real-world applications in multiple programming languages like Ruby on Rails, Python, Node Js, etc... in their &lt;a href="https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ" rel="noopener noreferrer"&gt;YouTube Channel&lt;/a&gt; and its pretty popular one.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Coursera
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmms.businesswire.com%2Fmedia%2F20210330006145%2Fen%2F868463%2F22%2Fcoursera-logo-full-rgb_%25282%2529.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmms.businesswire.com%2Fmedia%2F20210330006145%2Fen%2F868463%2F22%2Fcoursera-logo-full-rgb_%25282%2529.jpg" alt="coursera-logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.coursera.org/" rel="noopener noreferrer"&gt;Coursera&lt;/a&gt; is a popular website where you can find courses from popular Ivy League colleges. It provides courses in multiple subjects ranging from Programming Languages, Data Engineering, Machine Learning, Mobile Development, Cloud Computing, etc...&lt;/p&gt;

&lt;p&gt;It offers Paid certifications and Free courses as well. If you want to just learn the contents of the course irrespective of certification you can just Audit the course.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Udemy
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthesecurityhub.org%2Fwp-content%2Fuploads%2F2021%2F04%2FUdemy-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthesecurityhub.org%2Fwp-content%2Fuploads%2F2021%2F04%2FUdemy-1.jpg" alt="udemy-logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.udemy.com/" rel="noopener noreferrer"&gt;Udemy&lt;/a&gt; is the most popular website where most of the developers and people from the tech community refer to. Udemy is pretty much like a marketplace of courses where Instructors can signup and create courses. If you are an expert in any domain you can create a course on the same and upload it in Udemy. &lt;/p&gt;

&lt;p&gt;Udemy has many great courses for almost all Programming Languages, Databases, Mobile development, Frontend, and Backend technologies.&lt;/p&gt;

&lt;p&gt;Most of the Udemy Courses are paid courses. It offers great discounts on selected courses most of the time. So make sure u check out offers for your course before you purchase it.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. LinkedIn Learning
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fs3.amazonaws.com%2Fmedia.al-fanarmedia.org%2Fwp-content%2Fuploads%2F2020%2F04%2F29065717%2Flinkedin-learning-%25D9%2584%25D9%258A%25D9%2586%25D9%2583%25D8%25AF-%25D8%25A5%25D9%2586.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fs3.amazonaws.com%2Fmedia.al-fanarmedia.org%2Fwp-content%2Fuploads%2F2020%2F04%2F29065717%2Flinkedin-learning-%25D9%2584%25D9%258A%25D9%2586%25D9%2583%25D8%25AF-%25D8%25A5%25D9%2586.jpg" alt="linkedin-learning"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/learning" rel="noopener noreferrer"&gt;LinkedIn Learning&lt;/a&gt; offers video courses often taught by domain and industry experts in business, leadership, creative, and software technologies. It is one of the subsidiaries of LinkedIn. Most of the courses in LinkedIn Learning fall into 3 categories.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business&lt;/li&gt;
&lt;li&gt;Creative&lt;/li&gt;
&lt;li&gt;Technology&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It offers paid courses and the first month of your LinkedIn learning is free.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Pluralsight
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjamiemaguire.net%2Fwp-content%2Fuploads%2F2020%2F02%2F2020-02-04_14-11-53.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjamiemaguire.net%2Fwp-content%2Fuploads%2F2020%2F02%2F2020-02-04_14-11-53.png" alt="pluralsight-logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pluralsight.com/" rel="noopener noreferrer"&gt;Pluralsight&lt;/a&gt; offers a variety of video training courses for software developers, IT administrators, and creative professionals. It provides multiple products like &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paths - Where courses are curated by Experts based on difficulty level to learn the skill. &lt;/li&gt;
&lt;li&gt;Course Discussions - Where you can engage and discuss with the community and experts to discuss course-related topics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It offers paid courses and the first 10 days of free subscription on signup.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Udacity
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fideahuntr.com%2Fwp-content%2Fuploads%2F2021%2F03%2FUdacity-Running-a-Flash-Sale-75-Off-Through-the-End.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fideahuntr.com%2Fwp-content%2Fuploads%2F2021%2F03%2FUdacity-Running-a-Flash-Sale-75-Off-Through-the-End.png" alt="udacity-logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.udacity.com/" rel="noopener noreferrer"&gt;Udacity&lt;/a&gt; offers Nanodegree programs that are built in partnership with the tech companies and taught by industry leaders like&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google&lt;/li&gt;
&lt;li&gt;Amazon&lt;/li&gt;
&lt;li&gt;IBM&lt;/li&gt;
&lt;li&gt;Microsoft &lt;/li&gt;
&lt;li&gt;Intel etc...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It provides courses in subjects like Programming, Databases, Machine Learning, Artificial Intelligence, Robotics, Self-Driving Cars, etc...It also provides financial aid to the learners based on their merit and performance in the Nanodegree Program.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. FutureLearn
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.kent.ac.uk%2Fmedia%2Fnews%2F2020%2F12%2F00_FL_Main_logo_RGB-e1607088347134.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fstatic.kent.ac.uk%2Fmedia%2Fnews%2F2020%2F12%2F00_FL_Main_logo_RGB-e1607088347134.jpeg" alt="futurelearn"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.futurelearn.com/" rel="noopener noreferrer"&gt;FutureLearn&lt;/a&gt; is a UK-based digital educational platform founded in 2012. It is a Massive Open Online Course learning platform and it has almost 250 UK + International partners offering courses in multiple subjects ranging from Business, Creative Arts, Healthcare, IT &amp;amp; Computer Science, Law, Literature, etc...&lt;/p&gt;

&lt;p&gt;It offers a flexible monthly subscription plan and a 7-day free trial as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Datacamp
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fdyd911kmh%2Fimage%2Fupload%2Ff_auto%2Cq_auto%3Abest%2Fv1603223608%2FDC_New_mugdv8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Fdyd911kmh%2Fimage%2Fupload%2Ff_auto%2Cq_auto%3Abest%2Fv1603223608%2FDC_New_mugdv8.png" alt="datacamp"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.datacamp.com/" rel="noopener noreferrer"&gt;Datacamp&lt;/a&gt; provides specialization courses related to &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Engineering&lt;/li&gt;
&lt;li&gt;Machine Learning&lt;/li&gt;
&lt;li&gt;Artificial Intelligence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It provides Courses, Career and Skill Tracks on Data courses with R, Python, etc...If you are someone who is looking for Data Engineering related courses, this is the best place to start. It offers Personal and Business plans with different pricing levels.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Educative
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcouponbarrow.com%2Fwp-content%2Fuploads%2F2020%2F06%2Feducative.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcouponbarrow.com%2Fwp-content%2Fuploads%2F2020%2F06%2Feducative.jpg" alt="educative"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.educative.io/" rel="noopener noreferrer"&gt;Educative&lt;/a&gt; provides technology courses where you can learn without the hassle of environment setup or videos. It is trusted by the learners working in tech giants like Microsoft, Netflix, Facebook, Google, etc... (as mentioned on the website).&lt;/p&gt;

&lt;p&gt;Learners can buy a monthly/annual subscription plan or can purchase the individual course.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Treehouse
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcouponbarrow.com%2Fwp-content%2Fuploads%2F2017%2F06%2Fteamtreehouse-discount-coupon.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcouponbarrow.com%2Fwp-content%2Fuploads%2F2017%2F06%2Fteamtreehouse-discount-coupon.jpg" alt="treehouse"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://teamtreehouse.com/" rel="noopener noreferrer"&gt;Treehouse&lt;/a&gt; or is an online technology school that offers beginner to advanced courses in &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web Design&lt;/li&gt;
&lt;li&gt;Web Development&lt;/li&gt;
&lt;li&gt;Mobile Development&lt;/li&gt;
&lt;li&gt;Game Development. 
Its courses are aimed at beginners looking to learn coding skills for a career in the tech industry.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It offers a 7-day free trial as well after which you need to subscribe for monthly plans.&lt;/p&gt;

&lt;p&gt;Hope you like the article.&lt;/p&gt;



&lt;h2&gt;
  
  
  Thank you for reading
&lt;/h2&gt;

&lt;p&gt;Hope you find these resources useful. If you like what you read and want to see more about system design, microservices, and other technology-related stuff... You can follow me on &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter - &lt;a href="https://twitter.com/vishnuchi?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;Follow @vishnuchi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribe to my weekly newsletter &lt;a href="https://www.getrevue.co/profile/vishnuch" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>codenewbie</category>
      <category>discuss</category>
    </item>
    <item>
      <title>6 JSON Tools to Improve Your Productivity</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Fri, 18 Jun 2021 16:02:16 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/6-json-tools-to-improve-your-productivity-1nif</link>
      <guid>https://dev.to/vishnuchilamakuru/6-json-tools-to-improve-your-productivity-1nif</guid>
      <description>&lt;p&gt;&lt;a href="http://json.org" rel="noopener noreferrer"&gt;JSON&lt;/a&gt;  is a data format with a number of data types such as strings,  booleans, lists, numbers, objects, etc... It is one of the popular, easiest, and lightweight and formats used for interaction between services. In this blog post, I will list down 10 JSON tools that help to improve your parse, format, and visualize JSON in a better and easier way.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. JSON Formatter
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://jsonformatter.org/" rel="noopener noreferrer"&gt;JsonFormatter&lt;/a&gt; helps to &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Format/ Beautify JSON&lt;/li&gt;
&lt;li&gt;Validate JSON&lt;/li&gt;
&lt;li&gt;Minify JSON&lt;/li&gt;
&lt;li&gt;Convert JSON to XML, YAML, CSV&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1624028346960%2F9v_y9VMfJ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1624028346960%2F9v_y9VMfJ.png" alt="json-formatter-sample.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. JSONLint
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://jsonlint.com/" rel="noopener noreferrer"&gt;JSONLint&lt;/a&gt; is a validator and reformatter for JSON. We can copy and paste, or we can also directly type or input a URL in the editor and let JSONLint validate our messy JSON code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1624028666557%2FlAn_wglhn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1624028666557%2FlAn_wglhn.png" alt="json-lint-sample.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. JSONView Chrome Plugin
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=en" rel="noopener noreferrer"&gt;JSONView&lt;/a&gt; is a Chrome Plugin that offers features of JSON support, Syntax highlighting, Collapsible trees, with indent guides, Clickable URLs, Toggle between raw and parsed JSON.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FpU1ohvz2jA-ATpgro8SzrQVKH0-2L-MaMUrYU9luikwUeQ4nOK12vFUC1bPD65Oq7p0S7eTKANCmjN35enKNhe_i" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FpU1ohvz2jA-ATpgro8SzrQVKH0-2L-MaMUrYU9luikwUeQ4nOK12vFUC1bPD65Oq7p0S7eTKANCmjN35enKNhe_i" alt="jsonview-sample.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. JSON to POJO
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://json2csharp.com/json-to-pojo" rel="noopener noreferrer"&gt;JSON2CSHARP&lt;/a&gt; is another cool online tool that helps to convert JSON to C# or Java Classes. This tool pretty much saves time for you in generating classes to map and parse JSON fields.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1624029655343%2FPxLHE8wvL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1624029655343%2FPxLHE8wvL.png" alt="json-to-java-pojo.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. JSON to POJO In any Programming Language
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://app.quicktype.io/" rel="noopener noreferrer"&gt;Quicktype&lt;/a&gt; is another great online tool that helps to convert JSON to classes/structs in any one of the following programming languages. It supports&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go&lt;/li&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Ruby&lt;/li&gt;
&lt;li&gt;Swift&lt;/li&gt;
&lt;li&gt;Objective-C and many more...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1624030025792%2FQYsiCQGq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1624030025792%2FQYsiCQGq6.png" alt="json-to-golang-struct.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. JSON Pretty Printer
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/deftek/json_pp" rel="noopener noreferrer"&gt;JSON Pretty Printer&lt;/a&gt; utility prints JSON data in a legible, indented format. It provides the most benefit to people who are used to the command line. This tool is pretty useful for developers building or consuming JSON-based APIs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl http://api.plos.org/search\?q\=title:%22Drosophila%22%20and%20body:%22RNA%22\&amp;amp;fl\=id\&amp;amp;start\=1\&amp;amp;rows\=3 | json_pp

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Response Looks like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
   "response" : {
      "numFound" : 1400,
      "docs" : [
         {
            "id" : "10.1371/journal.pone.0188133"
         },
         {
            "id" : "10.1371/journal.pbio.1000320"
         },
         {
            "id" : "10.1371/journal.pbio.0000060"
         }
      ],
      "start" : 1
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hope you like the article.&lt;/p&gt;



&lt;h2&gt;
  
  
  Thank you for reading
&lt;/h2&gt;

&lt;p&gt;Hope you find these resources useful. If you like what you read and want to see more about system design, microservices, and other technology-related stuff... You can follow me on &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter - &lt;a href="https://twitter.com/vishnuchi?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;Follow @vishnuchi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribe to my weekly newsletter &lt;a href="https://www.getrevue.co/profile/vishnuch" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Learn Redis with Class Central Study Group, Earn a Free Certificate</title>
      <dc:creator>Vishnu Chilamakuru</dc:creator>
      <pubDate>Sun, 06 Jun 2021 17:09:17 +0000</pubDate>
      <link>https://dev.to/vishnuchilamakuru/class-central-study-groups-learn-share-and-grow-together-4hod</link>
      <guid>https://dev.to/vishnuchilamakuru/class-central-study-groups-learn-share-and-grow-together-4hod</guid>
      <description>&lt;p&gt;I work at &lt;a href="https://www.classcentral.com/"&gt;Class Central&lt;/a&gt; as a Backend Engineer. Recently, we started free open &lt;a href="https://www.classcentral.com/study-groups"&gt;Study groups&lt;/a&gt; where you can join and learn together with learners around the world with weekly live sessions.&lt;/p&gt;

&lt;p&gt;A month ago, Class Central started the first public study group to take together the course &lt;a href="https://www.classcentral.com/course/mountains-101-7455"&gt;Mountains 101&lt;/a&gt; from the University of Alberta. It’s been a great experience so far to meet other people in the study group and to know about their experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Study Groups?
&lt;/h2&gt;

&lt;p&gt;Before we started the public study group, we used to have our &lt;a href="https://www.classcentral.com/report/tag/study-group/"&gt;internal study groups&lt;/a&gt; where we use to pick one course every month, do it together and discuss the same every week with our learnings and experiences. &lt;/p&gt;

&lt;p&gt;I personally completed the following three courses via our internal study groups.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.classcentral.com/course/mindware-8128"&gt;Mindware: Critical Thinking for the Information Age&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.classcentral.com/course/science-exercise-8679"&gt;Science of Exercise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.classcentral.com/course/sleep-deprivation-16935"&gt;Sleep Deprivation: Habits, Solutions and Strategies Teach-Out&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Normally, I used to signup mostly for Technology related courses like programming, databases, frameworks, etc... Because of our internal study group, I got motivated to take these non-technical courses and the main reason for this is the social activity, discussions, and learning from others' experiences every week. &lt;/p&gt;

&lt;p&gt;Another advantage of study groups I found is because of peers in the group, I feel more motivated to learn and complete the course on schedule :) &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before, I signed up for few courses to complete them on my own. But, most of the time I used to drop out of the course after a couple of weeks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Upcoming Study Groups
&lt;/h2&gt;

&lt;p&gt;Class Central announced three upcoming study groups in three different areas of study (tech, business, humanitarian/psychology) to promote learning and learners around the globe. The invite is open to everyone from all backgrounds to join our study groups.&lt;/p&gt;

&lt;p&gt;All three study groups start on June 16th. Full schedule will be available in the coming days here: (&lt;a href="https://www.classcentral.com/study-groups"&gt;https://www.classcentral.com/study-groups&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;If you are interested in joining one of the following study groups, please &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdPsDiubWauO8-KrTWRj-ehANadB3ZMUodtdO5Nwt_20RS9EQ/viewform?usp=sf_link"&gt;sign up here&lt;/a&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Course&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Basic Info&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Free Certificate&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.classcentral.com/course/happiness-2860"&gt;A Life of Happiness and Fulfillment&lt;/a&gt; from &lt;em&gt;Indian School of Business (ISB)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;6 weeks long, 28 hours of material&lt;/td&gt;
&lt;td&gt;&lt;span&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.classcentral.com/course/independent-introduction-to-redis-data-structures-20293"&gt;Introduction to Redis Data Structures&lt;/a&gt; from &lt;em&gt;Redis University&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;6 weeks long&lt;/td&gt;
&lt;td&gt;&lt;span&gt;yes&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://www.classcentral.com/course/excel-data-analysis-fundamentals-20156"&gt;Excel Fundamentals for Data Analysis&lt;/a&gt; from &lt;em&gt;Macquarie University&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;5 weeks long, 15 hours of material&lt;/td&gt;
&lt;td&gt;&lt;span&gt;no&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can refer to the following link to know about Class Central's upcoming study groups details and signup for the same.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.classcentral.com/study-groups"&gt;https://www.classcentral.com/study-groups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hope to see you soon in the study group :) &lt;/p&gt;



&lt;h2&gt;
  
  
  Thank you for reading
&lt;/h2&gt;

&lt;p&gt;Hope you find these resources useful. If you like what you read and want to see more about system design, microservices, and other technology-related stuff... You can follow me on &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Twitter - &lt;a href="https://twitter.com/vishnuchi?ref_src=twsrc%5Etfw"&gt;Follow @vishnuchi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subscribe to my weekly newsletter &lt;a href="https://www.getrevue.co/profile/vishnuch"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>discuss</category>
      <category>news</category>
    </item>
  </channel>
</rss>
