[CS] 아키텍쳐 관점에서의 DNS와 Namespace
DNS(Domain Name System)은 인터넷에서 도메인 이름을 호스트의 IP 주소로 매핑해주는 서버로 잘 알라져 있다.
DNS는 분산 시스템 관점에서 계층적 네임스페이스를 활용한 시스템이다.
Namespace의 개념
- Name : Entity를 Refer(참조)할 때 사용할 수 있는 시퀀스(Bit or String)
- 분산 시스템에서의 Entity = 자원(Resources)
- Access Point : Entity를 엑세스 할 때 필요
- Address : Access Point의 Name
- Entity의 Address를 Name으로 사용하지 않음 → 엔티티의 엑세스 포인트가 변경될 수 있음. 둘 이상의 엑세스 포인트가 있을 수 있음
- 예) 전화번호(개인의 Address) → 여러 개의 전화번호를 가질 수 있음, Access Point 변경(전화번호, 이메일 주소..)
- Identifier : 엔티티를 고유하게 식별하는 이름
- Identifier의 재사용 금지, 최대 하나의 Entity를 나타냄, 각 Entity는 하나의 Identifier로 참조됨
- 분산시스템에서는 Naming System이 자체적으로 분산되어 있음
- Namespace : 특정 서비스의 Name이 구성되는 방식, 특정 서비스에서 인식되는 Name의 집합
- 계층적 내부 구조를 가질 수 있음, 잠재적으로 무한함
- 각각의 Name은 별도의 Context를 기준으로 함 → 서로 다른 엔티티가 관리하는 서로 다른 컨텍스트
- Name Resolution : Name → 명명된 리소스에 대한 정보로 Resolve(번역), 변환되는 과정
- 요구사항 : Scalable(확장성), Long Lifetime(긴 수명), Availability(고가용성), Fault Isolation(결함 격리), Tolerance of mistrust(불신 상쇄)
- 바인딩 (Binding): Name과 Resource의 연결 혹은 연관성, 주로는 주소와 연결된 것을 의미
- Name Service: 이름과 관련된 리소스 및 속성 정보를 저장하고 관리하는 서비스
- 이 서비스는 하나 이상의 Name Context( = Binding(Name ↔ Resource))을 저장하며 Name Resolution 및 새로운 바인딩 생성, 바인딩 삭제 등의 작업을 지원
- 이 서비스는 하나 이상의 Name Context( = Binding(Name ↔ Resource))을 저장하며 Name Resolution 및 새로운 바인딩 생성, 바인딩 삭제 등의 작업을 지원
파일 이름은 계층적 내부 구조를 가지고 있으면서, Name(파일명)으로 Entity(파일)을 접근할 수 있음.
- 리프 노드 : Named 된 Entity를 나타냄
- 디렉터리 노드 : 에지 레이블, 노드 식별자 쌍의 테이블을 저장함(경로)
- 원격 파일은 노드 이름, 경로 이름을 사용하여 엑세스 된다. → 위치 독립성
- NFS(Network File System) Mount Protocol : 원격 노드를 Local DAG에 매핑
- NFS(Network File System) Mount Protocol : 원격 노드를 Local DAG에 매핑
Namespace Distribution
Naming Graph의 Node를 배포하여, 여러 Machine들에 Name space와, Name Resolution을 배포함
Naming Graph에 따라 세 가지의 레벨을 구분함
- Global layer : High level의 Directory Nodes들 → 다른 Adminstrations들이 함께 관리되어야 함
- Adminstrational layer : Mid-level의 Directory Nodes들 → 각 그룹을 별도의 Admin들이 관리하도록 그룹화해주는 중간계층
- Managerial layer : Admin 단일 관리 내의 Low-level의 디렉터리. Local name server와 효과적으로 매핑하는 것이 Issue
Name Resolution 구현 방식
Iterative Name Resolution
- 루트 → 각 레이어는 최대한 확인 후 다음 네임서버의 주소 반환
- 클라이언트 단에서만 캐싱 가능
Recursive Name Resolution
- 루트 → 각 레이어는 최대한 해결하고 나머지는 다음 레이어에 전달 및 호출
- 서버 단 캐싱과 함께 작동 시 유리함
- 재귀적 방법으로 통신 비용(Communication Cost) 절감 가능
- 각 네임서버에 상대적으로 높은 Performance을 요구함
DNS
DNS는 본래 중앙 파일은 HOSTS.TXT를 통해 관리되었었다. 하지만 이는 Scalability, Name의 충돌과 제한 및 일관성에 의한 문제가 발생하였다. 중앙 집중화된 Centralized DNS가 실패한 이유는 다음과 같다.
- SPoF
- 트래픽 문제
- Centralize Database와의 Distance
- 확장성(Scalibility)
따라서 DNS는 Name Resolution 기반의 분산 서비스로서의 패러다임을 가지게 된다.
< 함께 보기 : DNS의 작동 원리 >
https://sjh9708.tistory.com/185
Name Resolution의 활용
1. Domain Name을 IP Address(Entity)에 매핑
- Lookup Mechanism : DNS는 Name(Domain Name)과 Entity(IP) 간의 Binding(Mapping)을 제공
- 데이터베이스로서 : Database의 Key는 Domanin Name이고, 각각은 하나 이상의 속성(Resource Record) 포함
2. 분산된 책임 : Domain 소유자에게 권한 위임
분산 시스템으로서의 DNS의 특징
- Global Distribution(전역 배포)
- 데이터는 로컬로 유지되지만, 전역적으로 검색 가능
- 로컬 DNS 캐시 조회 → 외부 DNS 조회
- 데이터는 로컬로 유지되지만, 전역적으로 검색 가능
- Loose Coherency(느슨한 일관성)
- DNS 데이터베이스는 Master 복사본과 여러 복제본으로 구성. Mater 복사본에서의 변경 사항은 Zone 관리자가 설정한 시간대에 따라 복제본으로 전파.
- 데이터의 일관성을 유지하고 변경 사항을 네트워크 전체로 분산시키는 역할을 한다.
- DNS 데이터베이스는 여러 개의 존으로 나뉘며, 각 존은 일련 번호를 가지며, 이 일련 번호는 데이터베이스의 변경 사항을 추적하기 위해 사용된다.
- Scalability(확장성)
- 데이터베이스와 쿼리의 크기에 제한이 없음. → Master, Slave, Cache에 분산된 쿼리
- Reliability(신뢰성)
- Master의 데이터가 여러 Slave Server로 복사됨
- 클라이언트가 Master server 및, Slave server의 Copies들에 대해서 Query가 가능하다.
- 부하를 줄이기 위한 캐시 응답
- UDP 사용, Timeout 시 대체 서버 시도
- UDP 사용 : 전송 Object는 매우 작으며, Response를 받지 못하면 요청을 다시 보냄
- TCP는 오버헤드가 높아 Server간 Zone을 전송할 때에 사용됨
- Dynamicity(역동성)
- 마스터 데이터베이스를 동적으로 업데이트 할 수 있음
- 마스터 데이터베이스 수정 시, Slave 서버에 복제 과정이 Trigger됨
- Load Concerns(부하 처리)
- DNS는 Load Balance가 가능
- Performance Concerns(성능 처리)
- DNS는 매우 가벼운 프로토콜
- 모든 Performance Limitation은 네트워크 제한으로 인해 발생함
- Workload and Caching(캐싱)
- DNS 응답이 캐시됨.
- 철자 오류 등 Negative Query도 캐시하여 응답 시간 단축 및 부하 방지
- Security Concerns(보안)
- DNS 스푸핑 공격 → DNS 보안 확장 → DOS Attack..
- DNSSEC는 계층 구조를 권장함
Content / Image Reference
Tannenbaum and Van Steen :: Distributed Systems: Principles and Paradigms (PDF)
'CS > 아키텍쳐 & 분산시스템' 카테고리의 다른 글
[CS] P2P(Peer to Peer) (1) | 2024.01.09 |
---|---|
[CS] Web Proxy와 CDN(Content Delivery Network) (1) | 2024.01.07 |
[CS] 분산 시스템의 핵심목표 : Fault Tolerance(결함 내성) (1) | 2024.01.05 |
[CS] 분산환경의 복제(Replication)와 일관성(Consistency) 유지 (0) | 2024.01.05 |
[CS] 분산 시스템에서의 리더 선출 알고리즘 (1) | 2024.01.05 |