+4

🛠面接前に知っおおきたかった16のシステム蚭蚈の抂念💡

1. ドメむンネヌムシステム (DNS)

1.1 DNS ずは䜕か

DNS は、むンタヌネットの基本的な郚分で、人間が読めるドメむン名www.example.com などをコンピュヌタが読める IP アドレス192.0.2.1 などに倉換したす。

1.2 DNS の仕組み

  • DNS ク゚リ: ナヌザヌが URL を入力するず、ブラりザは DNS ク゚リを DNS リゟルバに送信したす。
  • ルヌトサヌバ: リゟルバが情報を持っおいない堎合、ク゚リを DNS ルヌトサヌバに転送し、適切な TLD サヌバを指定したす。
  • TLD サヌバ: TLD サヌバは、リゟルバを質問のドメむンを管理する暩嚁サヌバに指瀺したす。
  • 暩嚁サヌバ: 暩嚁サヌバは、リゟルバに察応する IP アドレスを提䟛したす。
  • 応答: リゟルバは IP アドレスをブラりザに返し、ブラりザは目的のサヌバヌに接続したす。

2. ロヌドバランサ

2.1 ロヌドバランサずは䜕か

ロヌドバランサは、耇数のサヌバヌにトラフィックを分散する装眮たたは゜フトりェアです。これにより、アプリケヌションのパフォヌマンス、可甚性、信頌性が向䞊したす。

2.2 ロヌドバランシングの皮類

  • ラりンドロビン: リク゚ストがサヌバヌ間で均等に分散されたす。
  • 最小接続: リク゚ストがアクティブ接続が最も少ないサヌバヌに送られたす。
  • IP ハッシュ: クラむアントの IP アドレスのハッシュに基づいおリク゚ストが割り圓おられたす。

3. API ゲヌトりェむ

3.1 API ゲヌトりェむずは䜕か

API ゲヌトりェむは、クラむアントずマむクロサヌビスの間にあるサヌバヌです。API ゲヌトりェむは、API リク゚ストを適切なマむクロサヌビスにルヌティングし、システムの耇雑さを隠蔜したす。

3.2 API ゲヌトりェむの機胜

  • リク゚ストルヌティング: クラむアントからのリク゚ストを適切なマむクロサヌビスに転送したす。
  • 認蚌: クラむアントのアクセス暩を怜蚌し、セキュリティを匷化したす。
  • レヌト制限: システムぞのリク゚スト数を制限し、過負荷を防ぎたす。

4. コンテンツデリバリヌネットワヌク (CDN)

4.1 CDN ずは䜕か

CDN は、䞖界䞭のデヌタセンタヌにコンテンツをキャッシュするこずで、りェブコンテンツの配信速床を向䞊させるネットワヌクサヌビスです。

4.2 CDN の仕組み

  • ゚ッゞサヌバヌ: CDN は、䞖界䞭のデヌタセンタヌに゚ッゞサヌバヌを蚭眮し、ナヌザヌに近い堎所でコンテンツをキャッシュしたす。
  • リク゚ストルヌティング: ナヌザヌがコンテンツにアクセスするず、CDN は最も近い゚ッゞサヌバヌを遞択しおリク゚ストをルヌティングしたす。

5. フォワヌドプロキシずリバヌスプロキシ

5.1 フォワヌドプロキシ

フォワヌドプロキシは、クラむアントずむンタヌネットの間にあるサヌバヌで、クラむアントからのリク゚ストを適切なサヌバヌに送信したす。フォワヌドプロキシは、ネットワヌク制限を回避したり、セキュリティを向䞊させたり、垯域幅を節玄するためにキャッシュを利甚したりしたす。

5.2 リバヌスプロキシ

リバヌスプロキシは、むンタヌネットずバック゚ンドサヌバヌの間にあるサヌバヌで、クラむアントのリク゚ストを適切なサヌバヌに転送したす。リバヌスプロキシは、負荷分散、セキュリティ向䞊、およびコンテンツの高速配信のためにキャッシュを利甚できたす。

6. キャッシング

6.1 キャッシングずは䜕か

キャッシングは、頻繁にアクセスされるデヌタを効率的に栌玍・提䟛するための技術です。デヌタのコピヌをナヌザヌに近い堎所に保存し、リク゚ストのレスポンス時間を短瞮したす。

6.2 キャッシュの皮類

  • ブラりザキャッシュ: クラむアント偎のりェブブラりザにキャッシュされたコンテンツ。
  • CDN キャッシュ: ゚ッゞサヌバヌにキャッシュされたコンテンツ。
  • むンメモリキャッシュ: サヌバヌのメモリにキャッシュされたデヌタ。䟋: Redis, Memcached。

7. デヌタパヌティショニング

7.1 デヌタパヌティショニングずは䜕か

デヌタパヌティショニングは、デヌタを耇数の郚分に分割しお、凊理速床ず可甚性を向䞊させる手法です。

7.2 パヌティショニングの皮類

  • ホリゟンタルパヌティショニング: デヌタを行単䜍で分割したす。各パヌティションには、党䜓のデヌタセットの䞀郚が含たれたす。
  • 垂盎パヌティショニング: デヌタを列単䜍で分割したす。各パヌティションは、デヌタセットの特定の列を含みたす。

8. デヌタベヌスレプリケヌション

8.1 デヌタベヌスレプリケヌションずは䜕か

デヌタベヌスレプリケヌションは、デヌタを耇数のデヌタベヌスサヌバヌにコピヌするプロセスで、デヌタの可甚性、耐障害性、およびパフォヌマンスを向䞊させたす。

8.2 レプリケヌションの皮類

  • マスタヌスレヌブレプリケヌション: マスタヌサヌバヌがデヌタの倉曎を行い、スレヌブサヌバヌがそれらの倉曎をコピヌしたす。
  • マスタヌマスタヌレプリケヌション: すべおのサヌバヌがデヌタの倉曎を行い、他のサヌバヌに倉曎を耇補したす。

9. 分散メッセヌゞングシステム

9.1 分散メッセヌゞングシステムずは䜕か

分散メッセヌゞングシステムは、アプリケヌション間でメッセヌゞを効率的にやり取りするためのシステムです。これにより、コンポヌネント間の結合が緩やかになり、スケヌラビリティず耐障害性が向䞊したす。

9.2 䞀般的な分散メッセヌゞングシステム

  • Apache Kafka: 高スルヌプット、耐障害性、およびスケヌラビリティに優れた分散ストリヌミングプラットフォヌム。
  • RabbitMQ: 高床にスケヌラブルで信頌性のあるメッセヌゞブロヌカ。

10. マむクロサヌビス

10.1 マむクロサヌビスずは䜕か

マむクロサヌビスは、独立しおデプロむ可胜な小さなサヌビスにアプリケヌションを分割するアヌキテクチャスタむルです。これにより、開発、デプロむメント、スケヌリングが容易になりたす。

10.2 マむクロサヌビスの利点

開発の促進: 小さなチヌムが独立しお機胜を開発できたす。 スケヌラビリティ: 個々のサヌビスを独立しおスケヌルできたす。 障害の局所化: システム党䜓ではなく、個々のサヌビスのみが圱響を受けたす。

11. NoSQL デヌタベヌス

11.1 NoSQL デヌタベヌスずは䜕か

NoSQL デヌタベヌスは、埓来のリレヌショナルデヌタベヌスず異なるデヌタモデルを採甚しおおり、スケヌラビリティず柔軟性に優れおいたす。

11.2 NoSQL デヌタベヌスの皮類

  • キヌ・バリュヌストア: シンプルなキヌず倀のペアを栌玍するデヌタベヌス。䟋: Redis, Amazon DynamoDB。
  • ドキュメントストア: JSON や BSON などのドキュメント圢匏でデヌタを栌玍するデヌタベヌス。䟋: MongoDB, Couchbase。
  • カラムファミリヌストア: カラムファミリヌ単䜍でデヌタを栌玍するデヌタベヌス。䟋: Apache Cassandra, HBase。
  • グラフデヌタベヌス: グラフ構造でデヌタを栌玍するデヌタベヌス。䟋: Neo4j, Amazon Neptune。

12. デヌタベヌスむンデックス

12.1 デヌタベヌスむンデックスずは䜕か

デヌタベヌスむンデックスは、デヌタベヌス内のデヌタを効率的に怜玢できるようにする構造です。むンデックスを䜿甚するこずで、ク゚リのパフォヌマンスが倧幅に向䞊したす。

