Distributed Design

A distributed system is an application that executes a collection of protocols to coordinate the actions of multiple processes on a network, such that all components cooperate together to perform a single or small set of related tasks. Why build a distributed system? There are lots of advantages including the ability to connect remote users... » read more

Dependency Injection

Dependency injection is a technique whereby one object (or static method) supplies the dependencies of another object. A dependency is an object that can be used (a service). It Increases code reusability and improves code maintainability. It allows us to develop loosely coupled code and reduce tight coupling between software components. DI is providing an object what... » read more

Multithreading

Multithreading is the ability of a central processing unit to execute multiple processes or threads concurrently, supported by the operating system. Safety issues: Without proper synchronization a program where the order of execution is important can cause unexpected results with multiple threads.  Multi-threading is best used for situations where you have a lot of asynchronous functions... » read more

Microservices Architecture

A variant of the Service-Oriented Architecture. A software development technique in which an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight. The benefit of decomposing an application into different smaller services is that it improves modularity. This makes the application easier to understand, develop, test, and become more resilient to architecture... » read more