システムとは?
こんにちは。岡山トヨタシステムサービスです。
今回は、システムの基本情報について詳しく説明したいと思います。
IT初心者の方や将来システム開発の仕事がしたいと思っている学生の方、必見です・・・!
▼システムとは?
システムは「組織や制度」、「仕組み」といったものを指す言葉です。
ビジネスや職場では、システムは「特定の目的を達成するための方法や手順」を意味することが一般的です。
コンピュータ関連のシステムとは、何らかの目的を達成するために構成されたハードウェアやソフトウェアとデータなどの要素全体を指します。
例えば、職場で使われるシステムとしては、「業務を管理するためのシステム」や、「インターネット上でサービスを提供するシステム」などがあります。
▼システムの種類(構成形態)
システムの種類は大きく分けて以下の5つに分類されます。
1.汎用系(メインフレーム/オフコン)システム
汎用機と呼ばれる、大型コンピュータに組み込まれるシステムで、内部の設計や部品、OS、アプリケーションソフトまでがベンダーによる独自仕様で構築されています。汎用機で動作していたシステムをオープンシステムと呼ばれる、クライアント/サーバシステム上で動作するよう移行することを「マイグレーション」と呼びます。プログラムが動作する仕組み等は基本的には汎用機と同じ考えになります。
代表的なプログラミング言語:COBOL
2.クライアント/サーバシステム
機能やサービスを提供するサーバと、それを利用するクライアントとを分離し、ネットワークを介して通信しながら動作するシステムです。クライアントで動作するプログラムとサーバで動作するプログラムを分離することで、負荷を分散でき、Webブラウザの機能制限を受けず自由度の高いシステムを構築できます。DBのみサーバ側に配置し、プログラムはクライアント側で動かす仕組みもこの形態に含まれます。
代表的なプログラミング言語:C++, C#, Visual Basic, Java, Go
3.Webシステム
インターネット上で動作し、Webブラウザを介してアクセスされるアプリケーションやサービスのことを指します。
アプリのインストールが不要で、URLをブラウザで指定するだけで利用できるので、場所や端末を選ばず、いつでもどこでも利用できる点が特徴です。プログラムもWebサーバで一元管理するので、運用・メンテナンス・アップデートが容易です。
代表的なプログラミング言語:Python, Java, PHP, JavaScript, TypeScript, Ruby
4.モバイル(スマートフォン)アプリケーション
スマートフォンやタブレットなどのデバイスで動作し、オフラインでも機能するように設計されたソフトウェアです。Webシステムと異なり、デバイス機能を利用する仕組みやアプリケーションのインストールを前提とします。
オフラインでも動作し、プッシュ通知やカメラ、GPSなどの機能を利用して、利用者の操作が楽になる機能の採用も容易です。
代表的なプログラミング言語:Java, Kotlin, Swift, Objective-C, Dart
5.組み込みシステム
携帯電話やスマートフォンをはじめ、テレビや洗濯機といった家電・自動車・製造ロボットなどに組み込まれているコンピューターシステムのことです。
代表的なプログラミング言語:C言語, C++, Python, Java
このように、システムと一口に言っても、様々な種類や特徴があることが分かります。
以降は、システムの中でもOTSSがこれまでに多く手掛けてきた「Webシステム」にフォーカスして、詳しく説明していきたいと思います。
▼Webシステムの仕組み
Webシステムは、一般的に以下のように構成されています。
クライアント(ブラウザ)
Webシステムを利用するユーザーは、Webブラウザと呼ばれるソフトウェアを通じてシステムにアクセスします。代表的なWebブラウザには、「Google Chrome」や「Microsoft Edge」、「Mozilla Firefox」などがあり、これらを介してWebサーバにリクエストを送信します。ブラウザは、受け取ったデータをもとにWebページを表示する役割を担います。
Webサーバ
クライアントのリクエストを受け取り、HTMLや画像などのコンテンツを提供する役割を担います。例えば、Nginx(エンジンエックス)やApache(アパッチ)などのWebサーバソフトウェアが広く利用されています。
アプリケーションサーバ
Webサーバからのリクエストに応じて、データベースにアクセスし、データの処理や加工を行います。Java系のTomcatやJetty、PHP系のApache、nginxなどが代表的なアプリケーションサーバです。アプリケーションサーバは、データベースとの接続管理やトランザクション管理を通じて、ビジネスロジックを実行します。
データベース
データの保存や管理を行うシステムで、アプリケーションサーバがデータの読み書きを行います。MySQLやPostgreSQL、Oracle DataBase、SQLServerといったリレーショナルデータベース(RDB)が広く利用されており、システム内のデータを効率的に管理します。
クライアント側からは、Webサーバ→アプリケーションサーバ→データベースの順番に配置されています。
Webシステムでは、これらのコンポーネントが連携して動作します。
サーバの役割を分散することで次のようなメリットがあります。
●開発工数を削減できる
Webサーバ、アプリケーションサーバ、データベースそれぞれにあらかじめ備えている機能を利用することで開発にかかる工数を抑えられます。
構築するシステムにあわせてアプリケーションサーバの種類を選ぶことで、幅広いシステム構築へ対応が可能です。
●パフォーマンスを向上できる
分散処理をすることで、情報処理の負荷が軽減され、効率よく大量の処理が可能です。
処理負担が高いサーバがある場合、例えば、アプリケーションサーバを複数台用意することで効率的に処理が可能になり、ユーザーのリクエストに迅速に応答し、Webブラウザに結果を表示します。Webサーバを分散することで、アクセス集中によるサーバダウンを未然に防ぐことが可能です。
●メンテナンス・アップデート・トラブルシュートが容易になる
サーバを用途ごとに分けることで、アップデートの際の影響を最小限に抑え、システムトラブルの原因追求が容易になります。
例えば、アプリケーションサーバを複数台用意することで、システムを停止させずに1台ずつメンテナンスをすることが可能です。
●セキュリティを担保しやすい
Webサーバのみを外部ユーザーに公開する構成によって、悪意を持った外部ユーザーのアクセスを防ぎ、アプリケーションプログラムの不正利用やデータベースの情報を守ります。
▼Webシステムの各構成と役割
①クライアント(ブラウザ)
一般的にWebブラウザと呼ばれるソフトウェアを指します。ユーザーはこのブラウザを通じてWebサーバに接続し、必要な情報を取得し、処理結果を表示します。
②Webサーバ
クライアントと直接やり取りを行うサーバであり、Webブラウザからリクエストした内容を受けて処理します。
例えば、HTMLファイルや画像、動画など、Webページを構成するさまざまな要素を保存し、クライアントに配信します。
Apacheは、長い実績と信頼性、安定性が魅力で長くトップシェアを維持していましたが、「多数の同時接続は処理しきれず、メモリ消費が上がってしまう」C10K問題を解決した、NginxやNginx改良版のOpenRestyやLiteSpeed がシェアを伸ばしています。特にNginxは、処理速度の速さと高い同時接続処理能力で注目されています。
③アプリケーションサーバ
アプリケーションプログラムを動作させるためのサーバです。Webサーバから受け取ったリクエストを処理するための「頭脳」ともいえる存在です。
クライアントからのリクエストをWebサーバが受け取った後、実際にそのリクエストを処理し、データベースと連携して必要なデータを取得・加工し、最終的にクライアントに返す役割を果たします。
アプリケーションサーバが果たす役割は次の3つです。
●DBとの通信
アプリケーションサーバは、プログラムからデータベースに接続し、データの読み込みや書き込みを行います。接続の開始と終了を適切に管理することで、システムのパフォーマンスと安定性を確保します。
●トランザクション管理機能
アプリケーションサーバは、複数の処理を一つのまとまり(トランザクション)として管理します。これにより、全ての処理が成功した場合にのみデータの変更が確定され、一部が失敗した場合は全ての変更が取り消されるため、データの整合性が保たれます。
●ビジネスロジックの実装
ビジネスロジックとは、ユーザーのリクエストに応じて、どのようにデータを処理し、どのような結果を返すかを決定する一連のプログラムです。DBとの通信機能、トランザクション管理機能の制御も、ビジネスロジックで実装します。
アプリケーションサーバはビジネスロジック(プログラム)を動作させる役割なので、プログラム言語やビジネスロジックで必要な処理の機能に応じて製品を選ぶ必要があります。
代表的なJava言語の場合、
・HTTPリクエストを受け取り、処理、レスポンスの生成・送信を行うJavaServlet
・JavaServletでレスポンスの生成時、動的なWebコンテンツを生成するJSP
・JavaServlet とDBサーバの間でのデータ保持やDBへの操作・変換処理を担当するJavaBeans
の3つに役割を分けることもあります。
また、アプリケーションサーバは、その多機能性と柔軟性により、さまざまなプログラミング言語やフレームワークに対応しています。
Java系のアプリケーションサーバとしては、TomcatやJettyが広く利用されており、これらは軽量でありながら高いパフォーマンスを提供します。PHP系ではApacheやnginxが一般的で、これらはPHPスクリプトの実行に特化しています。
さらに、Ruby on Rails環境ではUnicorn、C#系の環境ではMicrosoft-IISが使われるなど、開発言語やフレームワークに応じて最適なアプリケーションサーバが選ばれます。
アプリケーションサーバはWebシステムの中核として、システムの規模や要件に応じて最適なアプリケーションサーバを選定することが、成功するシステム開発の鍵となります。
④データベース
データの処理や保存などを行う「倉庫」として機能するサーバです。
アプリケーションサーバがデータベースに対して、読み出しや書き出し、変更などの役割を果たします。データベースはその命令を受けてデータを適切な状態に管理します。
リレーショナルデータベース(RDB)はデータ構造を表形式で統一していますので、テーブル同士の関連付けを整理し、管理が容易になる特性があります。RDBは、最新性を保つためには適宜更新する必要があるのに対して、データウェアハウス(DWH)は時系列に沿ってデータを蓄積できるため、消去や更新をする必要がないという点で大きく異なります。
「NoSQL」はNot Only SQLの略とされ、RDB以外の多様なデータに対応できることが特長です。
▼システム導入のメリット
システムを業務に導入することで、作業手順が標準化され、時間とコストの節約が可能になります。また、作業のミスを減らすこともでき、全体的な生産性の向上が期待できます。
ただし、システムには障害やエラーが発生するリスクもありますので、導入後は適切な保守と管理が必要です。
いかがだったでしょうか。
今回の記事をきっかけに、システム開発にさらに興味をもっていただけたら幸いです。
ちなみに、OTSSがシステム開発をメインとする会社というのは初回の記事でもご紹介しました。システム開発の要件定義、設計、開発、導入、保守までの工程を、一貫して社内で完結できるのがOTSSの強みでもあります!
それでは次の記事でお会いしましょう・・・!!
初回記事はコチラ↓↓