알라딘

헤더배너
상품평점 help

분류

이름:존 벨라마릭 (John Belamaric)

최근작
2021년 8월 <CoreDNS 시작하기>

CoreDNS 시작하기

이 책을 보자마자 가장 먼저 떠오르는 질문은 "DNS 서버는 특별한 것이 있는가?" 다. 현재 선택할 수 있는 DNS 서버는 정말 많다. 먼저 DNS 서버의 시초인 BIND(Berkeley Internet Name Domain)가 있다. BIND는 1980년대부터 조금씩 쓰이기 시작했고, 작성된 모든 DNS 표준을 지원한다. Microsoft DNS 서버는 Active Directory 환경에서 널리 사용되는 DNS 서버다. NLnet Labs 및 Knot의 NSD는 신뢰할 수 있는 DNS 서버이며, NLnet Labs의 Unbound는 빠르고 간결한 재귀(Recursion) DNS 서버다. 그렇다면 CoreDNS는 이러한 DNS 서버가 제공하지 않는 무엇을 제공하는가? CoreDNS는 Go로 작성됐는데, Go는 메모리-세이프(Memory-safe) 프로그래밍 언어다. 그게 왜 중요할까? BIND 기반 DNS 인프라를 운영하고 버퍼 오버런(Overrun) 때문에 100대의 DNS 서버를 최대한 빨리 업그레이드해야 한다면 이 부분이 중요한 역할을 할 것이다. C 및 C++언어로 작성된 스트라이프(Stripe)방식의 DNS 서버의 취약점은 버퍼 오버플로우(Overflow) 또는 오버런, 댕글링(Dangling) 포인터 때문에 발생한다. 메모리-세이프된 Go로 작성된 CoreDNS에서는 이러한 부분이 발생하지 않는다. Go로 작성된 프로그램은 동시성 또는 병렬 실행을 지원할 수도 있는데, 멀티프로세싱(Multiprocessing) 또는 멀티태스킹(Multitasking) 시스템에서 더 많은 성능을 끌어내는 데 유용할 수 있다. BIND 성능은 멀티프로세서(Multiprocessor) 시스템에서 확장되기 어려운데, CoreDNS의 성능은 프로세서 수에 따라 확장돼 더 많은 일을 할 수 있게 된다. Go는 C 또는 C++보다 약간 느리게 실행되는 경향이 있기 때문에 성능을 향상하는 것이 중요하다. 대부분은 문제가 되지 않는다. 중요한 것은 Go는 CoreDNS에 제공하는 워크로드(Workload)를 잘 처리할 수 있다는 것이다. 아마도 CoreDNS가 제공하는 가장 중요한 기능은 컨테이너(Container) 인프라와 etcd, 쿠버네티스와 같은 오케스트레이션(Orchestration) 시스템과 통신할 수 있는 부분이다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자