Skip to content

ottingbob/kv-store-grpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Key Value Store over GRPC

This simple project aims to create a decomposed Key-Value store by implementing two services, Rest API and RPC, which communicate over gRPC.

The solution is written in golang and provides a solution using the grpc-gateway package in order to setup handlers to validate the JSON requests via API and convert them to proto messages in the RPC.

The Key-Value store service can:

  • Store a value at a given key
  • Retrieve the value for a given key
  • Delete a given key

The application is setup using docker-compose which uses a single docker file and creates the specific application based on command line arguments passed into the built application.

Running using docker-compose

The solution should work based on using the following command and expect and output where both services print that they are initialized:

$ docker-compose up --build
...
kv-rest | Key-Value REST Service Initializing...
kv-rpc  | Key-Value RPC Service Initializing...

Testing out the application

The application takes JSON requests on a local endpoint exposed over localhost:8080. The Makefile provides a way to quickly test out the three methods by using the make test command:

$ make test
curl -X POST localhost:8080/v1/kv -d '{"key": "nice", "value": "gotem" }' && echo
{"key":"nice", "value":"gotem"}
curl -X GET localhost:8080/v1/kv/nice && echo
{"key":"nice", "value":"gotem"}
curl -X DELETE localhost:8080/v1/kv/nice && echo
{}
# I should expect an error here...
curl -X GET localhost:8080/v1/kv/nice && echo
{"code":5, "message":"Key-Value pair could not be found at key nice", "details":[]}
# I should expect an error here...
curl -X DELETE localhost:8080/v1/kv/nice && echo
{"code":5, "message":"Key-Value pair could not be found at key nice", "details":[]}

Additional curl requests may also be used to add key/value pairs under new keys and the proto validation should be able to eliminate invalid data types when hitting the various endpoints.

About

Simple Key-Value store implemented over GRPC

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published