<?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: NITHISH</title>
    <description>The latest articles on DEV Community by NITHISH (@nithish_34f36c697ad13f6b3).</description>
    <link>https://dev.to/nithish_34f36c697ad13f6b3</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4125465%2F811ac3e0-cf36-4509-8855-f695c6fdc87e.png</url>
      <title>DEV Community: NITHISH</title>
      <link>https://dev.to/nithish_34f36c697ad13f6b3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nithish_34f36c697ad13f6b3"/>
    <language>en</language>
    <item>
      <title>N for Nithish, N for Neptune: My AWS Deep Dive</title>
      <dc:creator>NITHISH</dc:creator>
      <pubDate>Wed, 16 Sep 2026 03:02:02 +0000</pubDate>
      <link>https://dev.to/nithish_34f36c697ad13f6b3/n-for-nithish-n-for-neptune-my-aws-deep-dive-2o4g</link>
      <guid>https://dev.to/nithish_34f36c697ad13f6b3/n-for-nithish-n-for-neptune-my-aws-deep-dive-2o4g</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Exploring Amazon Neptune — AWS's Graph Database for Connected Data&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When we think about databases, we usually imagine tables containing rows and columns. That works very well for many applications. But what happens when the &lt;strong&gt;relationships between the data are just as important as the data itself&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;For example, consider a college:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A student belongs to a department.&lt;/li&gt;
&lt;li&gt;A student works on a project.&lt;/li&gt;
&lt;li&gt;A project uses a technology.&lt;/li&gt;
&lt;li&gt;A professor guides a project.&lt;/li&gt;
&lt;li&gt;Two students may work on the same project.&lt;/li&gt;
&lt;li&gt;A course may require another course as a prerequisite.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are many connections between these entities.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;Amazon Neptune&lt;/strong&gt; becomes interesting.&lt;/p&gt;

&lt;p&gt;Amazon Neptune is a fully managed AWS graph database service designed for applications that work with highly connected datasets. It is optimized for storing and querying relationships between entities.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Amazon Neptune?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Amazon Neptune&lt;/strong&gt; is a managed graph database service provided by AWS.&lt;/p&gt;

&lt;p&gt;Instead of primarily representing information as rows and columns, a graph database represents information using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nodes&lt;/strong&gt; — entities or objects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edges&lt;/strong&gt; — relationships between entities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Properties&lt;/strong&gt; — additional information about nodes or relationships&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        ┌─────────────┐
        │   Nithish   │
        │   Student   │
        └──────┬──────┘
               │
             STUDIES
               │
               ▼
        ┌─────────────┐
        │    AIML     │
        │  Department │
        └──────┬──────┘
               │
             OFFERS
               │
               ▼
        ┌─────────────┐
        │  Machine    │
        │  Learning   │
        └─────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, &lt;code&gt;Nithish&lt;/code&gt;, &lt;code&gt;AIML&lt;/code&gt;, and &lt;code&gt;Machine Learning&lt;/code&gt; are nodes, while &lt;code&gt;STUDIES&lt;/code&gt; and &lt;code&gt;OFFERS&lt;/code&gt; are relationships.&lt;/p&gt;

&lt;p&gt;AWS describes Neptune as a graph database capable of handling highly connected datasets and billions of relationships.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Was Amazon Neptune Created?
&lt;/h1&gt;

&lt;p&gt;Traditional relational databases are excellent for structured data. However, applications involving large numbers of relationships can require many tables, foreign keys, and complex joins.&lt;/p&gt;

&lt;p&gt;Imagine trying to answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Find students who worked on projects involving Python and were guided by professors who teach Machine Learning."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In a relational database, this could involve several tables and joins.&lt;/p&gt;

&lt;p&gt;In a graph database, we can think about the problem as navigating connections:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student
   ↓
worked_on
   ↓
Project
   ↓
uses
   ↓
Python

Student
   ↓
guided_by
   ↓
Professor
   ↓
teaches
   ↓
Machine Learning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Graph databases are designed specifically for these types of connected-data queries. AWS explains that graph databases treat relationships as important parts of the data model, making relationship traversal easier to model and query.&lt;/p&gt;




&lt;h1&gt;
  
  
  How Does Amazon Neptune Work?
&lt;/h1&gt;

&lt;p&gt;The basic architecture can be understood like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             User / Application
                     │
                     ▼
              Application API
                     │
                     ▼
              Amazon Neptune
                     │
        ┌────────────┴────────────┐
        │                         │
      Nodes                     Edges
   (Entities)               (Relationships)
        │                         │
        └────────────┬────────────┘
                     │
                     ▼
                Graph Data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An application sends a graph query to Neptune.&lt;/p&gt;

&lt;p&gt;Neptune then searches through the nodes and relationships to find the required information.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student
   │
   ├── STUDIES ──&amp;gt; Department
   │
   ├── WORKED_ON ──&amp;gt; Project
   │                    │
   │                    └── USES ──&amp;gt; Technology
   │
   └── GUIDED_BY ──&amp;gt; Professor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes Neptune useful when the relationships themselves are important to the application.&lt;/p&gt;

&lt;p&gt;Neptune supports &lt;strong&gt;property graphs&lt;/strong&gt; through &lt;strong&gt;Gremlin and openCypher&lt;/strong&gt;, and &lt;strong&gt;RDF graphs&lt;/strong&gt; through &lt;strong&gt;SPARQL&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Key Features of Amazon Neptune
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Graph Data Model
&lt;/h2&gt;

&lt;p&gt;The biggest feature of Neptune is its graph-oriented data model.&lt;/p&gt;

&lt;p&gt;Instead of thinking only in terms of tables, developers can represent real-world relationships directly.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(Student)-[:WORKED_ON]-&amp;gt;(Project)
(Project)-[:USES]-&amp;gt;(Technology)
(Professor)-[:GUIDES]-&amp;gt;(Project)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is particularly useful for social networks, recommendation systems, knowledge graphs, fraud detection, and other relationship-heavy applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Multiple Graph Query Languages
&lt;/h2&gt;

&lt;p&gt;Neptune supports multiple ways of querying graph data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gremlin
&lt;/h3&gt;

&lt;p&gt;Gremlin is a graph traversal language from Apache TinkerPop.&lt;/p&gt;

&lt;p&gt;A simple example is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;g.V().has('name','Nithish')
     .out('WORKED_ON')
     .values('name')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This can be understood as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Find the vertex named Nithish → follow &lt;code&gt;WORKED_ON&lt;/code&gt; relationships → return the project names.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  openCypher
&lt;/h3&gt;

&lt;p&gt;Neptune also supports openCypher, whose syntax can feel familiar to developers who have worked with SQL-like query languages.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;&lt;span class="k"&gt;MATCH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;s:&lt;/span&gt;&lt;span class="n"&gt;Student&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;:WORKED_ON&lt;/span&gt;&lt;span class="ss"&gt;]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;p:&lt;/span&gt;&lt;span class="n"&gt;Project&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;s.name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Nithish'&lt;/span&gt;
&lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="n"&gt;p.name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neptune supports both Gremlin and openCypher for property graphs.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. High Availability and Reliability
&lt;/h2&gt;

&lt;p&gt;Neptune is a fully managed service, meaning AWS handles many infrastructure and database-management tasks.&lt;/p&gt;

&lt;p&gt;Neptune supports features such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read replicas&lt;/li&gt;
&lt;li&gt;Continuous backup&lt;/li&gt;
&lt;li&gt;Point-in-time recovery&lt;/li&gt;
&lt;li&gt;Availability Zone replication&lt;/li&gt;
&lt;li&gt;Automatic failover&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AWS states that Neptune is designed for greater than 99.99% availability.&lt;/p&gt;

&lt;p&gt;This means developers can focus more on the application instead of managing database infrastructure manually.&lt;/p&gt;




&lt;h1&gt;
  
  
  College/Student Use Case 🎓
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Building a College Knowledge Graph
&lt;/h2&gt;

&lt;p&gt;One practical use case for my college would be a &lt;strong&gt;Student Academic Knowledge Graph&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The system could connect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student
   │
   ├── belongs_to ──&amp;gt; Department
   │
   ├── enrolled_in ──&amp;gt; Course
   │
   ├── worked_on ──&amp;gt; Project
   │                       │
   │                       ├── uses ──&amp;gt; Technology
   │                       └── related_to ──&amp;gt; Course
   │
   └── guided_by ──&amp;gt; Faculty
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suppose a student asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Show me projects related to Artificial Intelligence that use Python and were guided by faculty from the AIML department."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A graph database can represent these connections directly.&lt;/p&gt;

&lt;p&gt;This could eventually be used to build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project recommendation systems&lt;/li&gt;
&lt;li&gt;Faculty-project matching&lt;/li&gt;
&lt;li&gt;Course recommendation&lt;/li&gt;
&lt;li&gt;Student skill graphs&lt;/li&gt;
&lt;li&gt;Research collaboration systems&lt;/li&gt;
&lt;li&gt;Internship skill matching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is also similar to the idea of a &lt;strong&gt;knowledge graph&lt;/strong&gt;, where information is connected rather than treated as isolated records.&lt;/p&gt;




&lt;h1&gt;
  
  
  Simple Practical Example
&lt;/h1&gt;

&lt;p&gt;Suppose we create three students and two projects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(Nithish)-[:WORKED_ON]-&amp;gt;(NutriRate)
(Ravi)-[:WORKED_ON]-&amp;gt;(TrafficAI)

(NutriRate)-[:USES]-&amp;gt;(Python)
(TrafficAI)-[:USES]-&amp;gt;(Python)
(TrafficAI)-[:USES]-&amp;gt;(TensorFlow)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using openCypher, we could query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;&lt;span class="k"&gt;MATCH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;s:&lt;/span&gt;&lt;span class="n"&gt;Student&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;:WORKED_ON&lt;/span&gt;&lt;span class="ss"&gt;]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;p:&lt;/span&gt;&lt;span class="n"&gt;Project&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;:USES&lt;/span&gt;&lt;span class="ss"&gt;]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;t:&lt;/span&gt;&lt;span class="n"&gt;Technology&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;t.name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Python'&lt;/span&gt;
&lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="n"&gt;s.name&lt;/span&gt;&lt;span class="ss"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p.name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result could be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Nithish    NutriRate
Ravi       TrafficAI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important point is that we are not simply searching for the word "Python."&lt;/p&gt;

&lt;p&gt;We are &lt;strong&gt;traversing relationships&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student → Project → Technology
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the fundamental idea behind graph databases.&lt;/p&gt;




&lt;h1&gt;
  
  
  Advantages of Amazon Neptune
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Excellent for Connected Data
&lt;/h3&gt;

&lt;p&gt;Neptune is designed specifically for applications where relationships between entities are important.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fully Managed
&lt;/h3&gt;

&lt;p&gt;AWS handles infrastructure tasks such as provisioning, patching, backups, and database management.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multiple Query Languages
&lt;/h3&gt;

&lt;p&gt;Developers can work with Gremlin, openCypher, or SPARQL depending on the graph model and application requirements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalable
&lt;/h3&gt;

&lt;p&gt;Neptune is designed to work with highly connected datasets and billions of relationships.&lt;/p&gt;

&lt;h3&gt;
  
  
  Strong Security
&lt;/h3&gt;

&lt;p&gt;Neptune supports security features including VPC network isolation and encryption at rest using AWS Key Management Service (KMS).&lt;/p&gt;




&lt;h1&gt;
  
  
  Limitations / Things to Consider
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Cost
&lt;/h2&gt;

&lt;p&gt;Neptune is a managed cloud database, so it is not simply "free storage."&lt;/p&gt;

&lt;p&gt;Costs can depend on the database resources used, storage, and I/O configuration. AWS also offers Neptune Serverless, which automatically adjusts capacity based on workload and charges for the resources consumed.&lt;/p&gt;

&lt;p&gt;For a small student project, cost should therefore be considered before running a database continuously.&lt;/p&gt;

&lt;h2&gt;
  
  
  Complexity
&lt;/h2&gt;

&lt;p&gt;Graph databases introduce concepts that are different from traditional relational databases.&lt;/p&gt;

&lt;p&gt;Students familiar with SQL may need to learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Graph modeling&lt;/li&gt;
&lt;li&gt;Nodes and edges&lt;/li&gt;
&lt;li&gt;Graph traversal&lt;/li&gt;
&lt;li&gt;Gremlin&lt;/li&gt;
&lt;li&gt;openCypher&lt;/li&gt;
&lt;li&gt;SPARQL&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Not Every Application Needs a Graph Database
&lt;/h2&gt;

&lt;p&gt;If an application mainly stores simple records such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student ID
Name
Email
Age
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then a traditional relational database may be sufficient.&lt;/p&gt;

&lt;p&gt;Neptune becomes more interesting when &lt;strong&gt;relationships between the data are central to the application&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Security Considerations
&lt;/h1&gt;

&lt;p&gt;Security is especially important when storing student information.&lt;/p&gt;

&lt;p&gt;Neptune provides security mechanisms including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon VPC network isolation&lt;/li&gt;
&lt;li&gt;Encryption at rest&lt;/li&gt;
&lt;li&gt;Encryption in transit&lt;/li&gt;
&lt;li&gt;AWS IAM integration&lt;/li&gt;
&lt;li&gt;AWS KMS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a college application, access should be restricted so that students can only access information they are authorized to see.&lt;/p&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Amazon Neptune is more than another database service.&lt;/p&gt;

&lt;p&gt;Its main idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Data becomes more useful when we understand how the data is connected.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For a college environment, those connections can represent students, courses, projects, faculty, technologies, departments, and research areas.&lt;/p&gt;

&lt;p&gt;Neptune provides a managed environment for building applications around these relationships, while supporting graph query languages such as Gremlin, openCypher, and SPARQL.&lt;/p&gt;

&lt;p&gt;As a student learning AI and machine learning, I find the idea of a &lt;strong&gt;college knowledge graph&lt;/strong&gt; particularly interesting because the same concept can be extended to recommendation systems, project discovery, research collaboration, and intelligent academic assistants.&lt;/p&gt;

&lt;p&gt;And that brings me back to the title:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;N for Nithish. N for Neptune.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A simple coincidence in the name, but a useful introduction to a completely different way of thinking about databases.&lt;/p&gt;




&lt;h1&gt;
  
  
  References
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS — What is Amazon Neptune?&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/neptune/latest/userguide/intro.html?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Amazon Neptune Documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS — Getting Started with Amazon Neptune&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/neptune/getting-started/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Getting Started with Amazon Neptune&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS — Amazon Neptune Features&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/neptune/features/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Amazon Neptune Features&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS — Accessing Graph Data in Neptune&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/neptune/latest/userguide/get-started-access-graph.html?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Accessing Graph Data in Amazon Neptune&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS — Querying a Neptune Graph&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-queries.html?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Querying a Neptune Graph&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS — Amazon Neptune Security&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/neptune/latest/userguide/security.html?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Amazon Neptune Security Documentation&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>database</category>
    </item>
    <item>
      <title>Day1 Session1: Cloud Worskshop</title>
      <dc:creator>NITHISH</dc:creator>
      <pubDate>Tue, 15 Sep 2026 06:51:58 +0000</pubDate>
      <link>https://dev.to/nithish_34f36c697ad13f6b3/day1-session1-cloud-worskshop-5bbn</link>
      <guid>https://dev.to/nithish_34f36c697ad13f6b3/day1-session1-cloud-worskshop-5bbn</guid>
      <description>&lt;p&gt;From a Simple HTML File to AWS CloudFront: What Deploying My Portfolio Actually Taught Me&lt;/p&gt;

&lt;p&gt;I recently decided to build a personal portfolio.&lt;/p&gt;

&lt;p&gt;Nothing too complicated.&lt;/p&gt;

&lt;p&gt;Just a simple website where I could show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who I am&lt;/li&gt;
&lt;li&gt;What I'm learning&lt;/li&gt;
&lt;li&gt;My projects&lt;/li&gt;
&lt;li&gt;My technical skills&lt;/li&gt;
&lt;li&gt;How to contact me&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At first, I thought the difficult part would be building the website.&lt;/p&gt;

&lt;p&gt;It wasn't.&lt;/p&gt;

&lt;p&gt;The real learning started when I tried to put it on the internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Started With One HTML File
&lt;/h2&gt;

&lt;p&gt;My first version was just:&lt;/p&gt;

