Studi kasus teknologi NATS untuk simple aplikasi chatting multiple server.
Proyek ini mengimplementasikan sistem chat terdistribusi menggunakan teknologi NATS, dengan kemampuan komunikasi lintas server melalui message broker.
- Docker
- Docker Compose
- Make
- Go 1.23
- 3 instance aplikasi berbeda
- NATS sebagai message broker (pub/sub pattern)
- WebSocket untuk komunikasi real-time
- Port berbeda untuk setiap instance: 8081, 8082, 8083
- Komunikasi real-time antar server
- Scalable message passing
- Isolasi komunikasi menggunakan NATS
- Dukungan multiple server
# Rebuild dan start semua container
make rebuild
# Atau secara manual
docker-compose up --build
# Stop dan remove containers
make down
# Atau secara manual
docker-compose down
# Install WebSocket testing tool
npm install -g wscat
# Koneksi ke masing-masing server instance
# Param pertama adalah user ID, param kedua adalah room ID
wscat -c ws://localhost:8081/ws/1/1
wscat -c ws://localhost:8082/ws/2/1
wscat -c ws://localhost:8083/ws/3/1
websocat
: Tool berbasis Rust untuk testing WebSockethttpie-ws
: Plugin WebSocket untuk HTTPie
docker-compose.yml
: Definisi services dan networkingDockerfile
: Instruksi build untuk Go application
- NATS Monitoring tersedia di
http://localhost:8222
- Gunakan kredensial:
- Username: sammidev
- Password: password
- Pastikan port 4222, 8222, 8081-8083 tidak digunakan oleh aplikasi lain
- Periksa koneksi internet untuk download dependencies
- Gunakan
docker-compose logs <service_name>
untuk melihat log
- Setiap instance memiliki environment variable unik
- Komunikasi antar server melalui NATS subject