Diagram and overview

Note: diagram is subject to change - currently, a rough sketch of the service is presented

Yuzu Diagram V1

The architecture of Yuzu is divided into two primary components: the front-end interfaces and the back-end services. This is a brief overview designed to introduce the more detailed sections that follow.

Frontends

Yuzu features two frontend interfaces: one designed for mobile devices and another for desktop browsers. These front-ends communicate with the back-end infrastructure through a multi-layered approach involving CloudFront (CDN) and a load balancer.

Backend Routing

Initially, incoming requests pass through AWS CloudFront, followed by a load balancer. Although the necessity of an external load balancer is under consideration—I am currently unsure if a load balancer is required here as I only have a single EKS (kubernetes) cluster running—the architecture includes this as a component.

Core Services

Once past the routing layer, requests are directed to one of three back-end services:

  1. User Service: Developed using Node and Vite.js, this service handles user-related data and functionalities. It communicates with an Elasticsearch instance for features like fuzzy search and typeahead, and stores user-specific data in a PostgreSQL database. This service also interfaces with an S3 bucket for storing user profile images.

  2. Post Service: Written in Go, this service is responsible for handling user posts. It also communicates with the same Elasticsearch instance for search functionalities. Post content is stored in a Cassandra database, while images related to the posts are stored in an S3 bucket.

  3. Feed Service: Also developed in Go, this service manages user feeds. The feeds are stored in Redis, sorted by date in a sorted set in ascending order.

Data Storage and Caching

All core services are interconnected with a Redis instance for data caching, further enhancing performance and efficiency.

This overview serves as an introduction to the more intricate details explored in subsequent sections, providing a foundational understanding of Yuzu's architectural design.

Last updated