Building a modern Cloud Native Full stack Microservices Project: End to End — Introduction
Tags: microservices, webdev, javascript, java
Published: 2023-11-17 11:54:49

## What is it about?
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.
## Take a note
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.
## Technology Stack:
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.
### Programming Language:
- Frontend: **Javscript/Typescript** to be specific TSX.
- Backend: **Java** (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.)

### Frameworks and Libraries:
- Frontend: **React**, **TailwindCss**.
- Backend: **Spring Framework**, **Quarkus** (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).
- Testing: 
    - Unit Testing: **Junit**, **Mockito**
    - API Development and Management: **Postman**

### Database:
**Postgresql** (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. 
### Deployment:
CI : **Github Actions**
CD Pipeline: **Argo CD deploying to Kubernetes Cluster**
Publishing: **GraalVM Native images containerized to Docker Images**

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.

### Next Article:
{% embed https://dev.to/opticsquid/building-a-modern-cloud-native-full-stack-microservices-project-end-to-end-project-idea-and-high-level-design-12b4 %}