Skip to content

A geo-distributed messenger built on Spring Cloud, Google Cloud and YugabyteDB database

License

Notifications You must be signed in to change notification settings

YugabyteDB-Samples/geo-distributed-messenger-spring-cloud

 
 

Repository files navigation

Geo-Distributed Messenger With Spring Cloud, YugabyteDB and Google Cloud

This application is a Slack-like messenger that is designed to function across geographies.

Presently the application supports basic messaging features as well as an ability to share pictures in discussion channels.

image9

The messenger can be deployed as a single instance on your local laptop or function across the world in the public Google Cloud infrastructure.

The software stack is built on Spring Boot, Spring Cloud Config Server, Spring Cloud Discover Server, Vaadin and YugabyteDB database. Google Cloud Storage is used for the Google Cloud deployment and MinIO is used in other deployment options.

Deployment Options

high_level_architecture

The application can be deployed in several environments.

Deployment Type Description
Your Laptop Deploy the entire app with all the components (Spring Cloud Config, Spring Cloud Discovery, YugabyteDB, MinIO) on your local machine.
Docker Compose No need to install anything apart from Docker and Docker Compose. Deploy the entire app in Docker with a single Docker Compose command.
Gitpod Run the app in your personal Gitpod environment. Requires to fork this repository.
Deployment in Google Kubernetes Engine Deploy a distributed version of the app across two Kubernetes clusters in Google Cloud.
Geo-Distributed Deployment in Google Kubernetes Engine Deploy a geo-distributed version of the app across five Kubernetes clusters in Google Cloud.
Deployment on Google Cloud Virtual Machines Deploy a geo-distributed version of the app across multiple regions using VMs of Google Cloud.

About

A geo-distributed messenger built on Spring Cloud, Google Cloud and YugabyteDB database

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 73.1%
  • Shell 22.1%
  • CSS 1.7%
  • Dockerfile 1.5%
  • JavaScript 1.1%
  • HTML 0.5%