{"id":21042710,"url":"https://github.com/yugabytedb-samples/geo-distributed-messenger","last_synced_at":"2025-05-15T17:31:04.832Z","repository":{"id":62068413,"uuid":"511606699","full_name":"YugabyteDB-Samples/geo-distributed-messenger","owner":"YugabyteDB-Samples","description":"A corporate Slack-like messenger built with the YugabyteDB database, Vaadin, Spring Boot, and Kong.","archived":false,"fork":false,"pushed_at":"2023-11-02T14:44:53.000Z","size":58013,"stargazers_count":9,"open_issues_count":0,"forks_count":7,"subscribers_count":0,"default_branch":"main","last_synced_at":"2023-11-02T15:36:41.004Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YugabyteDB-Samples.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-07T16:50:11.000Z","updated_at":"2023-08-08T09:47:26.000Z","dependencies_parsed_at":"2023-02-13T01:16:27.948Z","dependency_job_id":null,"html_url":"https://github.com/YugabyteDB-Samples/geo-distributed-messenger","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YugabyteDB-Samples%2Fgeo-distributed-messenger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YugabyteDB-Samples%2Fgeo-distributed-messenger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YugabyteDB-Samples%2Fgeo-distributed-messenger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YugabyteDB-Samples%2Fgeo-distributed-messenger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YugabyteDB-Samples","download_url":"https://codeload.github.com/YugabyteDB-Samples/geo-distributed-messenger/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225365969,"owners_count":17462973,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T14:08:45.242Z","updated_at":"2024-11-19T14:08:45.917Z","avatar_url":"https://github.com/YugabyteDB-Samples.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Geo-Distributed Messenger With YugabyteDB and Kong Gateway\n\nThis a sample geo-distributed messenger that runs on YugabyteDB database, Kong Gateway, Spring Boot, Vaadin, MinIO and several cloud services.   \n\nThe messenger can be deployed as a single instance on your local laptop or function across the world in the public Google Cloud infrastructure.\n\n![architecture-geo-distributed](https://user-images.githubusercontent.com/1537233/197904658-1ce99812-bcfd-4de9-b782-41bc677545ba.png)\n\nUse this project as a blueprint for designing and building geo-distributed apps with YugabyteDB from scratch.\n\n## Development Journal\n\nThe project's development journey was thoroughly documented on DZone so that the reader can understand design choices and tradeoffs. Follow the journey from start to finish by surfing through the following articles:\n* [Geo What? A Quick Introduction to Geo-Distributed Apps](https://dzone.com/articles/geo-what-a-quick-introduction-to-geo-distributed-a)\n* [What Makes the Architecture of Geo-Distributed Apps Different?](https://dzone.com/articles/what-makes-the-architecture-of-geo-distributed-app)\n* [How to Build a Multi-Zone Java App in Days With Vaadin, YugabyteDB, and Heroku](https://dzone.com/articles/how-to-build-a-multi-zone-java-app-in-days-with-va)\n* [How To Connect a Heroku Java App to a Cloud-Native Database](https://dzone.com/articles/how-to-connect-a-heroku-app-to-a-yugabytedb-manage)\n* [Automating Java Application Deployment Across Multiple Cloud Regions](https://dzone.com/articles/automating-java-application-deployment-across-mult)\n* [Geo-distributed API Layer With Kong Gateway](https://dzone.com/articles/geo-distributed-api-layer-with-kong-gateway)\n* [Using Global Cloud Load Balancer to Route User Requests to App Instances](https://dzone.com/articles/using-global-cloud-load-balancer-to-route-user-req)\n* [Geo-Distributed Microservices and Their Database: Fighting the High Latency](https://dzone.com/articles/geo-distributed-microservices-and-their-database-f)\n\nAnd feel free to reach out to the [main developer and author of the project](https://twitter.com/denismagda) for feedback or questions.\n\n## Deployment Options\n\n![image9](https://user-images.githubusercontent.com/1537233/197895210-5052d681-cd8e-45b2-a621-429b05bce682.png)\n\nThe application can be deployed in several environments.\n\n| Deployment Type    | Description   |         \n| ------------------ |:--------------|\n| [Your Laptop or On-Prem Environment](local_deployment.md)        | Deploy the entire app with all the components (Kong, YugabyteDB, Minio) on your local machine.|\n| [Heroku](heroku_deployment.md)             | Deploy the application in Heroku.     |\n| [Geo-Distributed Deployment in Google Kubernetes Engine](gke_deployment.md)       | Deploy a geo-distributed version of the app across multiple Kubernetes clusters in Google Cloud.|\n| [Geo-Distributed Deployment on Google Cloud Virtual Machines](gcloud_deployment.md)       | Deploy a geo-distributed version of the app across multiple regions using VMs of Google Cloud.|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyugabytedb-samples%2Fgeo-distributed-messenger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyugabytedb-samples%2Fgeo-distributed-messenger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyugabytedb-samples%2Fgeo-distributed-messenger/lists"}