【キャッシュ】システムにはたくさんのキャッシュの種類がある?! ひとくくりにしてはいけないよ!(PART2)
アプリ開発をしていると必ず出てくると言ってもいい「キャッシュ」
キャッシュを用意することで処理時間を削減し、パフォーマンスを良くすることができます
「そんなことは知っているよ!」という人は多いとは思いますが、
前回に引き続き、改めてどんな種類があるのか、どんなデータを保管しているのか確認していきましう!!
以下にITアプリに関するキャッシュの主要な種類をまとめました。
今回は3つ紹介していきます!!
1. DNSキャッシュ
DNSキャッシュはインターネット上でドメイン名をIPアドレスに変換するために使用されるDNS(Domain Name System)サービスの一部です
DNSキャッシュは一般的にISP(Internet Service Provider)や企業のネットワーク内のDNSサーバーに存在していて、
前回問い合わせたドメイン名とそのIPアドレスの組み合わせを一時的に保存し、同じドメイン名を問い合わせた場合に、再度DNSサーバーに問い合わせることなく、キャッシュされた情報を使用して迅速な応答が可能にしています
また、攻撃者によるDNSサービス拒否攻撃(DDoS)やDNSキャッシュポイズニングのような攻撃からも保護する役割があります
DNSキャッシュの有効期間は一般的に数時間から数日程度です
有効期間が切れた場合、DNSキャッシュはその情報を破棄し、新たに問い合わせを行います
しかし、キャッシュされた情報が間違っている場合、DNSキャッシュポイズニングによって攻撃者によって操作された間違った情報がキャッシュされることがあります
それを対処するため、DNSサーバーはDNSSEC(Domain Name System Security Extensions)と呼ばれるセキュリティ拡張機能をサポートしている場合があります
※ DNSSECは、DNSキャッシュポイズニングのような攻撃から保護するために使用されます
インターネットのDNSサーバーは、階層的な構造を持っており、ルートDNSサーバー、トップレベルドメイン(TLD)DNSサーバー、第二レベルドメイン(Domain)DNSサーバーの3つのレベルに分かれています
ルートDNSサーバーは全世界に13台存在し、インターネット上の全てのドメインを管理するための最上位のDNSサーバー
TLDDNSサーバーはトップレベルドメイン(例えば、.com、.org、.jpなど)のDNSサービスを提供し、第二レベルドメインDNSサーバーは、各ドメイン(例えば、google.com、yahoo.co.jpなど)のDNSサービスを提供します
3段階ある(゜-゜)
2. CPUキャッシュ
CPUキャッシュとはCPU内部にある高速なメモリで、主記憶装置(RAM)とCPUの処理速度の差を埋めるために使用されます
キャッシュメモリはCPUが最近アクセスしたデータと命令を保存し、CPUが再度アクセスする場合に高速なアクセスを可能にします!
CPUキャッシュは一般的にレベル1(L1)、レベル2(L2)、レベル3(L3)の3つのレベルに分かれていて、レベル1キャッシュは最も高速でCPUコアに直接接続されています
レベル2キャッシュは複数のコアで共有される場合があります
レベル3キャッシュは、複数のCPUチップ間で共有される場合があります
キャッシュのサイズは一般的にレベルが高くなるにつれて大きくなりますが、もちろんキャッシュサイズが大きくなるほど、コストが高くなります
そのため、CPUメーカーは、コストとパフォーマンスのバランスを取るために、適切なキャッシュサイズを選択する必要があります
CPUキャッシュの性能はアクセス時間やヒット率という指標で測定されます
アクセス時間はCPUがキャッシュからデータを取得するまでの時間、ヒット率はCPUが必要とするデータがキャッシュに存在する確率を示し、ヒット率が高いほど、CPUの処理速度が高速になります
総じて、CPUキャッシュは高速なメモリであり、CPUの処理速度を向上させるために重要な役割を果たします
キャッシュの設計にはコストとパフォーマンスのバランスを考慮し、適切なキャッシュサイズを選択する必要があるため高度であることがうかがえますね(゜-゜)
3. プロキシキャッシュ
プロキシキャッシュはネットワーク上にあるプロキシサーバーがクライアントからのリクエストに対して、キャッシュしたレスポンスを返すことで、転送量や応答時間を削減するキャッシュです
インターネット上の複数のクライアントが同じウェブサイトにアクセスした場合に、そのウェブサイトのコンテンツを一度キャッシュし、以降のアクセス時にキャッシュから提供することで、ネットワークトラフィックを削減し、応答時間を短縮するための仕組みです
プロキシキャッシュは、プロキシサーバと呼ばれる特別なサーバに実装されます
クライアントがウェブサイトにアクセスすると、リクエストはプロキシサーバに送信され、プロキシサーバは、キャッシュにリクエストされたコンテンツが保存されているかどうかを確認します
もしキャッシュに保存されていれば、プロキシサーバはクライアントにキャッシュからコンテンツを提供します
もしキャッシュに保存されていない場合はプロキシサーバはリクエストをウェブサイトのサーバに送信し、コンテンツを取得してクライアントに提供します
どんどん新しいコンテンツをキャッシュに保存することもできます!!
簡単にメリットとデメリットをまとめてみましょう!
プロキシキャッシュのメリット
ネットワークトラフィックの削減
ウェブサイトのコンテンツが一度キャッシュされると、複数のクライアントが同じコンテンツにアクセスする場合に、ウェブサイトのサーバにリクエストを送信する必要がなくなります
これにより、ネットワークトラフィックが削減され、ウェブサイトの応答時間が短縮されます
ネットワークセキュリティの向上
プロキシサーバはクライアントとウェブサイトのサーバとの間に位置するため、悪意のあるトラフィックや攻撃からクライアントを保護することができます
コンテンツの高速配信
キャッシュされたコンテンツは、プロキシサーバから直接提供されるため、ウェブサイトのサーバよりも高速に配信されることがあります
プロキシキャッシュのメリット
キャッシュの不整合
プロキシサーバがキャッシュするコンテンツは、時間とともに古くなり、ウェブサイトのサーバが更新した最新のコンテンツと不一致になることがあります
このような場合、プロキシサーバは古いコンテンツを提供することになるため、回避するためにキャッシュの有効期限を短くすることが必要です
プライバシーの問題
プロキシサーバはクライアントのアクセス履歴を記録することができます
このため、プライバシーに関する問題が生じることがあります
一部のプロキシサーバはログを取らないように設定できますが、それでも完全なプライバシー保護を提供するわけではありません
プロキシサーバの単一障害点
プロキシサーバに障害が生じた場合、そのサーバに接続しているすべてのクライアントが影響を受けます
このため、プロキシサーバの冗長化が必要になることがあります
プロキシキャッシュは企業や組織などで広く使用されており、ネットワークトラフィックの削減や応答時間の短縮に大きな効果を発揮しています
ただし、プロキシサーバの設定や管理には注意が必要であり、適切に構成されていない場合にはセキュリティ上のリスクやプライバシー上の問題が生じることがあるため、専門的な知識が必要!!
アプリが作れる上、プロキシキャッシュを扱えるとなれば希少性のある人材に慣れるかもしれませんね
今回は前回に引き続き3つのキャッシュを紹介しました
インフラチックなキャッシュが多かったですね(゜-゜)
アプリケーションのパフォーマンスアップのために、是非参考にしてみてください
ぜひっ
是非フォローしてください
最新の情報をお伝えします