- Kullanıcılar sistemde hesap oluşturabilir ve login olabilir.
- Kullanıcılar birbirlerinin kullanıcı adını bildiği sürece mesajlaşabilirler.
- Kullanıcılar geçmişe dönük mesajlaşmalarına erişebilirler.
- Bir kullanıcı mesaj almak istemediği diğer kullanıcıyı bloklayabilir.
- Kullanıcıların aktivite (login, invalid login, vb.) logları tutulmalıdır.
- Tüm hatalar kayıt altına alınmalı ve kritik detaylar kullanıcılara iletilmemelidir.
- Dockerize and scalability
- Unit Test Coverage
POST api/v1/register
POST api/v1/login
İstek yapabilmek için token gerekli.
Authorization: Bearer eydsad.....
GET api/v1/mutateUser/:mutateUserId
GET api/v1/users
GET api/v1/messagesWith/:userName
POST api/v1/sendMessage/:userName
Compose ile ayağa kaldırmak için
$ docker-compose up --build
Docker kullanmadan development modunda ayağa kaldırmak için tags'ı vermek gerekir.
$ go run --tags dev main.go
Örnek İstekler
http://localhost/api/v1/register
http://localhost/api/v1/sendMessage/abdulsamet
http://localhost/api/v1/mutateUser/3
NOT: nginx ile 80. porttan serve edildiği için portu url'e yazmıyoruz. Round robin algoritmasına göre oluşan yükü 3 containere dağıtıyor.
api:
....
deploy:
replicas: 3
...
Docker compose dosyasındaki deploy replicas kısmından scale edilebilir. Eğer docker compose kullanılmadan ayağa kaldırılacaksa 8080 portunu istek yaparken belirtmek gerekir.
http://localhost:8080/api/v1/register
http://localhost:8080/api/v1/sendMessage/abdulsamet
http://localhost:8080/api/v1/mutateUser/3
$ go test --tags dev --cover ./...