&lt;p&gt;index.html&lt;/p&gt;

&lt;p&gt;No React.&lt;/p&gt;

&lt;p&gt;No backend.&lt;/p&gt;

&lt;p&gt;No database.&lt;/p&gt;

&lt;p&gt;Just HTML and CSS.&lt;/p&gt;

&lt;p&gt;It worked perfectly on my computer.&lt;/p&gt;

&lt;p&gt;I opened it in the browser and thought:&lt;/p&gt;

&lt;p&gt;"Okay, the website is done."&lt;/p&gt;

&lt;p&gt;Then came the question:&lt;/p&gt;

&lt;p&gt;"How do I actually deploy this?"&lt;/p&gt;

&lt;p&gt;That's when I started exploring AWS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5k16i6r6erbroa8joz88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5k16i6r6erbroa8joz88.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My First Stop: Amazon S3
&lt;/h2&gt;

&lt;p&gt;I created an S3 bucket and uploaded my index.html.&lt;/p&gt;

&lt;p&gt;The idea seemed simple:&lt;/p&gt;

&lt;p&gt;My computer&lt;br&gt;
↓&lt;br&gt;
index.html&lt;br&gt;
↓&lt;br&gt;
S3&lt;br&gt;
↓&lt;br&gt;
Internet&lt;/p&gt;

&lt;p&gt;But when I tried accessing it, AWS gave me:&lt;/p&gt;

&lt;p&gt;AccessDenied&lt;/p&gt;

&lt;p&gt;My first reaction was basically:&lt;/p&gt;

&lt;p&gt;"But the file is literally there."&lt;/p&gt;

&lt;p&gt;And that's when I started understanding something important.&lt;/p&gt;

&lt;p&gt;Having a file in the cloud doesn't automatically mean everyone can access it.&lt;/p&gt;

&lt;p&gt;There are permissions.&lt;/p&gt;

&lt;p&gt;There are policies.&lt;/p&gt;

&lt;p&gt;There are access controls.&lt;/p&gt;

&lt;p&gt;There is configuration.&lt;/p&gt;

&lt;p&gt;The file existing and the file being publicly accessible are two different things.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl8mno902n0kx7zm1qioe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl8mno902n0kx7zm1qioe.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Learning to Read the Error Instead of Panicking
&lt;/h2&gt;

&lt;p&gt;I think this was one of the most useful parts of the entire process.&lt;/p&gt;

&lt;p&gt;Instead of immediately changing random settings, I started looking at the actual error.&lt;/p&gt;

&lt;p&gt;AWS was telling me:&lt;/p&gt;

&lt;p&gt;AccessDenied&lt;/p&gt;

&lt;p&gt;So I started asking:&lt;/p&gt;

&lt;p&gt;Who is being denied?&lt;/p&gt;

&lt;p&gt;What resource are they trying to access?&lt;/p&gt;

&lt;p&gt;What permission is missing?&lt;/p&gt;

&lt;p&gt;That changed how I approached the problem.&lt;/p&gt;

&lt;p&gt;I wasn't just trying random solutions anymore.&lt;/p&gt;

&lt;p&gt;I was trying to understand the system.&lt;/p&gt;
&lt;h2&gt;
  
  
  Then I Decided to Use React
&lt;/h2&gt;

&lt;p&gt;After getting the basic website working, I wanted to turn it into a proper React project.&lt;/p&gt;

&lt;p&gt;So I created a React + Vite application.&lt;/p&gt;

&lt;p&gt;The structure became:&lt;/p&gt;

&lt;p&gt;portfolio/&lt;br&gt;
│&lt;br&gt;
├── index.html&lt;br&gt;
├── package.json&lt;br&gt;
│&lt;br&gt;
└── src/&lt;br&gt;
├── main.jsx&lt;br&gt;
└── style.css&lt;/p&gt;

&lt;p&gt;Instead of writing everything directly into HTML, I started thinking in terms of components, data, and rendering.&lt;/p&gt;

&lt;p&gt;For example, instead of manually writing every skill, I could represent them as data:&lt;/p&gt;

&lt;p&gt;const skills = [&lt;br&gt;
"Python",&lt;br&gt;
"TensorFlow",&lt;br&gt;
"Docker",&lt;br&gt;
"Machine Learning"&lt;br&gt;
];&lt;/p&gt;

&lt;p&gt;and render them through React.&lt;/p&gt;

&lt;p&gt;It wasn't a huge application, but it helped me understand why frameworks like React are useful.&lt;/p&gt;
&lt;h2&gt;
  
  
  The dist Folder Was Another Lesson
&lt;/h2&gt;

&lt;p&gt;Then I learned something I hadn't really thought about before.&lt;/p&gt;

&lt;p&gt;My React source code isn't what I necessarily need to deploy.&lt;/p&gt;

&lt;p&gt;I ran:&lt;/p&gt;

&lt;p&gt;npm run build&lt;/p&gt;

&lt;p&gt;and Vite created:&lt;/p&gt;

&lt;p&gt;dist/&lt;br&gt;
├── index.html&lt;br&gt;
└── assets/&lt;/p&gt;

&lt;p&gt;That made something click for me.&lt;/p&gt;

&lt;p&gt;React is helping me develop the application.&lt;/p&gt;

&lt;p&gt;The browser ultimately needs the resulting HTML, CSS, JavaScript, and other assets.&lt;/p&gt;

&lt;p&gt;So my deployment flow became:&lt;/p&gt;

&lt;p&gt;React Source Code&lt;br&gt;
↓&lt;br&gt;
npm run build&lt;br&gt;
↓&lt;br&gt;
dist/&lt;br&gt;
↓&lt;br&gt;
S3&lt;/p&gt;

&lt;p&gt;That distinction between development files and production build files was something I hadn't really understood before.&lt;/p&gt;
&lt;h2&gt;
  
  
  Then Came CloudFront
&lt;/h2&gt;

&lt;p&gt;I didn't want to stop at S3.&lt;/p&gt;

&lt;p&gt;I wanted to learn how CloudFront fits into the architecture.&lt;/p&gt;

&lt;p&gt;So I added CloudFront.&lt;/p&gt;

&lt;p&gt;Now I had:&lt;/p&gt;

&lt;p&gt;Browser&lt;br&gt;
↓&lt;br&gt;
CloudFront&lt;br&gt;
↓&lt;br&gt;
S3&lt;/p&gt;

&lt;p&gt;This looked pretty straightforward.&lt;/p&gt;

&lt;p&gt;Until I opened my CloudFront URL.&lt;/p&gt;
&lt;h2&gt;
  
  
  404.
&lt;/h2&gt;

&lt;p&gt;Instead of my portfolio:&lt;/p&gt;

&lt;p&gt;404 Not Found&lt;/p&gt;

&lt;p&gt;And then I saw:&lt;/p&gt;

&lt;p&gt;Code: NoSuchKey&lt;/p&gt;

&lt;p&gt;But the interesting part was this:&lt;/p&gt;

&lt;p&gt;Key: index.html/index.html&lt;/p&gt;

&lt;p&gt;I stared at that for a while.&lt;/p&gt;

&lt;p&gt;My S3 bucket had:&lt;/p&gt;

&lt;p&gt;index.html&lt;/p&gt;

&lt;p&gt;not:&lt;/p&gt;

&lt;p&gt;index.html/index.html&lt;/p&gt;

&lt;p&gt;So why was CloudFront asking S3 for that?&lt;/p&gt;
&lt;h2&gt;
  
  
  The Problem Wasn't My React Code
&lt;/h2&gt;

&lt;p&gt;This was probably my favorite debugging lesson.&lt;/p&gt;

&lt;p&gt;I initially thought:&lt;/p&gt;

&lt;p&gt;"Maybe my React build is broken."&lt;/p&gt;

&lt;p&gt;It wasn't.&lt;/p&gt;

&lt;p&gt;My index.html existed.&lt;/p&gt;

&lt;p&gt;My build existed.&lt;/p&gt;

&lt;p&gt;My S3 bucket had the files.&lt;/p&gt;

&lt;p&gt;The problem was somewhere else.&lt;/p&gt;

&lt;p&gt;I checked the CloudFront origin configuration.&lt;/p&gt;

&lt;p&gt;And there it was.&lt;/p&gt;

&lt;p&gt;I had configured the origin path as:&lt;/p&gt;

&lt;p&gt;/index.html&lt;/p&gt;

&lt;p&gt;while also using:&lt;/p&gt;

&lt;p&gt;index.html&lt;/p&gt;

&lt;p&gt;as the default root object.&lt;/p&gt;

&lt;p&gt;So I had effectively told CloudFront:&lt;/p&gt;

&lt;p&gt;"Start at index.html."&lt;/p&gt;

&lt;p&gt;and then:&lt;/p&gt;

&lt;p&gt;"Also use index.html as the root."&lt;/p&gt;

&lt;p&gt;Result:&lt;/p&gt;

&lt;p&gt;index.html/index.html&lt;/p&gt;

&lt;p&gt;AWS wasn't being random.&lt;/p&gt;

&lt;p&gt;I had configured it that way.&lt;/p&gt;

&lt;p&gt;That was a good lesson.&lt;/p&gt;
&lt;h2&gt;
  
  
  Fixing It
&lt;/h2&gt;

&lt;p&gt;I removed the origin path.&lt;/p&gt;

&lt;p&gt;So instead of:&lt;/p&gt;

&lt;p&gt;Origin path:&lt;br&gt;
/index.html&lt;/p&gt;

&lt;p&gt;I left it empty.&lt;/p&gt;

&lt;p&gt;And kept:&lt;/p&gt;

&lt;p&gt;Default root object:&lt;br&gt;
index.html&lt;/p&gt;

&lt;p&gt;The request flow then became:&lt;/p&gt;

&lt;p&gt;/&lt;br&gt;
↓&lt;br&gt;
CloudFront&lt;br&gt;
↓&lt;br&gt;
index.html&lt;br&gt;
↓&lt;br&gt;
S3&lt;/p&gt;

&lt;p&gt;instead of:&lt;/p&gt;

&lt;p&gt;/&lt;br&gt;
↓&lt;br&gt;
CloudFront&lt;br&gt;
↓&lt;br&gt;
index.html&lt;br&gt;
↓&lt;br&gt;
index.html&lt;br&gt;
↓&lt;br&gt;
index.html/index.html&lt;/p&gt;
&lt;h2&gt;
  
  
  And Then... It Still Didn't Immediately Work
&lt;/h2&gt;

&lt;p&gt;This was another AWS lesson.&lt;/p&gt;

&lt;p&gt;I had fixed the configuration.&lt;/p&gt;

&lt;p&gt;But CloudFront uses caching.&lt;/p&gt;

&lt;p&gt;So the old response could still be cached.&lt;/p&gt;

&lt;p&gt;I created a CloudFront invalidation:&lt;/p&gt;

