# Software Deployment Models – Explained for Beginners

![rw-book-cover](https://www.freecodecamp.org/news/content/images/2024/01/pexels-joshua-135018--1-.jpg)

## Metadata
- Author: [[freeCodeCamp.org]]
- Full Title: Software Deployment Models – Explained for Beginners
- Category: #articles
- Document Tags: [[dev]] 
- URL: https://www.freecodecamp.org/news/software-deployment-models/
- Archive: https://web-archive.alecodes.page/bookmarks?bf=1&search=&title=Software%20Deployment%20Models%20%E2%80%93%20Explained%20for%20Beginners
> [!tldr]
> Software deployment models refer to the different ways in which software code can be deployed. This article explores various deployment models, including client/server computing, thin and fat client architectures, microservices, and Application Programming Interfaces (APIs). Client/server computing involves splitting computing tasks between clients and servers, with clients making requests and servers providing services or resources. Thin client architectures place most of the processing on the server side, while fat client architectures handle both the presentation layer and application logic on the client machine. Microservices involve dividing applications into smaller, independent services that communicate over a network, while APIs enable communication and integration between different software applications. The article also briefly touches on web applications, single page applications (SPAs), and different types of APIs, such as open APIs and REST APIs.

## Highlights
Client/server computing architectures are a type of distributed computing architecture in which computing tasks are split between two types of machines: clients and servers. [View Highlight](https://read.readwise.io/read/01j59dqe78wf56va1yz6gb3df0))

The client/server architecture provides several advantages, including:
• Scalability, meaning that servers can be added or removed from the network as demand changes. This allows the system to scale up or down as needed without having to make changes on the clients.
• Centralization, which means that by centralizing resources on servers, it is easier to manage and control access to those resources, and to enforce security policies. [View Highlight](https://read.readwise.io/read/01j59dqwmj1saw3r59nt5qy2v8))

In a *thin* client architecture, the client machine is responsible for only the presentation layer, while the application logic and data processing are handled on the server side. __Thin clients typically have limited processing power and memory, and rely heavily on network connectivity to function__. [View Highlight](https://read.readwise.io/read/01j59drt66pd1rvgzhqdk6jvae))

On the other hand, in a *fat* client architecture, the client machine is responsible for both the presentation layer and the application logic. The client machine typically has more processing power and memory, and can execute code and process data locally. [View Highlight](https://read.readwise.io/read/01j59dtzv6kms42sp02x7p6rz6))

Now, should you design your software as a microservices or monolith architecture? In a *monolith* architecture, the entire application is built as a single, self-contained unit. All functionality, from data access to user interface, is bundled together in one codebase and deployed as a single unit. [View Highlight](https://read.readwise.io/read/01j59dx0jgkzhxpcsrbvhmb8p5))

Web applications are software applications that are accessed through a web browser over a network such as the Internet. The purpose of web applications is to provide users with a convenient and accessible way to perform various tasks and access services over the web. [View Highlight](https://read.readwise.io/read/01j59dzd3j41bgbampr7rqjsxd))

