<?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: Abir Moulick</title>
    <description>The latest articles on DEV Community by Abir Moulick (@abir101).</description>
    <link>https://dev.to/abir101</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%2F1652997%2Fdafa65c1-963a-4a39-bbf0-e78a10dd084a.png</url>
      <title>DEV Community: Abir Moulick</title>
      <link>https://dev.to/abir101</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abir101"/>
    <language>en</language>
    <item>
      <title>The Journey of Data: How OSI and TCP/IP Models Deliver Your Messages</title>
      <dc:creator>Abir Moulick</dc:creator>
      <pubDate>Mon, 19 Aug 2024 16:41:49 +0000</pubDate>
      <link>https://dev.to/abir101/the-journey-of-data-how-osi-and-tcpip-models-deliver-your-messages-4m7l</link>
      <guid>https://dev.to/abir101/the-journey-of-data-how-osi-and-tcpip-models-deliver-your-messages-4m7l</guid>
      <description>&lt;h2&gt;
  
  
  1. Introduction
&lt;/h2&gt;

&lt;p&gt;You're sitting there with Postman open, you hit send, and boom: "hello world" pops up on your screen in milliseconds.  Feels almost instantaneous, right? Like magic. But what most people don't realize is that beneath that simple interaction there's this hidden world of network processes frantically working to make it happen.&lt;/p&gt;

&lt;p&gt;In this interconnected world, understanding how data traverses networks is paramount. The OSI and TCP/IP models provide frameworks for comprehending the complexities of network communication. These models conceptually divide the communication process into distinct layers, each responsible for specific functions.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The OSI Model
&lt;/h2&gt;

&lt;p&gt;The OSI model, a seven-layered architecture, offers a comprehensive framework for understanding network communication. Each layer performs specific functions and interacts with the layers above and below it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 Layers of the OSI Model
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Physical Layer (Layer 1):&lt;/strong&gt; The foundation of the OSI model, the Physical layer, governs the transmission of raw bits over a physical medium. It defines electrical, optical, and mechanical specifications for data transmission.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; Ethernet, IEEE 802.11 (Wi-Fi), Bluetooth, USB&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Link Layer (Layer 2):&lt;/strong&gt; Responsible for node-to-node data transfer, the Data Link layer establishes and terminates connections, ensuring reliable data transmission over the physical layer. It also manages media access control (MAC) addresses.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; HDLC, LLDP, PPP, Ethernet, IEEE 802.11 (Wi-Fi)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Network Layer (Layer 3):&lt;/strong&gt; The Network layer facilitates routing and logical addressing. It determines the optimal path for data packets to travel across networks using IP addresses.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; IP, ICMP, ARP, IPsec, MPLS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Transport Layer (Layer 4):&lt;/strong&gt; Providing end-to-end communication services, the Transport layer ensures reliable and ordered delivery of data segments. It manages segmentation, flow control, and error control.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; TCP, UDP, SCTP, DCCP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Session Layer (Layer 5):&lt;/strong&gt; The Session layer establishes, manages, and terminates communication sessions between applications. It handles authentication, authorization, and synchronization.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; SIP, PPTP, L2TP, H.245, SMB, NFS, PAP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Presentation Layer (Layer 6):&lt;/strong&gt; Concerned with data representation and formatting, the Presentation layer handles data encryption, decryption, compression, and conversion between different data formats.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; SSL, TLS, JPEG, MPEG&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Application Layer (Layer 7):&lt;/strong&gt; The topmost layer, the Application layer, provides services for user applications to access network resources. It facilitates functionalities like email, web browsing, and file transfer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; SMTP, HTTP, FTP, POP3, SNMP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  2.2 An Illustrative Analogy
&lt;/h3&gt;

&lt;p&gt;Imagine a person (P1) needing to move from one room (R1) to another (R2). Both rooms have multiple layers with doors, each requiring a specific key. P1 collects keys from each layer in R1 before exiting. Upon reaching R2, P1 uses the collected keys in reverse order to unlock the corresponding layers and enter.&lt;br&gt;&lt;br&gt;
In this analogy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;P1 represents data.&lt;/li&gt;
&lt;li&gt;Layers within rooms are OSI layers.&lt;/li&gt;
&lt;li&gt;Doors and keys represent protocols at each layer.&lt;/li&gt;
&lt;li&gt;R1 and R2 symbolize sender and receiver servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. The TCP/IP Model
&lt;/h2&gt;

&lt;p&gt;The TCP/IP model, a four-layered architecture, is the practical model upon which the Internet is built. It consolidates some layers of the OSI model while maintaining a focus on end-to-end communication.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Layers of the TCP/IP Model
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Network Access Layer:&lt;/strong&gt; Combining the Physical and Data Link layers of the OSI model, this layer handles physical transmission of data over a network, including addressing and framing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; HDLC, LLDP, Ethernet, IEEE 802.11 (Wi-Fi)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Internet Layer:&lt;/strong&gt; Analogous to the OSI’s Network layer, this layer manages logical addressing and routing of data packets across networks using IP addresses.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; IP, ICMP, ARP, IPsec, MPLS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Transport Layer:&lt;/strong&gt; Similar to the OSI’s Transport layer, this layer provides reliable or unreliable data transmission between applications. It manages segmentation, flow control, and error control.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; TCP, UDP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Application Layer:&lt;/strong&gt; This layer encompasses the functionalities of the Application, Presentation, and Session layers of the OSI model. It provides services for user applications to access network resources, including data formatting, encryption, and session management.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocols:&lt;/strong&gt; SMTP, HTTP, FTP, SSL, TLS, SIP, PPTP, L2TP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  4. Conclusion
&lt;/h2&gt;

&lt;p&gt;The OSI and TCP/IP models are essential for understanding network communication. The OSI model provides a comprehensive theoretical framework, while the TCP/IP model reflects the practical implementation of the Internet. Both models contribute to the development and maintenance of robust and efficient networks.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>devops</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Git Branch Management</title>
      <dc:creator>Abir Moulick</dc:creator>
      <pubDate>Wed, 26 Jun 2024 13:38:42 +0000</pubDate>
      <link>https://dev.to/abir101/git-branch-management-1170</link>
      <guid>https://dev.to/abir101/git-branch-management-1170</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;A well-structured branch management flow is crucial for handling frequent releases and immediate hotfixes efficiently. This article outlines a comprehensive branch management flow designed for regular periodic releases alongside urgent hotfixes, ensuring that features and fixes are tested thoroughly before reaching the production environment. By adopting this flow, teams can enhance collaboration, reduce integration issues, and accelerate time to market.&lt;/p&gt;

&lt;h2&gt;
  
  
  Branch Types
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Main Branches
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;master&lt;/code&gt; branch&lt;/strong&gt;: This is your production branch, and it should always be stable, containing the code that is currently live in Main.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;develop&lt;/code&gt; branch&lt;/strong&gt;: This is your main development branch where all the features, enhancements, and non-critical bug fixes are merged first. This branch is live in Testing Server and Integrated testing is performed in every merge request.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Supporting Branches
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Feature branches&lt;/strong&gt;: New features or enhancements.

&lt;ul&gt;
&lt;li&gt;Naming convention: &lt;code&gt;feature/&amp;lt;feature-name&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Bugfix branches&lt;/strong&gt;: Non-critical bug fixes.

&lt;ul&gt;
&lt;li&gt;Naming convention: &lt;code&gt;bugfix/&amp;lt;bug-name&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Release branches&lt;/strong&gt;: Preparation for new releases.

&lt;ul&gt;
&lt;li&gt;Naming convention: &lt;code&gt;release/vX.X.X&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Hotfix branches&lt;/strong&gt;: Critical fixes for production.

&lt;ul&gt;
&lt;li&gt;Naming convention: &lt;code&gt;hotfix/&amp;lt;issue&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Workflow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Regular Release Cycle (Every 14 Days)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Feature Development&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developers create &lt;code&gt;feature&lt;/code&gt; branches from &lt;code&gt;develop&lt;/code&gt; for each new feature.&lt;/li&gt;
&lt;li&gt;After completion and local testing, developers will create a pull request to merge it back into &lt;code&gt;develop&lt;/code&gt;. The branch is reviewed and then merged into &lt;code&gt;develop&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bug Fixes&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developers create &lt;code&gt;bugfix&lt;/code&gt; branches from &lt;code&gt;develop&lt;/code&gt; for each bugs.&lt;/li&gt;
&lt;li&gt;After completion and local testing, developers will create a pull request to merge it back into &lt;code&gt;develop&lt;/code&gt;. The branch is reviewed and then merged into &lt;code&gt;develop&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Release Workflow&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Every 14 days, create a &lt;code&gt;release&lt;/code&gt; branch from &lt;code&gt;develop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Perform &lt;strong&gt;Integrated testing&lt;/strong&gt; and any final tweaks on this branch.&lt;/li&gt;
&lt;li&gt;Once it's confirmed stable, merge &lt;code&gt;release&lt;/code&gt; into &lt;code&gt;master&lt;/code&gt; and deploy to production.&lt;/li&gt;
&lt;li&gt;Also, merge back into &lt;code&gt;develop&lt;/code&gt; to ensure all changes are included in the next cycle.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hotfixes (Immediate Release)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hotfix Workflow&lt;/strong&gt;:

&lt;ol&gt;
&lt;li&gt;When a critical issue is identified in production, developers create a &lt;code&gt;hotfix&lt;/code&gt; branch directly from &lt;code&gt;master&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Fix the issue in the &lt;code&gt;hotfix&lt;/code&gt; branch &amp;amp; test thoroughly.&lt;/li&gt;
&lt;li&gt;Merge the &lt;code&gt;hotfix&lt;/code&gt; branch first into &lt;code&gt;master&lt;/code&gt; and deploy immediately.&lt;/li&gt;
&lt;li&gt;Also merge &lt;code&gt;hotfix&lt;/code&gt; into &lt;code&gt;develop&lt;/code&gt; to ensure the fix is included in the ongoing development.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Adopting a structured branch management flow, offers numerous advantages to any software development team. Implementing such a branch management strategy empowers teams to tackle frequent releases and the need for rapid responses to critical production issues. However, this strategy depends on specific needs and dynamics of the team and varies from company to company. &lt;/p&gt;

&lt;p&gt;This is my second blog writing. Feel free to comment if you have any questions or any refinement to the article. If you like the blog, don’t forget to like it &amp;amp; share with your friends/colleagues.&lt;/p&gt;

&lt;p&gt;To get in personal touch, connect me on:&lt;br&gt;
Linkedin:&lt;a href="https://www.linkedin.com/in/abirmoulick/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/abirmoulick/&lt;/a&gt;&lt;br&gt;
Github:&lt;a href="https://github.com/Abir10101/" rel="noopener noreferrer"&gt;https://github.com/Abir10101/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading&lt;br&gt;
Written with ❤️ &amp;amp; passion 🔥 by Abir Moulick&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SDLC without DevOps</title>
      <dc:creator>Abir Moulick</dc:creator>
      <pubDate>Thu, 20 Jun 2024 01:31:34 +0000</pubDate>
      <link>https://dev.to/abir101/sdlc-without-devops-4jj3</link>
      <guid>https://dev.to/abir101/sdlc-without-devops-4jj3</guid>
      <description>&lt;p&gt;The Software Development Life Cycle (SDLC) is a structured process that guides the creation of high-quality software. It encompasses all stages, from initial planning and requirements gathering, through coding and testing, to deployment and maintenance. This article explores the SDLC in the context of a Java application. I'll focus on SDLC stages from &lt;strong&gt;Development&lt;/strong&gt; to &lt;strong&gt;Deployment&lt;/strong&gt; &amp;amp; &lt;strong&gt;Monitering&lt;/strong&gt; of the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Development Server: The Crucible of Innovation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; The development server is a local environment where individual developers implement features, fix bugs, and conduct initial testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup:&lt;/strong&gt; Developers clone the code repository and install Java &amp;amp; JDK. The application runs in this server using development environment variables (e.g., development database credentials).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools:&lt;/strong&gt; IDEs and code linters are used to ensure code quality and consistency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow:&lt;/strong&gt; After developing and locally testing a feature, the developer pushes the code to the testing server.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Testing Server: The Bastion of Quality Assurance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; This server is dedicated to comprehensive feature testing to identify bugs and vulnerabilities before deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Types of Tests:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unit Tests:&lt;/strong&gt; Verify the functionality of individual components in isolation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration Tests:&lt;/strong&gt; Check how different components interact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;End-to-End (E2E) Tests:&lt;/strong&gt; Simulate user flows through the entire application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance Tests:&lt;/strong&gt; Assess how the application handles load and stress.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Setup:&lt;/strong&gt; JDK and Maven (for building and running the application) are installed. Code is pulled from the "testing" Git branch.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;QA Role:&lt;/strong&gt; Quality Assurance (QA) teams manually test the software, focusing on usability, exploratory testing, and requirement fulfillment.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Benefits of a Separate Server:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Long-running tests won't block developers.&lt;/li&gt;
&lt;li&gt;Dedicated resources for testing ensure reliability.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Next Step:&lt;/strong&gt; After successful testing, the code is promoted to the production server.&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Production Server: The Arena of Real-World Usage
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; This is the live environment where end-users interact with the application. It houses the most stable code version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup:&lt;/strong&gt; Similar to the testing server, JDK and Maven are installed. Code is pulled from the "release" Git branch. The application runs in a production server environment (e.g., Tomcat) using production environment variables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring:&lt;/strong&gt; The application is continuously monitored. If issues arise, actions might include:

&lt;ul&gt;
&lt;li&gt;Rolling back to a previous version.&lt;/li&gt;
&lt;li&gt;Assigning hotfix tasks to developers.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

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

&lt;p&gt;This SDLC approach can be done manually without automation but in the world of fast feature deployment we have to automate some steps and implement devops methodology. I'll be writing about automating this application setup in my future articles.&lt;/p&gt;

&lt;p&gt;This is my first blog writing. Feel free to comment if you have any questions or any refinement to the article. If you like the blog , don’t forget to like it &amp;amp; share with your friends/colleagues.&lt;/p&gt;

&lt;p&gt;To get in personal touch, connect me on:&lt;br&gt;
Linkedin:&lt;a href="https://www.linkedin.com/in/abirmoulick/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/abirmoulick/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading&lt;br&gt;
Written with ❤️ &amp;amp; passion 🔥 by Abir Moulick&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>deployment</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
