“내가 네트워크 장비를 프로그래밍할 수 있다.”
“내가 애플리케이션을 활용하여 네트워크 장비를 제어하고 연동할 수 있다.”
이렇게 유연하고 개방적인 네트워크 장비의 트렌드를 대변해주는 용어가 바로 ‘네트워크 프로그래머빌리티’입니다. 시스코는 자사 장비의 기능을 개방하여, 고객들이 다양한 인터페이스를 통해 소프트웨어 정의 네트워크(SDN)를 만들 수 있는 에코시스템을 만들어 가고 있습니다.
왜 지금 ‘네트워크 프로그래머빌리티’일까요?
장비의 프로그래머빌리티는 예전에 없었던 새로운 기능은 아닙니다. 다만 기존에 제한적으로 제공되고 특수한 목적에 의해서만 활용되던 기능이 시대의 흐름에 맞추어 새롭게 주목받게된 것입니다. 이제는 프로그래밍이 일반적인 네트워크 장비 프로비저닝, 설정 변경 및 모니터링 부분에 광범위하게 적용됩니다. 예를들면 네트워크 프로토콜 기반에서 제공하기 어려웠던 기존의 CLI, SNMP 기능을 REST기반의 애플리케이션 연동을 위한 프로토콜로 확장하여, 네트워크 장비를 훨씬 다양하게 애플리케이션과 연동할 수 있게 되었습니다.
네트워크 장비에서의 프로그래밍 요구는 우리가 잘 알고 있는 클라우드 및 소프트웨어 정의 네트워크 환경의 발전과 밀접하게 연결되어 있습니다. 클라우드 서비스를 생각하면 가장 먼저 가상머신(VM)이 떠오르시죠? 이러한 가상머신의 생성 및 관리가 기존의 물리서버의 설치, 구성 및 관리에 비해 빠르고 편리하다는 것은 누구나 인정하는 클라우드의 최대 장점입니다.
그런데 새로운 서비스를 위해 애플리케이션을 개발할 때에는 가상머신 이외에도 네트워크나 보안 장비와 같은 다양한 인프라가 함께 빠르고, 편리하게 구성되어야만 전체 서비스가 완벽하게 준비될 수 있습니다. 결국 네트워크 장비에 대한 관리 기능이 클라우드 운영 속도를 저해하는 가장 큰 걸림돌이 되어버린 것이죠.
그래서 좀 더 신속하게 네트워크 서비스를 연동, 설정, 관리하기위해서 네트워크 장비의 프로그래머빌리티에 대한 필요성이 강조되고 있는 것입니다. 이를 위해 네트워크 벤더가 제공하는 Application Programming Interface(이하 API)를 이용해서 자동화하고자 방법과 네트워크 기능을 가상 머신처럼 관리하고자하는 Network Function Virtualization(이하 NFV)이라는 기술이 꾸준히 발전해 나가고 있습니다.
어떤 기능을 쓸 수 있나요?
네트워크 프로그래머빌리티는 네트워크 장비의 전체 라이프 사이클에 걸쳐 요구되고 있습니다. 즉 Day-0(초기 설치 및 설정), Day-1(설정 변경)과 Day-2(운영관리) 모든 영역에 필요한 기능을 프로그래머빌리티를 통해 구현할 수 있습니다.
Day-1, 초기 설치 및 설정:
시스코는 숙련된 운영자가 아니어도 쉽고, 간편하게 네트워크 장비를 설치할 수 있는 Power On Auto Provisioning(이하 POAP) 또는 Plug and Play(이하 PnP) 기능을 제공하고 있습니다. 시리얼 번호 또는 MAC주소와 같은 장비 고유의 정보를 활용하여 네트워크 장비를 식별하고 준비된 설정값을 해당 장비에 적용하게됩니다.
특히, 시스코는 자동 설치, 설정 기능을 위한 PnP 기능을 오픈소스 프로젝트를 통해 기업내 다양한 IT인프라에 적용, 확장할 수 있도록 해당 기능을 무료로 공개하여 제공하고 있습니다.
Day-1, 설정 변경:
초기 설정 이후 서비스 및 애플리케이션 운영의 요구가 있을 경우, 기존의 관리툴 및 Northbound API가 제공되는 것이 일반적입니다. 모델(Model)기반 데이터 구조를 도입한 REST API를 범용적으로 사용하는 추세이며, 네트워크 장비를 가상머신과 유사한 컴포넌트로 인식하고 기존의 가상머신 기반 설정관리 솔루션인Puppet/Chef 및 Ansible과 통합하는 방식으로도 진행되고 있습니다. 또한 표준NETCONF/YANG을 통한 멀티벤더 네트워크 장비를 관리하는 방법 역시 많이 고려되고 있는데요. 시스코의 NSO(Network Service Orchestrator)가 대표적인 멀티벤터 네트워크의 통합 관리를 구현할 수 있는 솔루션입니다.
Day-2, 운영 관리:
운영 관리의 핵심인 모니터링 부분에서는 많은 발전이 있습니다. 기존의 네트워크 장비가 SNMP기반의 모니터링 기능을 제공했다면, 최근에는 보다 효과적인 모니터링을 위한 다양한 API를 제공하고 있습니다. 한 예로, 오픈소스에서 많이 활용된 모니터링기법(TCollector agent with openTSDB 등)들이 네트워크 장비에도 적용되고 있습니다.
이는 네트워크 장비가 리눅스 커널과 컨테이너 기술을 도입하고 3rd party를 위한 별도의 인터페이스(예: bash쉘)를 제공해주면서 가능해진 것인데요. 이렇게 오픈 프로젝트가 폭넓게 활성화되면서, 다양한 표준 기술들을 네트워크 장비 내에서도 광범위하게 활용할 수 있게 되었습니다.
프로그래밍에 대한 모든 것
시스코는 지난 2014년 글로벌 에코 파트너십 프로그램의 일환으로 개발자들에게 애플리케이션 개발 리소스와 온라인 커뮤니티 공간을 제공하는 포털 허브 ‘데브넷(DevNet)’을 창설했습니다.
개발자들은 데브넷의 교육 커리큘럼 등을 활용하여 시스코 네트워크 솔루션의 프로그래머빌리티를 쉽고, 편리하게 배울 수 있습니다. 데브넷은 라우터, 스위치와 같은 네트워크 장비 뿐만 아니라 데이터센터, 엔터프라이즈 네트워킹 및 보안 등 시스코 포트폴리오 전체에 대한 프로그래밍 가이드를 다양한 방식으로 제공하고 있습니다.
API 설명서, 테스트 가이드와 같은 상세한 문서는 물론 24시간 직접 연동하여 테스트할 수 있는 Always On LAB, 그리고 처음 시작하시는 분들을 위한 단계별 학습을 제공하는 Learning Track 등이 있습니다. 특히 Sandbox와 Learning Lab을 이용하시면 시스코의 모든 인프라에 원격으로 접속해서 필요한 기능을 확인하고 구현한 코드를 테스트하실 수 있습니다. 그리고 Github를 통해서 데브넷에서 제공되는 샘플 코드를 확인하며, 내가 만든 코드를 공유하실 수 있습니다. 데브넷에 참여한 많은 개발자와 소통하면서 번뜩이는 아이디어로 멋진 창작물도 만들어 보실 수 있습니다.
네트워크 프로그래밍, 어떻게 시작할지 막막하시다면, 주저마시고 시스코 데브넷 홈페이지에 방문해 보세요. 프로그래밍도 시스코 네트워크도 바로 여러분의 손 안에 쏙 들어올 것입니다.
프로그래머빌리티로 네트워크를 자유롭게 활용해 보세요!
시스코 전문가 칼럼으로
최신 IT 트렌드를 알아보세요! |
이 글은 시스코 김형수 SDN 스페셜리스트가 작성한 칼럼입니다. |