cloud-native-store

module
v0.1.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 9, 2025 License: MIT

README

Cloud Native Store

License Releases Go Report Card Codacy Badge Codacy Badge

Cloud Native Store is a Go-based key-value store showcasing cloud-native patterns like transactional logging, data sharding, encryption, TLS, and circuit breakers. Built with hexagonal architecture for modularity and extensibility, it includes a robust API and in-memory storage for efficiency and stability.

Project Motivation

The motivation behind Cloud Native Store is to provide a practical example of implementing a key-value store that adheres to cloud-native principles. The project aims to:

  1. Demonstrate best practices for building scalable, secure, and reliable cloud-native applications.
  2. Showcase the use of hexagonal architecture to enable modular and testable code.
  3. Offer a reference implementation for features like encryption, transactional logging, and stability mechanisms.
  4. Inspire developers to adopt cloud-native patterns in their projects.

Project Setup and Run Instructions

Follow these steps to set up and run the Cloud Native Store:

Prerequisites
  1. Create an encryption key by running the following command:
just genkey
  1. Create an .env file and replace the following values besides HOME_PATH with your own:
CLIENT_TIMEOUT="5s"

ENCRYPTION_KEY="0a0375de7bd186c2f8d80ef94e5f3d357462f594ca6785d4779f52bcb2b65b85"

GITHUB_CLIENT_ID=""
GITHUB_CLIENT_SECRET=""
GITHUB_REDIRECT_URL="http://localhost:8080/auth/callback"
GITHUB_SCOPE="user:read"

HOME_PATH="/ui"

PORT="8080"

SERVER_IDLE_TIMEOUT="5s"
SERVER_READ_HEADER_TIMEOUT="5s"
SERVER_READ_TIMEOUT="5s"
SERVER_WRITE_TIMEOUT="5s"

STORE_BREAKER_THRESHOLD="5"
STORE_DEBOUNCE_PER_SEC="10"
STORE_RETRY_DELAY="5s"
STORE_RETRY_MAX="3"
STORE_SHARDS="2"
STORE_TIMEOUT="5s"
Commands
Test the Service

To run unit tests:

just test

This will execute tests for the core service logic.

Run the Service

To start the service:

just run
How to Test

After running the service, you can verify its health by visiting the UI in your browser:

http://localhost:8080/ui

Directories

Path Synopsis
cmd
genkey command
This program generates a new 256-bit key and prints it as a hex string.
This program generates a new 256-bit key and prints it as a hex string.
service command
This is the main package for initializing and running the server.
This is the main package for initializing and running the server.
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL