876. YANG (Yet Another Next Generation) - NETCONF 데이터 모델링 스키마 구조 언어 서식망
핵심 인사이트: 875번 문서에서 NETCONF가 기계가 알아듣기 쉬운 XML 형식으로 설정을 쏴준다고 했다. 그런데 XML만 덜렁 주면, 시스코 장비는
<ip-address>라고 읽고, 주니퍼 장비는<address-ip>라고 읽어서 엉망진창이 된다. "야! 전 세계 모든 라우터의 설정값을 적을 때, IP 주소는 무조건 15글자 문자열로 적고, 포트 번호는 무조건 숫자로 적으라는 절대적인 '빈칸 채우기 서식(템플릿)'을 하나 만들자!" 장비가 달라도 완벽하게 동일한 잣대로 설정값을 강제하는 데이터의 뼈대, 그것이 YANG 모델이다.
Ⅰ. 기존의 고통: 벤더별 짬뽕 데이터의 한계
- 장비 제조사(Vendor)마다 기계를 통제하는 명령어와 데이터 생김새가 완전히 달랐습니다.
- 자동화 스크립트(파이썬)를 짜는 개발자는 시스코용 코드 100줄, 아리스타용 코드 100줄을 일일이 다르게 짜야 했고(하드웨어 종속), 코드가 수백만 줄로 불어나는 스파게티 지옥에 빠졌습니다.
Ⅱ. YANG (Yet Another Next Generation)의 개념 🌟
- 개념: 네트워크 장비의 설정 데이터(Configuration), 상태 데이터(State), 알람(RPC) 등의 **데이터 생김새(타입, 제약 조건, 계층 구조)를 컴퓨터와 인간이 모두 쉽게 읽을 수 있도록 정의해 놓은 '데이터 모델링 스키마(Schema) 언어'**입니다. (RFC 6020 표준)
- 비유: YANG 자체는 데이터를 담아 보내는 택배 박스(NETCONF)가 아닙니다. 택배 박스 안에 들어갈 "주문서 양식(빈칸 서식 파일)" 그 자체입니다.
Ⅲ. YANG 모델의 3대 핵심 구조 (문법) 🌟
YANG 코드를 뜯어보면 프로그래밍 언어의 뼈대(Class)를 잡는 것과 완전히 똑같습니다.
1. 계층적 트리 구조 (Tree Structure)
- 장비의 설정을 나뭇가지처럼 분류합니다.
[인터페이스]➜ 그 밑에[이더넷 1번],[이더넷 2번]➜ 그 밑에[IP 주소],[동작 상태]
- 이 구조 덕분에 "이더넷 1번 포트의 IP 주소를 가져와라"라는 명령을 직관적인 경로로 뚝딱 만들 수 있습니다.
2. 엄격한 데이터 타입 강제 (Data Typing & Constraints) 🌟
YANG의 가장 무서운 파워입니다. 사람이 실수(휴먼 에러)하는 걸 원천 차단합니다.
- 예시: 포트 번호(Port)를 적는 빈칸(Leaf)을 정의할 때, YANG 모델에
type uint16; range "1..65535";라고 못을 박아둡니다. - 만약 관리자가 술에 취해서 포트 번호에
65536이나 문자열abc를 적어서 NETCONF로 쏘면? 장비에 들어가기도 전에 YANG 파서(Parser)가 "야! 서식에 안 맞잖아!" 하고 에러를 뿜으며 전송 자체를 막아버립니다. 완벽한 무결성 방패입니다.
3. 설정(Config)과 상태(State) 데이터의 분리
- Config 데이터: 관리자가 "IP를 10.0.0.1로 바꿔라"라고 세팅하는 값. (수정 가능)
- State 데이터: 현재 장비의 "CPU 온도 80도", "팬 회전수 300" 같은 현재 상태 값. (읽기 전용, 수정 불가)
- YANG은 이 둘의 속성을 완벽히 분리해(
config false;) 실수로 쿨러 온도를 임의 조작하는 미친 짓을 막습니다.
Ⅳ. NETCONF와 YANG의 완벽한 영혼의 파트너
- YANG은 "데이터는 이런 모양(XML 트리)으로 생겨야 해"라고 **서식(형식)**을 짜줍니다.
- NETCONF는 그 YANG 서식에 맞춰 예쁘게 작성된 실제 XML 데이터를 들고, SSH 터널을 뚫어서 장비로 직접 **배달(프로토콜)**합니다.
- 이 둘의 결합으로, 파이썬(Python) 개발자는 장비 제조사 매뉴얼을 볼 필요 없이 YANG 모델 파일만 딱 열어보면 "아, 이 장비는 IP 세팅할 때 요런 모양으로 던지면 되는구나!" 하고 10분 만에 자동화 코드를 짜낼 수 있습니다.
📢 섹션 요약 비유: 옛날엔 은행(네트워크 장비)에 대출(설정)을 받으러 갈 때 규격화된 양식이 없었습니다. 손님마다 줄 없는 이면지에 삐뚤빼뚤하게 자기 맘대로 신상정보를 써서 내밀었기 때문에(비표준 CLI), 은행원은 이걸 해독하느라 시간이 다 갔습니다(자동화 실패). YANG(양) 모델은 전국 모든 은행이 100% 똑같이 통일하여 사용하는 구멍 송송 뚫린 완벽한 **'표준 대출 신청서 양식지'**입니다. 이 양식지에는 "주민번호 칸에는 무조건 숫자 13자리만 써라!(데이터 타입 강제)"라고 깐깐한 규칙이 박혀 있습니다. 손님이 이 빈칸 규칙에 맞춰 예쁘게 글씨를 채워 넣은 뒤(XML화), 우체국 특급 등기(NETCONF)를 통해 은행으로 쏴 보내면, 은행 컴퓨터는 0.1초 만에 양식지를 스캔해 오류 없이 대출 업무(스위치 세팅)를 완벽하게 자동화 처리하는 기적의 데이터 뼈대입니다.