CodeGym /Courses /C# SELF /IT Product Model

IT Product Model

C# SELF
Level 9 , Lesson 6
Available

1. Modern Products

Modern products are no longer called programs by anyone. A modern product can include dozens of programs, hundreds of internet services, and many APIs provided by a cloud data center (also called data processing centers) where it is deployed.

Many modern products (if not all) operate based on the Client-Server paradigm. This is when a program on your device (phone, laptop, computer) handles communication with the user (you), while critical functionality resides on a dedicated server where all the important stuff happens ➡️🖥️

Sometimes your client may communicate with multiple independent servers, or one product's server might contact another product's server. It results in a kind of global network of clients and servers, all working together.

Therefore, the modern application model might be better described by the Client-Internet-Server paradigm. There’s just so much complex communication now. There are even so-called "smart communication channels" that decide on their own who and when to send your request to 🛰️📡.

2. Clients

Client programs can be roughly divided into 4 categories:

  • 🖥️ Desktop client — a program running on a computer.
  • 📲 Mobile client — an app for iOS or Android.
  • 🌐 Web client — a website/web app running in a browser.
  • 🌍 Server client — an app running on another server.

And each of these can be further broken down. For example, a web client is a website or web application, which means it consists of Browser and Website loaded into it. Browsers are not all the same and can work differently.

But even if we take the most common browser, there's still the website loaded into it. A website usually consists of three parts:

  • 📄 HTML
  • 🎨 CSS
  • ⚡ JavaScript

"Nothing simpler," you might say. But today, nobody writes websites just with HTML and JavaScript. For website development, developers now use not just libraries but full frameworks like React, Angular, or Vue ⚛️. And these are not just websites anymore, but full-fledged web applications with their own build systems, tests, and paradigms.

Pure CSS is also rarely used now. There are CSS preprocessors that help generate CSS, and entire CSS frameworks. Even for email emails, there are special CSS frameworks to make your email look good both in browsers and in most email clients 💌.

Most large web applications are now built on TypeScript, which is then compiled into JavaScript. You get the idea...

3. Internet and Infrastructure

Client-server communication — what could be simpler? But even their relationship has changed now.

Your product is most likely hosted in one of the modern data centers. Many companies worldwide offer various hosting services for your products, whether on their servers or on your own physical servers. Anything you want, for a price.

img

A physical server is no longer truly physical. All modern data centers offer virtual server rentals. A virtual server is a kind of virtual computer, and many of them can run on a single physical server. This makes upgrading easier — if you need more memory, you can add it to your virtual server in minutes ⏱️.

But even this approach is becoming outdated; now the trend is moving to clouds — where your product is not just deployed on a virtual server in a data center but actively uses a wide range of infrastructure and services provided by these data centers.

Need a server for backups? There’s ready-made infrastructure in the cloud for that. Need a database with 99.9999999% reliability? That’s available too. Kafka, RabbitMQ, NoSQL? All set and easy to configure. Just pay the money.

And these data centers and clouds are starting to become part of your product. For example, Amazon has tons of data centers worldwide, offering CDN services: your public content will be cached across all Amazon data centers, making it faster for users around the globe 🛰️.

Or you can route your app’s API calls through Amazon Gateway API, which allows very flexible configuration of your services. Distribute load across different services, block DDoS attacks, automate file uploads, set up smart caching — lots of options 🛡️.

Thus, between your client app and your services, many "smart communications" are emerging, which can and should be configured. Even if you never do it yourself, you should know they exist and can significantly affect your program’s performance.

And we haven't even touched topics like routers, 5G towers, satellites, and submarine internet cables. You send a video stream from your server to your client, but it stutters because the client has poor connection and keeps disconnecting. Guess who will solve that problem? You 😅.

4. Server

The word "server" can hide very different concepts. It’s useful to know the most common ones.

  • 🖥️ Physical server
    A physical server is hardware — a dedicated computer with resources (CPU, memory, storage) used for data processing and running various software applications. These servers are installed in data centers, providing power for hosting websites, applications, databases, and other services.
  • 🪐 Virtual server
    A virtual server is a software-emulated server running inside a physical server. Virtualization technologies allow one physical server to be divided into multiple isolated virtual servers, each with its own OS and the ability to be rebooted and configured independently.
  • 🕹️ Program server (e.g., Nginx)
    A program server like Nginx is server software used to handle requests to web resources. Nginx is well known as a web server, but it can also act as a mail proxy, reverse proxy, load balancer, and more in microservice architectures.
  • 💾 Database server
    A database server is specialized hardware or software used to manage databases and process queries. It provides centralized data storage and access over the network, supporting transactions, data search, and modification, with high reliability and security. Examples include MySQL, PostgreSQL, Oracle Database, and Microsoft SQL Server.

Somewhere in a data center, on one of these virtual servers, your C# and ASP.NET Core project will run. It will interact with a database, handle requests through Nginx or Azure Application Gateway, and send logs to monitoring systems like Azure Monitor or Splunk 📈.

Thanks to your code, millions of users will be happy. They’ll use the service, pay for it, and the product owner will be satisfied. Company stocks will grow, you’ll get stock bonuses — and be happy 💸. The true circle of happiness in the industry :)

Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION