<?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: Soumalya Bhattacharya</title>
    <description>The latest articles on DEV Community by Soumalya Bhattacharya (@opticsquid).</description>
    <link>https://dev.to/opticsquid</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%2F480508%2Fd567fc7b-804f-44ae-8896-8d39022a3395.jpeg</url>
      <title>DEV Community: Soumalya Bhattacharya</title>
      <link>https://dev.to/opticsquid</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/opticsquid"/>
    <language>en</language>
    <item>
      <title>Building a modern Cloud Native Full stack Microservices Project: End to End — Project Idea and High Level Design</title>
      <dc:creator>Soumalya Bhattacharya</dc:creator>
      <pubDate>Sun, 19 Nov 2023 07:10:45 +0000</pubDate>
      <link>https://dev.to/opticsquid/building-a-modern-cloud-native-full-stack-microservices-project-end-to-end-project-idea-and-high-level-design-12b4</link>
      <guid>https://dev.to/opticsquid/building-a-modern-cloud-native-full-stack-microservices-project-end-to-end-project-idea-and-high-level-design-12b4</guid>
      <description>&lt;h2&gt;
  
  
  Recap
&lt;/h2&gt;

&lt;p&gt;In the previous article I discussed about that I will be building a full stack microservice based application and discussing about all the phases that comes in building a production ready project from project ideation to deployment. I also discussed about the technology stack we are going to use. If you have not read that article go check it out:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/opticsquid" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uk1uY-MY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--HaVxqcmI--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/480508/d567fc7b-804f-44ae-8896-8d39022a3395.jpeg" alt="opticsquid"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/opticsquid/building-a-modern-cloud-native-full-stack-microservices-project-end-to-end-introduction-3djj" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Building a modern Cloud Native Full stack Microservices Project: End to End — Introduction&lt;/h2&gt;
      &lt;h3&gt;Soumalya Bhattacharya ・ Nov 17&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#microservices&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#java&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  The Big Idea
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PsIRPETJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gnuq5vc31cuofy9m7fjq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PsIRPETJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gnuq5vc31cuofy9m7fjq.jpg" alt="A person writing something on the whiteboard" width="640" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@kvalifik?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash"&gt;Kvalifik&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/person-holding-orange-flower-petals-5Q07sS54D0Q?utm_content=creditCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=unsplash"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Problem Statement:
&lt;/h3&gt;

&lt;p&gt;Suppose there is a weekend coming you and your friends want to go out somewhere and chill and a have a good time. Sure thing you do a Google search name of some places get listed with their reviews and ratings but its just one type of place at a time either it is hotels or parks or some shopping malls or a concert etc. You can not get to know the latest offers and sale going on in those places or the businesses can not directly reach out to thier customer bases or their user communities regarding their offering or to solve customer greivances.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution:
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;So, I thought of building an application which you visit and see all types of places where you can go and have a good time. The lisitings will be based on the geolocation of the user and also the user’s budget. You can also filter results based on different criterias to find the best fit. The Businesses will be able to add photos and videos of their offerings. There will be a dedicated section ratings and reviews. You can rate the business based on the experience you had. Review section will be like any other social media comment section you can see what other people have to say, mention other users, mention the business itself and reply to their comments. You will be able to book the services of the business from the application itself. There will be other additional features we will come to that later.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Divide and Conquer
&lt;/h2&gt;

&lt;p&gt;After you get an idea its very important in engineering and in life in general is to break the idea or the problem solution in smaller independent ideas. In this way it becomes easier to tackle one problem at a time. So, lets break down our solution:&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Components:
&lt;/h3&gt;

&lt;p&gt;I need to keep a record of all the businesses and their service details.&lt;br&gt;
I need to store and serve the multimedia files uploaded by the businesses to the users.&lt;br&gt;
I also need a way to authenticate and authorize users as I can clearly see there are two types of users in this application: i) Normal Users, ii) Businesses&lt;br&gt;
I need to keep the record of ratings and reviews of every business. Review section is a bit complex better have a dedicated section for that&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced Components (Optional):
&lt;/h3&gt;

&lt;p&gt;I need analytics that will keep track of different metrics of the application like user interaction and behaviour, click through rates etc. This data will help the Businesses better understand their customer and performance of their offerings and do changes according to that.&lt;br&gt;
It would also help us as the platform owners what features and functionalities users need and we will work according to that.&lt;/p&gt;

&lt;h2&gt;
  
  
  High Level Design
&lt;/h2&gt;

&lt;p&gt;From each of the bullet points above we can construct an independent application that would be responsible for that specific role only and nothing else.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So, by dividing the idea in smaller parts we have also &lt;br&gt;
  decided how many microservices we are going to have in our &lt;br&gt;
  backend.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Stakeholders:
&lt;/h2&gt;

&lt;p&gt;In this project we can see there are two parties lets fix a term/name for each of them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Businesses which registers in our platform call them Platform Vendors or in short &lt;strong&gt;PV&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The normal users who visits our platform with the motive to book the services of any of the PV lets call them Users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will be using these terms through out this series and the meaning will remain same as defined here.&lt;/p&gt;

&lt;p&gt;So, lets make a rough flowchart type sketch for the High Level Design:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--89Ds9i4N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b9e3y7sucquov6wdy5rn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--89Ds9i4N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b9e3y7sucquov6wdy5rn.png" alt="High Level design of the project" width="771" height="801"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now every box in this Backend rectangle can be considered as its own microservice that we are going to develop.&lt;/p&gt;

&lt;p&gt;As we have came to a concrete idea of how many microservices we are going to build and what will be their roles we can start database modelling for each of the microservce. In the next article we will start getting our hands dirty with database modelling. Till then Goodbye!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building a modern Cloud Native Full stack Microservices Project: End to End — Introduction</title>
      <dc:creator>Soumalya Bhattacharya</dc:creator>
      <pubDate>Fri, 17 Nov 2023 11:54:49 +0000</pubDate>
      <link>https://dev.to/opticsquid/building-a-modern-cloud-native-full-stack-microservices-project-end-to-end-introduction-3djj</link>
      <guid>https://dev.to/opticsquid/building-a-modern-cloud-native-full-stack-microservices-project-end-to-end-introduction-3djj</guid>
      <description>&lt;h2&gt;
  
  
  What is it about?
&lt;/h2&gt;

&lt;p&gt;This is going to be a series of article where we start from a project idea and slowly go on to build a full-scale industry grade project with proper Git repo management, adhering to best practices in coding the solutions till creating a CI/CD pipeline that would make your project deployable in one go anywhere. We are going to build both the frontend and backend and will also integrate them. While building the application we will also be creating unit tests for the code we have written and also go through API development lifecycle and its testing in detail. If this seems a lot of things and you feel overwhelmed don’t worry, we will take one thing at a time. All the code and related things that will be created through this article series will be available publicly in GitHub. If you think somewhere I can do better or doing something wrong please correct me, constructive criticism and any kind of feedback is always welcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  Take a note
&lt;/h2&gt;

&lt;p&gt;First to start with this is not going to be a beginner level article. I’m going to assume you know basics of programming at least and know basic HTML, CSS. If you don’t know the basics don’t worry you can pick them up parallelly as you need there are a ton of resources online.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technology Stack:
&lt;/h2&gt;

&lt;p&gt;While choosing the technology stack my first priority was to make sure the technologies I use here has ample amount of documentation, tutorials and other resources freely available online so that if you get stuck somewhere you can refer to online resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Programming Language:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Frontend: &lt;strong&gt;Javscript/Typescript&lt;/strong&gt; to be specific TSX.&lt;/li&gt;
&lt;li&gt;Backend: &lt;strong&gt;Java&lt;/strong&gt; (Don’t start to hate immediately. I know there are a lot of cool and fancy languages out there in which I can build this but believe me no language has a mature tooling built around it compared to java, and it also is a typed language so, takes a whole bloodline of bugs out while writing the code only. There are lot of engineers in all the big techs writing thousands of lines of code and actively maintaining them and a big chunk is written in Java for a reason.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Frameworks and Libraries:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Frontend: &lt;strong&gt;React&lt;/strong&gt;, &lt;strong&gt;TailwindCss&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Backend: &lt;strong&gt;Spring Framework&lt;/strong&gt;, &lt;strong&gt;Quarkus&lt;/strong&gt; (Most of the components of the backend will be built using different projects under spring framework so that integration is seamless but for some of the components which does resource intensive operations we will use Quarkus).&lt;/li&gt;
&lt;li&gt;Testing: 

&lt;ul&gt;
&lt;li&gt;Unit Testing: &lt;strong&gt;Junit&lt;/strong&gt;, &lt;strong&gt;Mockito&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;API Development and Management: &lt;strong&gt;Postman&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Database:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Postgresql&lt;/strong&gt; (Most loved Database courtesy Stackoverflow Developer Survey 2023). Besides its also very widely used and capable SQL Database (Technically, Object Relational Database) with ample docs, tutorials and other resources to refer online. &lt;/p&gt;

&lt;h3&gt;
  
  
  Deployment:
&lt;/h3&gt;

&lt;p&gt;CI : &lt;strong&gt;Github Actions&lt;/strong&gt;&lt;br&gt;
CD Pipeline: &lt;strong&gt;Argo CD deploying to Kubernetes Cluster&lt;/strong&gt;&lt;br&gt;
Publishing: &lt;strong&gt;GraalVM Native images containerized to Docker Images&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, If you are ready and excited, in the next article we will be going into the main project idea, understand it in depth and also make a microservice based System design for the backend to get started with.&lt;/p&gt;
&lt;h3&gt;
  
  
  Next Article:
&lt;/h3&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/opticsquid" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uk1uY-MY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--HaVxqcmI--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/480508/d567fc7b-804f-44ae-8896-8d39022a3395.jpeg" alt="opticsquid"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/opticsquid/building-a-modern-cloud-native-full-stack-microservices-project-end-to-end-project-idea-and-high-level-design-12b4" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Building a modern Cloud Native Full stack Microservices Project: End to End — Project Idea and High Level Design&lt;/h2&gt;
      &lt;h3&gt;Soumalya Bhattacharya ・ Nov 19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>microservices</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>java</category>
    </item>
  </channel>
</rss>
