Skip to content
This repository has been archived by the owner on Dec 31, 2023. It is now read-only.

5. [Containerless] Infrastructure Design

Nguyễn Xuân Nhân edited this page Oct 3, 2023 · 2 revisions

In this containerless infrastructure design, we will leverage a combination of Azure, Render, and Redislab services to host various components of our application. The design focuses on achieving scalability, reliability, and security while minimizing the use of containers. Here are the key components and their hosting platforms:

Azure

image

Resource Group

  • Azure Resource Group serves as a logical container for managing and organizing Azure resources. It helps streamline resource management, access control, and billing.

App Service (Windows/Linux)

  • Azure App Service provides a platform for hosting web applications, RESTful APIs, and websites. It supports both Windows and Linux-based environments.

    • API: Hosted on Azure App Service, the API serves as the core of our application, providing backend functionality and data access.

    • Website: Also hosted on Azure App Service, the website represents the customer-facing user interface and user experience.

    • YARP Reverse Proxy: The YARP (Yet Another Reverse Proxy) is deployed on Azure App Service and acts as a reverse proxy, routing incoming requests to the appropriate backend services, enhancing security, and load balancing.

SignalR

  • SignalR, a service provided by Azure, enables real-time communication between the client (browser) and the server. It facilitates features such as live updates and interactive messaging.

KeyVault

  • Azure Key Vault is used for secure storage and management of cryptographic keys, secrets, and certificates. It ensures the protection of sensitive data and credentials.

Render

PostgreSQL

  • Render provides hosting for PostgreSQL, a powerful open-source relational database management system. It serves as the primary database for our application, storing structured data efficiently.

WebService (CMS)

  • Render hosts the web service component, which functions as a Content Management System (CMS). It provides tools for content creation, management, and publishing, allowing easy content updates for the website.

Redis Labs (Redis Cloud)

  • Redis, hosted by Redis Labs, is a high-performance, in-memory data store. It is used to implement caching and improve the speed and responsiveness of the application. The Redis service provided by Redis Labs offers advanced caching capabilities.

Timescaledb (Optional)

  • Timescaledb is an optional component hosted on Render, optimized for time-series data storage and analytics. It can be used to efficiently manage and analyze time-series data if required by the application.

This infrastructure design leverages the strengths of Azure, Render, and Redis Labs to create a robust and scalable environment for our application. It combines Azure's cloud capabilities, Render's specialized database hosting, and Redis Labs' caching expertise to deliver a secure, performant, and feature-rich application architecture.