12.2 むンデックスの皮類

  • B-Tree むンデックス: 䞀般的なむンデックスで、リレヌショナルデヌタベヌスでよく䜿われたす。
  • ビットマップむンデックス: 䜎基数のデヌタ倀の皮類が少ないデヌタに効果的です。
  • ハッシュむンデックス: 等䟡怜玢に察しお高速ですが、範囲怜玢には適しおいたせん。

13. 分散トランザクション

13.1 分散トランザクションずは䜕か

分散トランザクションは、耇数のノヌド間で実行されるトランザクションです。デヌタの䞀貫性を維持しながら分散システムでトランザクションを実行するこずが目的です。

13.2 二盞コミット (2PC)

二盞コミットは、分散トランザクションを実行するためのプロトコルで、次の2぀のフェヌズで構成されたす。

  • 準備フェヌズ: すべおの参加者にトランザクションをコミットする準備ができおいるか尋ねたす。
  • コミット/䞭止フェヌズ: すべおの参加者がコミットできる堎合、トランザクションをコミットしたす。そうでない堎合、トランザクションを䞭止したす。

14. シャヌディング

14.1 シャヌディングずは䜕か

シャヌディングは、デヌタベヌスを耇数のむンスタンスに分割するプロセスで、各むンスタンスがデヌタセットの䞀郚を管理したす。これにより、デヌタベヌスのスケヌラビリティが向䞊したす。

14.2 シャヌディングの方法

  • ハッシュベヌスシャヌディング: キヌのハッシュ関数に基づいおデヌタをシャヌドに割り圓おたす。
  • 範囲ベヌスシャヌディング: キヌの範囲に基づいおデヌタをシャヌドに割り圓おたす。

15. デヌタセンタヌ

15.1 デヌタセンタヌずは䜕か

デヌタセンタヌは、コンピュヌタシステム、通信システム、ストレヌゞシステムなどの情報技術ITむンフラストラクチャをホストする専甚斜蚭です。デヌタセンタヌは、デヌタの保存、凊理、管理を行い、むンタヌネットに接続したす。

15.2 デヌタセンタヌの特城

  • 冗長性: システムの障害に察凊するため、電源、冷华、通信リンクなどが冗長化されおいたす。
  • セキュリティ: 物理的および論理的なセキュリティ察策が実斜されおいたす。
  • ゚ネルギヌ効率: デヌタセンタヌは、省゚ネルギヌ蚭蚈や冷华技術を利甚しお、消費電力を抑えたす。

16. ロヌドバランシング

16.1 ロヌドバランシングずは䜕か

ロヌドバランシングは、システムぞの負荷を耇数のサヌバヌに均等に分散させるプロセスです。これにより、システムの可甚性、スケヌラビリティ、およびパフォヌマンスが向䞊したす。

16.2 ロヌドバランシングの方法

  • ラりンドロビン: サヌバヌに順番にリク゚ストを割り圓おたす。
  • 最小接続: 珟圚最も少ない接続を持っおいるサヌバヌにリク゚ストを割り圓おたす。
  • IP ハッシュ: クラむアントの IP アドレスに基づいおサヌバヌにリク゚ストを割り圓おたす。

以䞊が、分散システムの基本的なコンポヌネントず抂念です。これらのコンポヌネントず抂念を理解し、適切に適甚するこずで、高可甚性、スケヌラビリティ、パフォヌマンスのある分散システムを構築するこずができたす。

Mình hy vọng bạn thích bài viết này và học thêm được điều gì đó mới.

Donate mình một ly cafe hoặc 1 cây bút bi để mình có thêm động lực cho ra nhiều bài viết hay và chất lượng hơn trong tương lai nhé. À mà nếu bạn có bất kỳ câu hỏi nào thì đừng ngại comment hoặc liên hệ mình qua: Zalo - 0374226770 hoặc Facebook. Mình xin cảm ơn.

Momo: NGUYỄN ANH TUẀN - 0374226770

TPBank: NGUYỄN ANH TUẀN - 0374226770 (hoặc 01681423001)

image.png


All rights reserved

Viblo
Hãy đăng kÃœ một tài khoản Viblo để nhận được nhiều bài viết thú vị hÆ¡n.
Đăng kí