Cisco 350-401: 자동화, 프로그래밍 가능성 및 APIs — 학습 가이드
다음의 일부입니다: Cisco CCNP Enterprise 350-401 ENCOR — 학습 가이드. 검증된 답안으로 연습하기: Cisco 시험 허브, 또는 다음에서 시간 제한 모의고사 풀기: ExamRoll.io.
개요
엔터프라이즈 네트워크는 디바이스별 구성 방식에서 컨트롤러 기반의 의도 기반 운영(intent-driven operations)과 폐쇄 루프 자동화(closed-loop automation)로 전환되고 있습니다. 프로그래머빌리티(Programmability)는 API와 데이터 모델을 통해 네트워크 상태와 제어 기능을 노출하며, Python, Ansible, Git과 같은 도구는 반복 가능하고 테스트 가능한 워크플로우를 가능하게 합니다. 목표는 원하는 결과를 선언적으로 표현하고, 컨트롤러가 의도(intent)를 정책과 구성으로 변환하며, 텔레메트리(telemetry)와 어슈어런스(assurance)를 통해 결과를 측정하고, 편차를 자동으로 또는 사람의 승인을 거쳐 수정하는 것입니다. 이를 달성하려면 컨트롤러의 역할, API 및 프로토콜(REST, YANG을 사용하는 NETCONF/RESTCONF), 데이터 형식(JSON, XML, YAML), 자동화 플랫폼(Cisco DNA Center), 그리고 운영 원칙(멱등성, 버전 관리, 테스트, 위험 관리, 롤백)에 대한 이해가 필요합니다.
컨트롤러, 의도, 폐쇄 루프 운영
- 컨트롤러 기반 네트워킹 및 역할:
- Cisco SD-WAN은 플레인을 분리합니다: vManage는 단일 관리 플레인을 제공하고, vSmart는 제어 플레인을 관리하며 패브릭 전반의 데이터 포워딩을 조종하는 정책을 배포합니다. vBond는 온보딩을 오케스트레이션하고 NAT 통과를 위한 STUN 서버 역할을 할 수 있습니다. SD‑WAN 엣지 라우터는 OMP를 제어 플레인 프로토콜로 사용하여 vSmart와 통신합니다.
- Cisco SD‑Access는 논리적인 Layer 2 및 Layer 3 분리를 제공하는 오버레이 네트워크를 생성합니다. 패브릭 제어 플레인 노드는 전역 엔드포인트-위치 데이터베이스를 유지 관리하고, 패브릭 보더 노드는 패브릭을 외부 네트워크에 연결합니다. 무선 환경에서는 Radio Resource Management가 무선 컨트롤러에서 실행됩니다.
- 의도 및 선언적 구성:
- 의도(Intent)는 각 디바이스에서 이를 구현하는 방법이 아닌, 원하는 결과를 설명합니다. 선언적 시스템(예: “모든 곳의 게스트를 인터넷 전용 액세스로 분리”)을 사용하면 컨트롤러가 정책을 디바이스별 구성으로 컴파일할 수 있습니다.
- 장단점: 선언적 모델은 운영을 단순화하고 드리프트(drift)를 줄이지만, 구현 세부 정보를 숨길 수 있습니다. 운영자는 신뢰를 유지하기 위해 diff/preview 및 롤백을 위한 투명한 도구가 필요합니다.
- 폐쇄 루프 운영:
- 측정: 스트리밍 텔레메트리(streaming telemetry)와 컨트롤러 어슈어런스(assurance)를 통해 상태를 수집합니다.
- 분석: 의도와의 편차(예: 세분화 위반, SLA 저하)를 감지합니다.
- 조치: 정책 업데이트, 구성 변경 또는 트래픽 엔지니어링을 통해 수정합니다.
- 실패 모드: 이벤트 폭풍(Event storm)이나 노이즈가 많은 텔레메트리는 거짓 양성(false positive)을 유발할 수 있으며, 수정 루프가 진동(oscillate)할 수 있습니다. 가드레일(속도 제한, 히스테리시스, 수동 승인)과 강력한 상관관계 분석은 시스템의 과부하(thrashing)를 방지합니다.
API, 데이터 모델, 프로토콜
- REST API:
- 메서드: GET (읽기), POST (생성/작업), PUT (교체), PATCH (부분 업데이트), DELETE (제거), HEAD/OPTIONS (메타데이터).
- 상태 코드: 2xx 성공 (200 OK, 201 Created), 3xx 리디렉션, 4xx 클라이언트 오류 (400 잘못된 입력, 401 인증 실패, 403 금지됨, 404 찾을 수 없음, 409 충돌, 429 속도 제한), 5xx 서버 오류 (500, 503).
- 인증: 기본 인증 (TLS 기반), 토큰/베어러 방식, OAuth 2.0. 항상 TLS를 사용하고, URI에 자격 증명을 포함하지 마십시오. 토큰 갱신 및 만료를 처리해야 합니다.
- 속도 제한: 서버는 429 코드와 Retry-After 헤더로 요청을 조절(throttle)할 수 있습니다. 클라이언트 측에서 지수적 백오프(exponential backoff), 지터(jitter), 요청 예산 추적을 구현해야 합니다.
- 데이터 형식 및 유효성 검사:
- JSON은 REST에서 일반적이며, XML은 NETCONF에서 여전히 널리 사용됩니다. YAML은 사람이 작성하는 파일(인벤토리, 플레이북, 변수 집합)에 사용됩니다. 필요 시 내부적으로 YAML을 JSON으로 변환합니다.
- 스키마 유효성 검사: JSON 페이로드는 JSON Schema, XML은 XML Schema, 모델 기반 관리는 YANG(타입, 제약 조건, must/when 문)을 사용합니다. 오류를 조기에 발견하기 위해 전송 전에 클라이언트 측에서 유효성을 검사합니다.
- NETCONF, RESTCONF, YANG, RPC, 데이터 저장소:
- YANG 모델은 구성 및 상태에 대한 데이터 구조와 작업을 정의합니다.
- NETCONF는 SSH를 통해 XML을 사용하며,
, , , , , 과 같은 작업을 수행합니다. 데이터 저장소(datastore)에는 일반적으로 running과 candidate가 포함되며, candidate는 원자성(atomicity)을 보장하는 준비-커밋(prepare-and-commit) 방식을 가능하게 합니다. - RESTCONF는 YANG 모델링된 리소스를 HTTP(S)를 통한 RESTful 인터페이스에 매핑하며, 표준화된 미디어 타입을 사용하여 JSON 또는 XML을 사용합니다. 메서드는 NETCONF 시맨틱(편집을 위한 PATCH/PUT 등)에 매핑됩니다.
- 실패 모드 및 설계:
- 잠금 경합: 교착 상태를 피하기 위해
을 조정하고, 좁은 범위와 타임아웃을 사용합니다. - 부분 실패: 트랜잭션 변경을 위해 candidate 데이터 저장소 +
을 선호합니다. running만 사용 가능한 경우, 구조화된 변경 그룹과 체크포인트를 사용합니다. - 모델 드리프트: 디바이스가 서로 다른 YANG 모듈 리비전을 지원할 수 있으므로, CI 중에 기능을 협상하고 테스트해야 합니다.
- 잠금 경합: 교착 상태를 피하기 위해
- 간결한 예시:
- RESTCONF 부분 업데이트 (HTTP 교환):
undefined
undefined
undefined
- Python을 사용한 NETCONF (ncclient):
undefined
undefined
undefined
도구 및 워크플로우: Python, Ansible, Git, 파이프라인
- Cisco DNA Center 자동화:
- Northbound REST API는 인벤토리, 템플릿, 프로비저닝, Assurance 액세스를 제공합니다. Southbound 인터페이스는 컨트롤러를 디바이스(CLI, SNMP, NETCONF/RESTCONF)에 연결하여 의도를 실행합니다.
- Discovery 워크플로우는 CDP, LLDP, IP 범위를 사용할 수 있습니다. 역할 기반 액세스 제어, 프로젝트 기반 템플릿, 사이트별 변수를 사용합니다. Assurance는 텔레메트리 데이터를 상호 연관시켜 문제, 상태 점수, 권장 해결 방법을 도출하며, 이는 폐쇄 루프 자동화의 핵심 입력 요소입니다.
- 네트워크 자동화를 위한 Python 기본 사항:
- 핵심 언어: 타입, 함수, 모듈, 가상 환경, 로깅.
- 라이브러리: requests/httpx(REST), ncclient(NETCONF), jinja2(템플릿), pyyaml, json, pandas(데이터 랭글링), 관찰 가능성을 위한 rich/logging.
- 모범 사례: 입력값 검증, 백오프를 사용한 재시도, 구조화된 예외 처리, 타임아웃, 유닛 테스트. 테스트를 단순화하기 위해 비즈니스 로직을 I/O로부터 직렬화하여 분리합니다.
- Ansible:
- 인벤토리는 호스트와 그룹을 정의합니다. host_vars/group_vars는 YAML 형식으로 유지합니다.
- 플레이북은 원하는 상태를 선언합니다. ios_config, ios_facts, iosxe_config, restconf_config, uri와 같은 모듈이 작업을 수행합니다. 재사용 가능한 로직을 캡슐화하려면 역할을 사용합니다.
- 멱등성: 모듈은 반복 실행해도 의도하지 않은 변경 없이 동일한 결과로 수렴하는 것을 보장합니다.
check_mode와diff를 사용하여 미리보고, 변경이 있을 때만 저장하도록 핸들러에notify를 사용합니다. - 예시:
- hosts: edge
connection: network_cli
gather_facts: no
tasks:
- ios_config: parents: interface GigabitEthernet1 lines: - description Uplink notify: save handlers:
- name: save ios_config: save_when: changed
- hosts: edge
connection: network_cli
gather_facts: no
tasks:
- 변경 제어: 유지보수 기간, 순차적 또는 일괄 처리 전략, 사이트별 스로틀링을 사용하여 영향 반경(blast radius)을 제한합니다. 사전/사후 점검을 자동으로 캡처합니다.
- Git, 버전 관리, 테스트 및 파이프라인:
- 네트워크 의도(YAML 변수, Jinja 템플릿, 플레이북), 생성된 구성, 테스트를 Git에 저장합니다. 브랜치, 풀 리퀘스트, 코드 리뷰를 사용합니다. 시맨틱 커밋과 태그를 통해 버전과 배포를 일치시킵니다.
- 테스트: YAML 및 플레이북 린트(lint) 검사, YANG/JSON 스키마 검증, 유닛 테스트 및 Ansible Molecule 시나리오 테스트를 실행합니다. CI에 가상 사전 점검(예: 연결성 확인)을 통합합니다.
- 파이프라인: 개발 → 스테이징/랩 → 프로덕션 카나리 → 단계적 롤아웃. 게이트(Gate)에는 정적 분석, 시뮬레이터 대상 드라이런(dry-run), 승인, 상태 저하 시 자동 롤백이 포함됩니다.
텔레메트리, 이벤트 기반 자동화 및 리스크 관리
- 텔레메트리 스트리밍:
- 모델 기반 텔레메트리(IOS XE, NX-OS)는 다이얼인(dial-in) 또는 다이얼아웃(dial-out) 구독을 통해 gRPC/gNMI 또는 NETCONF로 정의된 간격에 따라 YANG 모델링된 상태를 발행합니다. 낮은 지연 시간과 구조화된 데이터를 제공하여 주기적인 CLI 스크래핑이나 SNMP 폴링보다 뛰어난 성능을 보입니다.
- 예시 (IOS XE, 간결한 형식):
undefined
- 설계 팁: 사용 사례에 맞춰 샘플링 주기를 조정하고, 메시지 버스 용량을 확보하며, 다운샘플링/집계 파이프라인을 설계하고, 버퍼링 및 확인 응답(acknowledgment)으로 텔레메트리 손실을 방지해야 합니다.
- 이벤트 기반 자동화:
- 웹훅, syslog, SNMP 트랩, DNA Center 이벤트 또는 Kafka 토픽을 기반으로 작업을 트리거합니다. 스톰으로 인한 플랩(flap) 현상을 방지하기 위해 상관관계 분석 및 속도 제한(rate limiting)을 사용합니다. 안전하게 재실행될 수 있는 멱등성(idempotent) 핸들러를 유지합니다.
- 폐쇄 루프(Closed-loop): 컨트롤러가 정책 위반을 감지하고, 보조 신호로 검증한 후, 변경 티켓을 열거나 제한된 복구 조치를 트리거하고, 다시 측정하여 마무리합니다.
- 리스크 관리, 롤백 및 자격 증명:
- 가드레일: 단계적 배포, 동시성 제한, 영향 반경(blast-radius) 제어, 429/5xx 응답에 대한 동적 백오프(backoff) 및 타임아웃을 사용합니다. NETCONF candidate + commit과 같은 트랜잭션을 사용하거나, 디바이스 체크포인트 및 configure replace를 활용합니다.
- 롤백: 골든 구성, diff, 디바이스별 체크포인트를 유지합니다. 지원되는 경우 commit-confirmed 시맨틱을 선호하며, 그렇지 않은 경우 타이머와 도달 가능성 검사를 사용한 자동화된 폴백(fallback)을 구현합니다.
- 자격 증명 보호: RBAC, 단기 토큰, 작업별 Just-in-Time(JIT) 시크릿을 적용합니다. Ansible Vault나 외부 vault와 같은 시크릿 저장소를 사용하고, 플레이북이나 Git에 시크릿을 포함하지 마십시오. 일정에 따라 그리고 인력 변경 후 자격 증명을 순환시킵니다. 컨트롤러-디바이스 간 자격 증명을 보호하고 접근을 감사합니다.
실제 문제 시나리오
Aurelius Logistics는 Cisco DNA Center를 사용하여 캠퍼스 및 브랜치 구성을 표준화하고, 일관된 세분화(segmentation)를 적용하며, 폐쇄 루프 어슈어런스(assurance)를 구현하는 동시에 Ansible과 Git을 통해 안전한 변경을 수행할 계획입니다.
- 네트워크 기준선 설정 및 검색
- 근거: IP 범위와 CDP/LLDP를 사용한 DNA Center 검색은 디바이스와 토폴로지를 열거하여 신뢰할 수 있는 인벤토리를 구축합니다. 이를 통해 사이트별 의도(intent) 범위 지정 및 변수 상속이 가능해집니다. 어슈어런스 데이터를 수집하여 비교 및 롤백 트리거를 위한 변경 전 상태 기준선을 설정합니다.
- DNA Center에서 의도 및 템플릿 모델링
- 근거: 직원, IoT, 게스트 등의 세분화 및 QoS 정책을 선언적으로 표현합니다. 인터페이스, 라우팅, ACL에 대해 사이트 변수를 사용하는 매개변수화된 템플릿을 사용합니다. 선언적 정책을 통해 컨트롤러가 디바이스별 구성을 컴파일하여 인적 오류 및 드리프트(drift)를 줄일 수 있습니다.
- Git 기반 구성 관리 구현
- 근거: 템플릿, 사이트 변수(YAML), 검증 테스트를 Git에 저장합니다. 기능 브랜치(feature branch)와 풀 리퀘스트(pull request)를 통해 동료 검토(peer review)를 강제합니다. 태그를 사용하여 배포 버전을 관리함으로써 정확한 롤백을 가능하게 합니다. 이는 감사 가능한 변경 이력을 제공하고 자동화된 파이프라인 트리거를 지원합니다.
- 검증 게이트를 포함한 CI/CD 파이프라인 구축
- 근거: 파이프라인 단계에서 YAML 린트(lint) 검사, JSON/YANG 페이로드 검증, Jinja 렌더링 단위 테스트, 샌드박스에서 API 호출 시뮬레이션을 수행합니다. DNA Center 드라이런(dry run)과 Ansible check_mode/diff는 영향 없이 변경 사항을 검증합니다. 모든 게이트를 통과해야만 운영자가 승인하여 파이프라인을 진행할 수 있습니다.
- Ansible 및 DNA Center API를 사용한 점진적 배포
- 근거: DNA Center 노스바운드 API를 사용하여 먼저 카나리(canary) 사이트에 템플릿을 푸시한 다음, 배치 크기 제한을 두고 사이트별로 순차적으로 배포합니다. NETCONF/RESTCONF를 지원하는 디바이스의 경우, Ansible 모듈이 대상이 지정된 멱등성 업데이트를 수행합니다. 이 이중 접근 방식은 정책 중심의 작업에는 컨트롤러를, 세분화된 변경에는 직접적인 디바이스 자동화를 활용하여 영향 반경을 최소화합니다.
- 스트리밍 텔레메트리 및 어슈어런스 기반 검사 활성화
- 근거: 엣지 디바이스에 모델 기반 텔레메트리를 구성하여 DNA Center Assurance와 회사의 관측 가능성(observability) 스택에 데이터를 제공합니다. SLO(예: 온보딩 성공률, 지연 시간)와 이벤트 구독을 정의하여 변경 후 지표가 저하되면 경고를 발생시킵니다. 이를 통해 부정적인 결과를 즉시 감지할 수 있습니다.
- 제어된 폐쇄 루프 복구 활성화
- 근거: 잘 알려진 편차(예: 알려진 해결 방법이 있는 인터페이스 다운)의 경우, 파이프라인이 제한된 플레이북을 트리거하여 마지막 변경을 되돌리거나 핫픽스(hotfix)를 적용하도록 허용합니다. 더 광범위한 복구 조치에는 사람의 승인이 필요합니다. 진동(oscillation) 현상을 방지하기 위해 지수 백오프(exponential backoff) 및 쿨다운(cooldown)을 구현합니다.
- 롤백 경로 준비 및 테스트
- 근거: 각 변경 전에 디바이스 체크포인트를 생성하거나, 가능한 경우 NETCONF candidate + commit-confirmed를 사용합니다. 변경 전 구성을 아카이빙하고 Git 리포지토리에 태그를 지정합니다. 상태 점수가 떨어지거나 텔레메트리에서 SLA 위반이 표시되면 파이프라인이 configure replace 또는 NETCONF discard/rollback을 실행하여 이전 상태를 신속하게 복원합니다.
- 자격 증명 보호 및 접근 제어 적용
- 근거: 디바이스/컨트롤러 자격 증명을 vault에 저장하고, 작업에 단기 토큰을 주입합니다. DNA Center RBAC를 사용하여 API 범위를 제한합니다. 절대로 시크릿을 로그에 남기지 말고, CI에서 출력 내용을 제거(scrub)합니다. 위험을 줄이기 위해 정기적으로 그리고 인력 변경 후 자격 증명과 토큰을 순환시킵니다.
- 문서 및 런북(runbook)을 통한 운영화
- 근거: 의도 정의, 변수 스키마, 실패 모드(속도 제한, API 오류, 모델 불일치), 복구 절차를 문서화합니다. NOC(네트워크 운영 센터)가 어슈어런스 신호와 파이프라인 상태를 해석하여 사고에 일관되고 신속하게 대응할 수 있도록 교육합니다.
이 접근 방식은 의도에서 구현까지 안전하고 테스트 가능한 경로를 만들고, 정책 배포를 위해 컨트롤러(SD-WAN의 vManage/vSmart, 캠퍼스의 DNA Center)를 활용하며, 컨버전스를 위해 멱등성 도구를 사용하고, 텔레메트리 기반 검증 및 제어된 복구를 통해 루프를 완성합니다.
← 엔터프라이즈 보안 및 ID 서비스 · 모든 도메인 · 네트워크 보증 →
이 문제 연습하기 → · ExamRoll.io에서 시간 제한 연습 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
시험 합격하기 →