Client-Server Architecture. Advantages and Disadvantages of ??the Network Computing Model March 20th, 2023 Evgenia Kuzmenko KITRUM Brand Manager Evgenia Kuzmenko This article is the first out of a series of posts about the most popular architecture types in Distributed Systems. Here we will give you the fundamental concepts of a client-server model. Creating a transport layer protocol, using the client-server model, we have to be guided by a relatively precise set of requirements. In general, a transport layer protocol must address all of the following criteria: a client-server connection, client-server interaction, client-server authentication, and other ways to ensure data integrity after packets have been delivered and received. Here at KITRUM, we often use this architecture model for databases because that is how we can maintain various operators at once with unified requests. If several customers request the same files regularly, you can connect the solutions that track use patterns minimizing response time and enhancing overall system efficiency. So, the main idea of the «client-server» architecture is to divide the network application into several components, each of which implements a specific set of services. Components of such an application can run on different computers, performing server and/or client functions. It improves the reliability, security, and performance of network applications and the network as a whole. What is client-server architecture? So, imagine that you are playing a game on your tablet or computer. You are the client, meaning you are using and interacting with the game. But the game itself doesn’t just exist on your device – it’s running on another computer somewhere else. That computer is the server, and it’s responsible for keeping track of everything happening in the game. So when you move your character in the game, your device sends a message to the server to let it know what you’re doing. The server then updates the game world with your actions and sends that information back to your device so you can see the changes on your screen. In order to keep the game running smoothly, your device and the server must communicate back and forth repeatedly. Client-server architecture is like a conversation between two computers – the client (your device) talks to the server, and the server talks back. Working together, they can create an excellent experience for you as you play your favorite games or use other online applications. What is client-server architecture? Examples of client-server architecture Web-servers Provide access to web applications and content such as HTML files, images, or other resources. These servers are responsible for handling requests, rendering pages, and serving content to users. Application server Designed to centrally solve application tasks in some subject area. To do this, users have the right to run server programs. Using application servers reduces client configuration requirements and simplifies overall network management. Database server Database servers are used to process user requests in SQL. The DBMS is located on the server to which client applications are connected. File servers The file server stores the information as files and provides users access. As a rule, a file server provides a certain protection against unauthorized access. Proxy server First, it acts as an intermediary, helping users to access Internet information while protecting the network. Second, it stores frequently requested information in a cache on a local drive, delivering it quickly to users without having to reaccess the Internet. Firewalls (Firewalls) Provide the ability to monitor and control incoming and outgoing network traffic. Utilizing various rules and settings, it can be used to block unwanted connections, detect malicious data packets, and protect from potential security threats. Mail servers Provide users with the ability to send and receive emails. The server handles authentication, storage, and delivery of emails. Three parts of client/server systems The display layer (Client Tier), the application layer (Business Tier), and the database layer (Data Tier) are the three primary logic components of client/server systems. The presentation layer is handled by the client machine, the application layer is controlled by the dedicated server, and the server machine handles the database layer. The presentation layer provides the user interface, which correlates to the view level. It’s usually a web page or website, like a shop, where you make easy operations with the data like sorting, grouping, counting, etc. This level should not have direct links to the database, and it’s commonly created with HTML, CSS, and Javascript. The application layer is an intermediary level. It stores the business logic for processing the information. It could be, for example, a process when you fill in the online form on a travel website like “I’m going to the Dominican Republic on 23 of November”. Our developers mostly build this layer with Python, Ruby, or PHP. The database server (data layer) provides data storage. It is taken to a different level and is usually implemented using database management systems. Connection to this component is ensured only from the application server level. We use database management software such as MySQL, Oracle, DB2, or PostgreSQL for this level. Three-tier architectural distinction Let’s first start with the two-tier architecture. We don’t use this type of architecture that much, but it is still worth mentioning. The two-tier architecture is used in client-server systems, where the server responds to client requests directly and in full, using only its own resources. The server does not call any third-party network applications or access any third-party resources to execute any part of the request. Compared to a two-link client-server architecture or file-server architecture, a three-tier architecture is generally more scalable (due to the horizontal scalability of the application server and multiplexing of connections) and greater configurability (due to the isolation of levels from each other). At KITRUM, we mostly use three-tier architectural distinction. At the lower level, client applications are located on user computers dedicated to performing functions and presentation logic, providing a software interface for calling an application at the middle level. The lower-level application is called a «thin» or «light» client, as a client can be a regular web browser. At the middle level, there is an application server that executes application logic and from which the processing logic performs database operations, i.e. this layer provides data exchange between users and databases. The Application Server is hosted on a network node accessible to all clients. At the top level, there is a remote specialized database server that receives information from the application server. The database server is dedicated to data processing services and file operations. This extra layer allows scaling the system smoother, improving performance and resulting in a very adaptable and reusable structure. The two-tier architecture is simpler because a single server supports all requests, but that is why it is less reliable and has higher performance requirements. The three-tier architecture is more complex, but since the functions are distributed between the second and third-level servers, this architecture represents: High degree of flexibility and scalability. High Security (protection can be defined for each service or level). High performance (tasks are distributed among the servers). Advantages of client-server model Centralization The fundamental benefit of a client-server network is that it allows for centralized management—all the information you can find in one place. Because the network administrator has complete control over management and administration, this is extremely advantageous. Any issue that arises throughout the whole network may be resolved in one location. It also becomes easier to upgrade data. Adaptability Customers can easily expand the number of clients or servers. Because the server is centralized, there are no concerns regarding authorization to network resources growing in size. As a result, the setups only require a small number of people. Protection Because of the centralized design of a client-server network, data is adequately secured. So only if you’re an authorized user can you access the data via login and password and two-factor authentication. In addition, if the data is lost, the records can be recoverable quickly with one backup. Operation It is simple to handle files because they are all kept on a single server. A client-server network can simply monitor and access necessary file records. Disadvantages of client-server model Overloading Every time when too many clients request access simultaneously, there is a risk of collapse or deceleration of your connection. So there is always a small chance not to reach necessary information. We use a cluster of servers on our projects – one fell, and the rest are working. Put a balancer in front of the servers, and the client sends the request there. No matter how many servers are put into the cluster, the client is not interested. It has one URL – the address of the balancer. This scheme is used for a high-load application – when there are so many requests that one server simply cannot handle them. Amazon, Facebook, and other giants have been working like this for dozens of years. Cost The servers are expensive. You can’t put a normal SSD in there, just like a home computer. Why? Because hardware for servers has quite different reliability requirements, and there is support for specific functions. It can be a significant problem for smaller businesses that may not have the resources to maintain a server and client infrastructure. Final thoughts Client-server architecture is a fundamental concept in computer science, and it is exactly what allows us to do so many things online, from playing games and using social media to accessing cloud-based software. It’s a powerful way for devices to communicate with each other and share information and is essential for internet functioning. However, client-server architecture also raises some interesting questions about privacy and security. When we use online services, we trust the servers to keep our information safe and secure. This can be tricky to balance, as we want the convenience and connectivity that the internet provides, but we also want to ensure our data is protected. So, as you use your devices and interact with the online world, it’s worth thinking about the client-server architecture behind the scenes. How is your data being stored and processed? Who has access to it? What steps are taken to keep it safe? By considering these questions, you can become a more informed and empowered technology user. Клиент-серверная архитектура. Преимущества и недостатки модели сетевых вычислений 20 марта 2023 г. Евгения Кузьменко Бренд-менеджер КИТРУМ Евгения Кузьменко Эта статья — первая из серии статей о наиболее популярных типах архитектуры в распределенных системах. Здесь мы дадим вам фундаментальные концепции модели клиент-сервер. Создавая протокол транспортного уровня с использованием модели клиент-сервер, нам приходится руководствоваться относительно четким набором требований. В общем, протокол транспортного уровня должен учитывать все следующие критерии: соединение клиент-сервер, взаимодействие клиент-сервер, аутентификация клиент-сервер и другие способы обеспечения целостности данных после доставки и получения пакетов. Здесь, в KITRUM, мы часто используем эту модель архитектуры для баз данных, потому что именно так мы можем одновременно поддерживать различных операторов с помощью унифицированных запросов. Если несколько клиентов регулярно запрашивают одни и те же файлы, вы можете подключить решения, которые отслеживают закономерности использования, минимизируя время отклика и повышая общую эффективность системы. Итак, основная идея архитектуры «клиент-сервер» заключается в разделении сетевого приложения на несколько компонентов, каждый из которых реализует определенный набор сервисов. Компоненты такого приложения могут работать на разных компьютерах, выполняя серверные и/или клиентские функции. Это повышает надежность, безопасность и производительность сетевых приложений и сети в целом. Что такое клиент-серверная архитектура? Итак, представьте, что вы играете в игру на планшете или компьютере. Вы являетесь клиентом, то есть используете игру и взаимодействуете с ней. Но сама игра не просто существует на вашем устройстве — она работает где-то еще на другом компьютере. Этот компьютер является сервером и отвечает за отслеживание всего, что происходит в игре. Поэтому, когда вы перемещаете своего персонажа в игре, ваше устройство отправляет сообщение на сервер, чтобы сообщить ему, что вы делаете. Затем сервер обновляет игровой мир вашими действиями и отправляет эту информацию обратно на ваше устройство, чтобы вы могли видеть изменения на своем экране. Чтобы игра работала бесперебойно, ваше устройство и сервер должны постоянно обмениваться данными. Клиент-серверная архитектура похожа на разговор между двумя компьютерами: клиент (ваше устройство) разговаривает с сервером, а сервер отвечает. Работая вместе, они могут создать для вас отличные впечатления, пока вы играете в свои любимые игры или используете другие онлайн-приложения. Что такое клиент-серверная архитектура? Примеры клиент-серверной архитектуры Веб-серверы Обеспечьте доступ к веб-приложениям и содержимому, например HTML-файлам, изображениям или другим ресурсам. Эти серверы отвечают за обработку запросов, отображение страниц и предоставление контента пользователям. Сервер приложений Предназначен для централизованного решения прикладных задач в некоторой предметной области. Для этого пользователи имеют право запускать серверные программы. Использование серверов приложений снижает требования к конфигурации клиента и упрощает общее управление сетью. Сервер базы данных Серверы баз данных используются для обработки пользовательских запросов в SQL. СУБД располагается на сервере, к которому подключаются клиентские приложения. Файловые серверы Файловый сервер хранит информацию в виде файлов и предоставляет доступ пользователям. Как правило, файловый сервер обеспечивает определенную защиту от несанкционированного доступа. Прокси сервер Во-первых, он действует как посредник, помогая пользователям получить доступ к информации в Интернете, одновременно защищая сеть. Во-вторых, он сохраняет часто запрашиваемую информацию в кеше на локальном диске, быстро доставляя ее пользователям без необходимости повторного доступа к Интернету. Брандмауэры (Брандмауэры) Обеспечить возможность мониторинга и контроля входящего и исходящего сетевого трафика. Используя различные правила и настройки, его можно использовать для блокировки нежелательных подключений, обнаружения вредоносных пакетов данных и защиты от потенциальных угроз безопасности. Почтовые серверы Предоставьте пользователям возможность отправлять и получать электронные письма. Сервер обеспечивает аутентификацию, хранение и доставку электронных писем. Три части клиент-серверных систем Уровень отображения (клиентский уровень), уровень приложений (бизнес-уровень) и уровень базы данных (уровень данных) являются тремя основными логическими компонентами клиент-серверных систем. Уровень представления обрабатывается клиентским компьютером, уровень приложений контролируется выделенным сервером, а серверный компьютер обрабатывает уровень базы данных. Уровень представления предоставляет пользовательский интерфейс, который соответствует уровню представления. Обычно это веб-страница или веб-сайт, например магазин, где вы можете легко выполнять операции с данными, такие как сортировка, группировка, подсчет и т. д. Этот уровень не должен иметь прямых ссылок на базу данных, и обычно он создается с помощью HTML, CSS и т. д. Javascript. Прикладной уровень является промежуточным уровнем. Он хранит бизнес-логику для обработки информации. Это может быть, например, процесс заполнения онлайн-формы на туристическом сайте типа «Я собираюсь в Доминиканскую Республику 23 ноября». Наши разработчики в основном создают этот уровень с помощью Python, Ruby или PHP. Сервер базы данных (уровень данных) обеспечивает хранение данных. Он выведен на другой уровень и обычно реализуется с использованием систем управления базами данных. Подключение к этому компоненту обеспечивается только с уровня сервера приложений. На этом уровне мы используем программное обеспечение для управления базами данных, такое как MySQL, Oracle, DB2 или PostgreSQL. Трехуровневое архитектурное различие Начнем с двухуровневой архитектуры. Мы не так часто используем этот тип архитектуры, но о нем все же стоит упомянуть. Двухуровневая архитектура используется в клиент-серверных системах, где сервер отвечает на запросы клиента напрямую и в полном объеме, используя только собственные ресурсы. Сервер не вызывает какие-либо сторонние сетевые приложения и не обращается к каким-либо сторонним ресурсам для выполнения какой-либо части запроса. По сравнению с двухканальной клиент-серверной архитектурой или файлово-серверной архитектурой трехуровневая архитектура, как правило, более масштабируема (за счет горизонтальной масштабируемости сервера приложений и мультиплексирования соединений) и большей настраиваемости (за счет изоляции уровней). друг от друга). В KITRUM мы в основном используем трехуровневое архитектурное разграничение. На нижнем уровне клиентские приложения располагаются на компьютерах пользователей, предназначенных для выполнения функций и логики представления, обеспечивая программный интерфейс для вызова приложения на среднем уровне. Приложение нижнего уровня называется «тонким» или «легким» клиентом, поскольку клиентом может быть обычный веб-браузер. На среднем уровне находится сервер приложений, выполняющий логику приложения и от которого логика обработки выполняет операции с базой данных, т.е. этот уровень обеспечивает обмен данными между пользователями и базами данных. Сервер приложений размещается на сетевом узле, доступном для всех клиентов. На верхнем уровне находится удаленный специализированный сервер базы данных, получающий информацию от сервера приложений. Сервер базы данных предназначен для служб обработки данных и файловых операций. Этот дополнительный уровень позволяет более плавно масштабировать систему, повышать производительность и создавать очень адаптируемую и многоразовую структуру. Двухуровневая архитектура проще, поскольку все запросы поддерживает один сервер, но поэтому она менее надежна и имеет более высокие требования к производительности. Трехуровневая архитектура более сложна, но поскольку функции распределены между серверами второго и третьего уровня, данная архитектура представляет собой: Высокая степень гибкости и масштабируемости. Высокая безопасность (защита может быть определена для каждой услуги или уровня). Высокая производительность (задачи распределяются между серверами). Преимущества модели клиент-сервер Централизация Фундаментальное преимущество сети клиент-сервер заключается в том, что она обеспечивает централизованное управление — вся информация находится в одном месте. Поскольку сетевой администратор имеет полный контроль над управлением и администрированием, это чрезвычайно выгодно. Любая проблема, возникающая во всей сети, может быть решена в одном месте. Также становится проще обновлять данные. Адаптивность Клиенты могут легко расширить количество клиентов или серверов. Поскольку сервер централизован, нет проблем с авторизацией к растущим в размерах сетевым ресурсам. В результате для установки требуется лишь небольшое количество людей. Защита Благодаря централизованной конструкции клиент-серверной сети данные надежно защищены. Таким образом, только если вы являетесь авторизованным пользователем, вы можете получить доступ к данным с помощью логина и пароля и двухфакторной аутентификации. Кроме того, если данные утеряны, записи можно быстро восстановить с помощью одной резервной копии. Операция Обрабатывать файлы просто, поскольку все они хранятся на одном сервере. Сеть клиент-сервер может просто отслеживать и получать доступ к необходимым записям файлов. Недостатки модели клиент-сервер Перегрузка Каждый раз, когда слишком много клиентов одновременно запрашивают доступ, существует риск обрушения или замедления вашего соединения. Так что всегда есть небольшой шанс не дойти до нужной информации. В наших проектах мы используем кластер серверов — один упал, остальные работают. Ставьте балансировщик перед серверами, и клиент отправляет запрос туда. Сколько бы серверов не было в кластере, клиенту это не интересно. У него один URL — адрес балансировщика. Такая схема используется для высоконагруженного приложения — когда запросов так много, что один сервер их просто не может обработать. Amazon, Facebook и другие гиганты работают подобным образом уже десятки лет. Расходы Сервера дорогие. Туда нельзя поставить обычный SSD, как в домашний компьютер. Почему? Потому что к оборудованию для серверов совсем другие требования к надежности, и есть поддержка конкретных функций. Это может стать серьезной проблемой для небольших предприятий, у которых может не хватить ресурсов для обслуживания серверной и клиентской инфраструктуры. Последние мысли Архитектура клиент-сервер — фундаментальная концепция в информатике, и именно она позволяет нам делать очень многое в Интернете: от игр и использования социальных сетей до доступа к облачному программному обеспечению. Это мощный способ взаимодействия устройств друг с другом и обмена информацией, который необходим для работы Интернета. Однако архитектура клиент-сервер также поднимает некоторые интересные вопросы о конфиденциальности и безопасности. Когда мы пользуемся онлайн-сервисами, мы доверяем серверам обеспечивать безопасность и надежность нашей информации. Это может быть сложно сбалансировать, поскольку мы хотим удобства и возможности подключения, которые предоставляет Интернет, но мы также хотим обеспечить защиту наших данных. Итак, когда вы используете свои устройства и взаимодействуете с онлайн-миром, стоит подумать о скрытой архитектуре клиент-сервер. Как ваши данные хранятся и обрабатываются? Кто имеет к нему доступ? Какие меры принимаются, чтобы обеспечить его безопасность? Рассмотрев эти вопросы, вы сможете стать более информированным и уполномоченным пользователем технологий.