- Develop a Realtime web socket chat using Go, Next, Tailwind CSS, Typescript, and PostgreSQL.
- Deploy it using Docker Compose.
- Deploy it using Continuous Delivery to GKE using Github Actions.
- Monitoring setup using Prometheus. Then, visualize the metrics using Grafana, and finally, set up alerting notifications via email.
- In this section, we look at the development perspective of the project, getting to know its architecture and how it works.
- In simple, it's a three-tier app:
- The frontend is written in Next.js, tailwind css.
- The backend with Golang.
- The database with PostgreSQL.
- To know more about the development process of this app → Development
In This part we:
- Use docker to containerize our Nextjs frontend, Golang backend and Postgresql database.
- Make a docker compose file to spin up the project at the click of a button.
- To see a run in action and To Learn how to get that working → Docker Compose
In This part we:
- Configure a domain and DNS server records for our app.
- Write Kubernetes manifets to our containerized app.
- Use of Kubenetes gatwayAPI to serve as a http loadbalancer to our app.
- Write Two Github Actions Pipelines
- CI for building, testing, linting and artifact saving.
- CD for deploying our app to GKE.
- Implement continuous Delivery methodology, beacause maybe we do not want all commits to go for production.
- We implemented it using github actions Environment review option which gives us two features:
- a trigger for our production deployment.
- a review for the changes.
- We implemented it using github actions Environment review option which gives us two features:
- To see a run in action and To Learn how to get that working → Github Actions CICD
In This part we:
- Monitor our application performance using the Golang Prometheus client.
- Monitor container performance using cAdvisor, and nodes using kube-state-metrics.
- set up alerting notifications via email.
- finally, Visualize the metrics using Grafana.