πŸ’‘Scope & Technologies

Talking about whats in plan and its runway.

What does 'scope' mean to us?

The scope of an API should be well-defined and focused on specific functionalities or capabilities that are required by its users. A well-defined scope can help ensure that the API is easy to understand, use, and maintain, and can also help to minimize development and maintenance costs. Here are some key considerations when defining the scope of an API:

  1. Identify the primary use case: The API should be designed to solve a specific problem or meet a specific need. It is important to identify the primary use case or use cases for the API before defining its scope.

  2. Define the functionalities: Once you have identified the primary use case, define the specific functionalities that the API will provide. The functionalities should be clearly defined and limited to what is necessary to support the use case.

  3. Consider the target audience: The scope of the API should be designed with the target audience in mind. The API should be easy to understand and use for its intended audience, which may include developers, data analysts, or other stakeholders.

  4. Consider scalability: As the API may be used by multiple users or applications, it is important to ensure that the scope of the API is scalable and can handle the load of multiple requests.

  5. Prioritize features: Prioritize the features based on their importance to the primary use case and the target audience. This will help ensure that the most important features are developed first, and that the API remains focused on its primary use case.

  6. Consider future development: When defining the scope of the API, it is also important to consider future development and expansion. The API should be designed to be flexible and extensible so that it can be updated and expanded as needed.

Scope of Project

One of the basic concepts of Microservices is to have separate service for seperate responsibility, so we have broken down identity to be a separate service which can be individually scaled as required and deployed to k8s.

Same has been done for Uploader and Processor.

Identity API

API built using ASP. Net Identity for generating token, supporting OpenID and OAuth

Uploader API

API responsible for entertaining request to upload Video Files of Any type and raises an event for the same.

Processor API

It's a Service which listens to the upload event and generates a thumbnail for the same. It also exposes an endpoint, for directly/synchronously communicating with Uploader API on grpc to get metadata for the uploaded video.

Background Processor

  • ? Needs Discussion in query for AI communications

Tools and Technologies used.

  • .NET Core - Free. Cross-platform. Open source. A developer platform for building all your apps!

  • ASP.NET Core - ASP.NET Core to create web apps and services that are fast, secure, cross-platform, and cloud-based.

  • Docker - OS-level virtualization to deliver software in packages called containers.

  • Redis - The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.

  • RabbitMQ - RabbitMQ is one of the most popular open-source message brokers.

  • Kubernetes - Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. (kind / minikube / EKS / AKS). Kubectl also is required to be setup.

  • Powershell - PowerShell is a cross-platform task automation solution made up of a command-line shell, a scripting language, and a configuration management framework. PowerShell runs on Windows, Linux, and macOS. (For Development only)

  • Terraform - Terraform is an open-source infrastructure as code software tool created by Hashi Corp.

  • Istio.io - Istio extends Kubernetes to establish a programmable, application-aware network using the powerful Envoy service proxy.

  • Dapr - Dapr in a distributed runtime for applications running on VM or K8s. Get Microsoft Learning eBooks

  • Fluxcd - Flux is a set of continuous and progressive delivery solutions for Kubernetes that are open and extensible.

  • Flagger - Automate and manage canary and other advanced deployments with Istio, Linkerd, AWS App Mesh or NGINX for traffic shifting. Integrated Prometheus metrics control canary deployment success or failure.

  • ArgoCD - Declarative continuous delivery with a fully loaded UI, also have a cli

Last updated