CodeGym /コース /C# SELF /ITプロダクトモデル

ITプロダクトモデル

C# SELF
レベル 9 , レッスン 6
使用可能

1. 現代のプロダクト

今や、現代のプロダクトはもう「プログラム」とは呼ばれません。現代のプロダクトは、数十のプログラム、数百のインターネットサービス、そしてクラウドデータセンター(データ処理センターとも呼ばれる)によって提供される多数のAPIを含むこともあります。これらは、展開されているクラウドデータセンター内にあります。

多くの現代のプロダクト(たぶんすべて)はクライアント-サーバーパラダイムで動いています。つまり、あなたのデバイス(スマホ、ノートパソコン、PC)には、ユーザー(あなた)との通信を担当するプログラムがあり、重要な機能は専用のサーバーにあり、そこですべての重要な処理が行われる ➡️🖥️

時には、あなたのクライアントが複数の独立したサーバーと通信したり、あるプロダクトのサーバーが別のプロダクトのサーバーにアクセスしたりします。つまり、クライアントとサーバーのグローバルなネットワークができあがり、すべてが相互に連携しています。

そこで、現代のアプリケーションモデルはクライアント-インターネット-サーバーパラダイムで説明したほうが良いかもしれません。通信が複雑になりすぎて、「スマートチャネル」と呼ばれる自動的にリクエストを送る仕組みも登場しています 🛰️📡

2. クライアント

クライアントプログラムは大きく4つに分類できます:

  • 🖥️ Desktopクライアント — PC上で動くプログラム
  • 📲 Mobileクライアント — iOSやAndroid向けのアプリ
  • 🌐 Webクライアント — ブラウザ上で動くサイトやWebアプリ
  • 🌍 Serverクライアント — 別のサーバー上で動くアプリ

それぞれもさらに細かく分けられます。例えば、WebクライアントはサイトやWebアプリで、ブラウザとサイトから構成されます。ブラウザも種類が多く、動作も異なります。

最も一般的なブラウザを例にとっても、そこに読み込まれるサイトもあります。サイトは通常、次の3つの要素からできています:

  • 📄 HTML
  • 🎨 CSS
  • ⚡ JavaScript

「簡単だ」と思うかもしれませんが、今やサイトは単なるHTMLとJavaScriptだけでは作りません。ReactやAngular、Vueなどのフルフレームワークを使います ⚛️。もはやサイトではなく、ビルドやテスト、パラダイムを持つ本格的なWebアプリになっています。

CSSも純粋なCSSだけは使われなくなっています。CSSプリプロセッサやCSSフレームワークも登場し、メール用のCSSフレームワークもあります 💌。見た目をきれいに保つために工夫されています。

JavaScriptも純粋なものは少なく、TypeScriptに書き換えてからJavaScriptにコンパイルして使います。理解できましたか?

3. インターネットとインフラ

クライアントとサーバーの通信はシンプルに見えますが、実はすでに変化しています。

あなたのプロダクトは、多くの場合、最新のデータセンターに展開されます。世界中の企業がホスティングサービスを提供しており、自社サーバーやクラウド上に展開可能です。お金次第です。

img

物理サーバーはもはや「物理的」ではありません。現代のデータセンターは仮想サーバーのレンタルを提供しています。仮想サーバーは仮想的なコンピュータで、一つの物理サーバー上に複数存在します。これにより、アップグレードも簡単です。メモリを増やしたいときは数分で追加可能 ⏱️。

しかし、この方法も古くなりつつあり、今はクラウドへの移行が主流です。クラウドは、単に仮想サーバーに展開するだけでなく、多くのインフラやサービスを活用します。

バックアップ用のサーバーや、99.9999999%の信頼性を持つデータベース、KafkaやRabbitMQ、NoSQLもすぐに使えます。お金さえ払えばOKです。

これらのデータセンターやクラウドは、あなたのプロダクトの一部になりつつあります。例えば、Amazonは世界中にデータセンターを持ち、CDNサービスを提供しています。あなたの公開コンテンツはAmazonの全データセンターにキャッシュされ、世界中のユーザーに高速に配信されます 🛰️。

また、API呼び出しもAmazon Gateway APIを経由させることができ、柔軟にサービスを管理できます。負荷分散やDDoS対策、自動ファイルアップロード、スマートキャッシュなど、多彩な機能を設定可能です 🛡️。

こうした「スマートな通信」がクライアントアプリとサービス間にたくさん生まれ、それらを設定・管理することが重要になっています。たとえ自分でやらなくても、その存在と仕組みは知っておくべきです。

ルーターや5G基地局、衛星、海底ケーブルなどの話もあります。あなたがサーバーからクライアントへ動画を送信し、通信が途切れることもあります。そんなとき、誰が解決すると思いますか?あなたです 😅

4. サーバー

「サーバー」という言葉にはさまざまな意味があります。代表的なものを紹介します。

  • 🖥️ 物理サーバー
    物理サーバーは、CPU、メモリ、ストレージを持つ専用のコンピュータです。データ処理やアプリケーションの運用に使われ、データセンターに設置されます。Webサイトやアプリ、データベースなどのホスティングに使われます。
  • 🪐 仮想サーバー
    仮想サーバーは、物理サーバー上で動く仮想的なサーバーです。仮想化技術により、一つの物理サーバーを複数の仮想サーバーに分割でき、それぞれにOSや設定を持たせることができます。
  • 🕹️ プログラムサーバー(例:Nginx)
    Nginxのようなサーバープログラムは、Webリクエストを処理するソフトウェアです。Webサーバーとしてだけでなく、メールプロキシやリバースプロキシ、ロードバランサーとしても使われます。
  • 💾 データベースサーバー
    データベース管理用のサーバーです。データの保存と処理を集中して行い、ネットワーク経由でアクセスされます。トランザクション処理や検索、更新を高速かつ安全に行います。MySQL、PostgreSQL、Oracle、SQL Serverなどがあります。

あなたのC#とASP.NET Coreのプロジェクトは、データセンターの仮想サーバー上で動き、データベースと連携し、NginxやAzure Application Gatewayを経由してリクエストを受け取り、Azure MonitorやSplunkにログを送る仕組みです 📈。

あなたのコードのおかげで、何百万ものユーザーが満足し、サービスを使い続け、料金を支払います。結果として、プロダクトの所有者も満足し、株価も上がり、あなたもボーナスや株式報酬をもらって幸せになります 💸。まさにハッピーサイクルですね :)

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION