CodeGym /Courses /JAVA 25 SELF /IT product model

IT product model

JAVA 25 SELF
Level 9, Lesson 6
Available

1. Modern products

No one calls modern products “programs” anymore. 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 under the paradigm of Client–Server. That’s when there is a program on your device (phone, laptop, computer) responsible for communicating with the user (you), while the critical functionality lives on a dedicated server where all the important stuff happens ➡️🖥️

Sometimes your client can talk to several independent servers, or a server of one product can call a server of another product. You end up with a sort of global network of clients and servers, all working with each other.

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

2. Clients

Client applications can roughly be divided into four categories:

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

And each of them can, in turn, be broken down further. For example, a web client is a website or a web application, which means it consists of the Browser and the Site that loads into it. Browsers aren’t all the same and can behave differently.

But even if we take the most common browser, there’s still the site that loads into it. A site usually consists of three things:

  • 📄 HTML
  • 🎨 CSS
  • ⚡ JavaScript

“Nothing could be easier,” you might say. Except these days no one writes sites just in HTML and JavaScript. For web development people now use not just libraries but full‑fledged frameworks such as React, Angular, or Vue ⚛️. And they aren’t simply sites anymore but full‑fledged web applications with their own builds, tests, and paradigms.

Plain CSS isn’t really used anymore either. There are CSS preprocessors that help generate it, and entire CSS frameworks. What’s more, there are even special CSS frameworks for email so your message looks good both in the browser and in most mail clients 💌.

Hardly anyone writes in plain JavaScript anymore either — all major web applications are created in TypeScript, which is then compiled to JavaScript. Well, you get the idea...

3. Internet and infrastructure

Client–server communication — what could be simpler? But even in their relationship, everything has already changed.

Your product will most likely be hosted in one of today’s data centers. Many companies around the world offer various hosting services for your products, whether on their servers or on your own physical servers. Anything you’re willing to pay for.

Data center

A physical server is no longer physical. All modern data centers offer virtual server rentals. A virtual server is a kind of virtual computer, and there can be dozens of them on one physical server. It’s convenient for upgrading a server. If you need more memory, you can add it to your virtual server in a matter of minutes ⏱️.

But even that approach is already becoming outdated — moving to the cloud is in vogue now: that’s when your product is not just deployed on a virtual server in a data center but actively uses a large set of those data centers’ infrastructure and services.

Need a server for storing backups — there’s ready‑made, convenient infrastructure in the cloud for that. Need a database with 99.9999999% reliability? That exists too. Kafka, RabbitMQ, NoSQL? It’s all already there and easy to configure. Just pay the money.

And these data centers and clouds are becoming part of your product. For example, Amazon has a ton of data centers across the globe, so they offer a CDN service: your public content will be cached at all Amazon data centers, and your users around the world will receive it faster 🛰️.

Or requests to your application’s API can be routed through the Amazon API Gateway service, which allows you to configure how your services are accessed very flexibly. You can distribute load across different services, repel DDoS attacks, automate file uploads, set up smart caching — and much more 🛡️.

Thus, between the client application and your services, many “smart communications” arise that can and should be configured. Even if you never do this personally, you should know that they exist and can significantly influence how your program operates.

And we still haven’t touched on topics like routers, 5G towers, satellites, and undersea internet cables. You send a video stream from your server to your client, and it glitches because the client has a poor connection and the link keeps dropping. Guess who will solve this problem? You 😅

4. Server

The word “server” can hide very different concepts. It will be useful for you to know the most common ones.

  • 🖥️ Physical server
    A physical server is hardware that represents a standalone computer with resources (processor, memory, storage) used to process data and run various software applications. These servers are installed in data centers, where they provide the capacity to host websites, applications, databases, and other services.
  • 🪐 Virtual server
    A virtual server is a software‑emulated server that runs within a physical server environment. Using virtualization technologies, one physical server can be divided into several isolated virtual servers, each with its own operating system and the ability to be rebooted and configured independently.
  • 🕹️ Server software (e.g., Nginx)
    Server software such as Nginx is server‑side software used to handle requests to web resources. Nginx is widely known as a web server that can also act as a mail proxy server and a reverse proxy server in microservice architectures, as well as a load balancer.
  • 💾 Database server
    A database server is a specialized server used to manage databases and process queries to them. It provides centralized data storage and processing, offering access to data over a network. Database servers support transaction processing, searching, and modifying data while ensuring reliable and secure information storage. Examples of database servers include MySQL, PostgreSQL, Oracle Database, and Microsoft SQL Server.

And somewhere in a data center, on one of the virtual servers, your project in C# and ASP.NET Core will be running. It will work with a database, receive requests through Nginx or Azure Application Gateway, and send its logs to monitoring systems like Azure Monitor or Splunk 📈.

But it’s thanks to your code that millions of users of your product will be satisfied. They will use the service, pay money for it, and in the end the product owner will be satisfied too. The company’s stock will rise, you’ll get stock bonuses — and you’ll be happy 💸. A real cycle of happiness in the industry :)

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