&lt;p&gt;/*&lt;/p&gt;

&lt;p&gt;After that, I tested again.&lt;/p&gt;

&lt;p&gt;And finally...&lt;/p&gt;

&lt;p&gt;The portfolio loaded.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqblh2kw0ac9o7ie193e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqblh2kw0ac9o7ie193e5.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Learned From a "Simple Portfolio"
&lt;/h2&gt;

&lt;p&gt;Looking back, the portfolio itself wasn't a technically huge project.&lt;/p&gt;

&lt;p&gt;But the deployment taught me several things I wouldn't have learned by just following a tutorial.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Code isn't the entire application
&lt;/h3&gt;

&lt;p&gt;There are many layers:&lt;/p&gt;

&lt;p&gt;Code&lt;br&gt;
↓&lt;br&gt;
Build&lt;br&gt;
↓&lt;br&gt;
Files&lt;br&gt;
↓&lt;br&gt;
Storage&lt;br&gt;
↓&lt;br&gt;
Permissions&lt;br&gt;
↓&lt;br&gt;
CDN&lt;br&gt;
↓&lt;br&gt;
Caching&lt;br&gt;
↓&lt;br&gt;
Browser&lt;/p&gt;

&lt;p&gt;A problem at any layer can make the entire website appear broken.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Errors are useful information
&lt;/h3&gt;

&lt;p&gt;Before this, an error like:&lt;/p&gt;

&lt;p&gt;NoSuchKey&lt;/p&gt;

&lt;p&gt;would mostly mean:&lt;/p&gt;

&lt;p&gt;"Something is wrong."&lt;/p&gt;

&lt;p&gt;Now I try to ask:&lt;/p&gt;

&lt;p&gt;"What key is AWS actually looking for?"&lt;/p&gt;

&lt;p&gt;In my case, the answer was:&lt;/p&gt;

&lt;p&gt;index.html/index.html&lt;/p&gt;

&lt;p&gt;And that immediately gave me a direction.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Infrastructure has bugs too
&lt;/h3&gt;

&lt;p&gt;As developers, we often think about bugs in code.&lt;/p&gt;

&lt;p&gt;But configuration can have bugs too.&lt;/p&gt;

&lt;p&gt;A wrong path.&lt;/p&gt;

&lt;p&gt;A wrong bucket name.&lt;/p&gt;

&lt;p&gt;A missing permission.&lt;/p&gt;

&lt;p&gt;A caching problem.&lt;/p&gt;

&lt;p&gt;These can break an application just as easily as a programming bug.&lt;/p&gt;
&lt;h2&gt;
  
  
  My Deployment Architecture
&lt;/h2&gt;

&lt;p&gt;What started as a simple HTML file eventually became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             User
               │
               ▼
         CloudFront
               │
               ▼
         S3 Bucket
          /       \
         /         \
   index.html     assets/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And my development workflow is:&lt;/p&gt;

&lt;p&gt;Write React&lt;br&gt;
↓&lt;br&gt;
Test locally&lt;br&gt;
↓&lt;br&gt;
npm run build&lt;br&gt;
↓&lt;br&gt;
dist/&lt;br&gt;
↓&lt;br&gt;
Upload to S3&lt;br&gt;
↓&lt;br&gt;
CloudFront&lt;br&gt;
↓&lt;br&gt;
Internet&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Lesson
&lt;/h2&gt;

&lt;p&gt;I'm still learning.&lt;/p&gt;

&lt;p&gt;I don't want to pretend that I suddenly understand AWS because I managed to deploy one website.&lt;/p&gt;

&lt;p&gt;I still have a lot to learn about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud architecture&lt;/li&gt;
&lt;li&gt;IAM&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;li&gt;DNS&lt;/li&gt;
&lt;li&gt;HTTPS&lt;/li&gt;
&lt;li&gt;CI/CD&lt;/li&gt;
&lt;li&gt;Infrastructure as Code&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But I think I'm starting to understand something more important.&lt;/p&gt;

&lt;p&gt;When you're learning development, getting stuck is part of the process.&lt;/p&gt;

&lt;p&gt;The goal isn't to never get errors.&lt;/p&gt;

&lt;p&gt;The goal is to become better at answering:&lt;/p&gt;

&lt;p&gt;"Why did this happen?"&lt;/p&gt;

&lt;p&gt;That's what I'm trying to get better at.&lt;/p&gt;

&lt;p&gt;And this portfolio deployment was a surprisingly good first step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;p&gt;Frontend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AWS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon S3&lt;/li&gt;
&lt;li&gt;Amazon CloudFront&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;npm&lt;/li&gt;
&lt;li&gt;Git/GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;The portfolio is deployed, but I'm not treating it as finished.&lt;/p&gt;

&lt;p&gt;I want to keep improving it as I learn more.&lt;/p&gt;

&lt;p&gt;Next, I'd like to explore:&lt;/p&gt;

&lt;p&gt;Custom Domain&lt;br&gt;
↓&lt;br&gt;
HTTPS&lt;br&gt;
↓&lt;br&gt;
CI/CD&lt;br&gt;
↓&lt;br&gt;
GitHub → Automatic Deployment&lt;/p&gt;

&lt;p&gt;Because the next goal isn't just:&lt;/p&gt;

&lt;p&gt;"I deployed a website."&lt;/p&gt;

&lt;p&gt;It's:&lt;/p&gt;

&lt;p&gt;"I understand how the website gets from my code to a real user."&lt;/p&gt;

&lt;p&gt;And that's a much more interesting thing to learn.&lt;/p&gt;

&lt;h1&gt;
  
  
  react #aws #cloudfront #s3 #webdevelopment #javascript #vite #beginners #devjourney #learninginpublic
&lt;/h1&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>deployment</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
