본문 바로가기
IT기술

코딩과 API를 통해 네트워크 쉽게 관리하기 - 1편

by romydady 2024. 5. 30.

API 코딩의 장점

API(Application Programming Interface)는 소프트웨어 간 상호작용을 가능하게 하는 인터페이스입니다. API 코딩을 배우면 다음과 같은 이점을 얻을 수 있습니다

1. 자동화와 효율성 향상

  • API를 통해 반복적인 작업을 자동화할 수 있어 생산성이 높아집니다. 
  • 소프트웨어 간 데이터 교환이 용이해져 업무 프로세스를 효율적으로 관리할 수 있습니다. 

2. 개발 생산성 향상

  • API를 통해 기존 기능을 재사용할 수 있어 개발 시간과 비용을 절감할 수 있습니다. 
  • 설계 우선(design-first) 접근법을 통해 API 개발 계획을 미리 수립할 수 있어 개발 프로세스가 체계적입니다. 

3. 데이터 및 기능 통합 용이

  • API를 통해 다양한 시스템과 데이터를 통합할 수 있어 애플리케이션 간 상호운용성이 높아집니다. 
  • 데이터와 기능을 API로 노출하면 다른 애플리케이션에서 활용할 수 있습니다.

4. 확장성 및 유연성 향상

  • API를 통해 시스템을 점진적으로 확장하고 변경할 수 있어 유연성이 높습니다.
  • 새로운 기능을 API로 제공하면 기존 시스템에 영향을 최소화하면서 업데이트할 수 있습니다.

5. 오류 감소

  • 수동 작업에 비해 API 기반 자동화는 오류 발생 가능성이 낮습니다.
  • 일관된 방식으로 작업을 수행하므로 실수를 줄일 수 있습니다.

API 코딩을 배우면 자동화, 생산성 향상, 데이터 통합, 확장성 등의 이점을 얻을 수 있습니다. 또한 최신 기술 동향을 파악하고 새로운 기회를 발견할 수 있습니다. 이를 통해 개발자로서의 역량을 키울 수 있습니다.

 

API 코딩을 통한 네트워크 자동화 프로세스

1. 네트워크 상태 확인

  • 스위치의 상태와 인터페이스 목록을 가져옵니다. 
  • 각 인터페이스의 상태와 마지막 변경 시간을 확인합니다.

2. 비활성 인터페이스 식별 

  • 인터페이스가 다운 상태이고 마지막 변경 시간이 30일 이상 지났는지 확인합니다.

3. 비활성 인터페이스 비활성화

  • 비활성 인터페이스를 비활성화하고 설명을 "Interface disabled per Policy"로 변경합니다.

4. 자동화 프로세스 반복

  • 이 과정을 다른 인터페이스와 스위치에 대해 반복 수행합니다.
# 네트워크 상태 확인
for switch in my_network.switches:
    for interface in switch.interfaces:
        if is_down(interface) and last_change(interface) > 30:
            # 비활성 인터페이스 비활성화
            interface.shutdown()
            interface.description = "Interface disabled per Policy"

이와 같이 API 코딩을 통해 네트워크 자동화 프로세스를 정의할 수 있습니다. 이를 통해 반복적인 작업을 효율적으로 수행할 수 있습니다. 

반응형

API 코딩을 통한 네트워크 자동화의 이점

1. 보안 강화

  • API 코딩을 통해 네트워크 변경 사항을 체계적으로 관리할 수 있습니다.
  • 승인된 변경 사항만 적용되도록 하여 보안을 강화할 수 있습니다.

2. 가시성 향상

  • API를 통해 네트워크 상태와 변경 내역을 실시간으로 모니터링할 수 있습니다.
  • 이를 통해 네트워크 운영 및 관리에 대한 가시성이 향상됩니다.

3. 규정 준수 지원

  • API 코딩을 통해 네트워크 변경 사항을 문서화하고 감사 추적이 가능합니다.
  • 이를 통해 규정 준수 요구 사항을 충족할 수 있습니다.

API 코딩을 통한 네트워크 자동화는 생산성 향상, 오류 감소, 확장성 향상, 데이터 활용도 증가 외에도 보안 강화, 가시성 향상, 규정 준수 지원 등의 추가적인 이점을 제공합니다.

 

현대 프로그래밍 언어와 도구

1. 현대 프로그래밍 언어의 장점

  • JavaScript, Python, Go, Swift 등의 현대 프로그래밍 언어는 이전 언어에 비해 간결하고 유연합니다.
  • 이전에는 10,000줄의 C++ 코드가 필요했지만, 이제는 300줄 이내의 코드로도 강력한 기능을 구현할 수 있습니다.

2. 현대 개발 도구의 활용

  • 현대 프로그래밍 언어는 다음과 같은 강력한 개발 도구를 제공합니다:
    • Git 저장소
    • 패키지 관리 시스템
    • 가상 환경
    • 통합 개발 환경( Integrated Development Environment, IDE)
  • 이러한 도구를 활용하면 작업과 프로세스를 자동화하고 강력한 도구와 워크플로를 만들 수 있습니다.

3. 소프트웨어 개발 산업의 성숙

  • 현대 프로그래밍 언어와 개발 도구의 발전은 시스템 엔지니어링 분야에 많은 혜택을 가져다 줍니다.
  • 소프트웨어 개발 산업의 성숙으로 인해 시스템 엔지니어링 분야에서도 새로운 기회가 열리고 있습니다.

4. 과거의 프로그래밍 어려움

  • 과거에는 프로그램을 작성할 때 "처음부터 시작"해야 했습니다.
  • 프로그래밍 언어와 도구에 포함된 기본 라이브러리만을 사용해야 했기 때문에 진입장벽이 높았습니다.
  • 예를 들어, HTTPS 웹 요청을 하려면 많은 작업이 필요했습니다.

5. 오픈 소스 커뮤니티의 발전

  • 오픈 소스 커뮤니티, GitHub 등의 코드 공유 및 협업 사이트, 공개 패키지 저장소가 발전했습니다.
  • 이를 통해 새로운 프로그래밍 언어 개발자들이 오픈 소스 소프트웨어 라이브러리를 만들고 공유할 수 있게 되었습니다.
  • 이러한 커뮤니티 기반 라이브러리를 활용하면 중복 작업을 줄이고 시간과 노력을 절약할 수 있습니다.

6. Python의 requests 라이브러리 사례

  • Python의 requests 라이브러리를 사용하면 HTTPS 요청을 간단히 처리할 수 있습니다.
  • pip install requests로 라이브러리를 설치하고, import requests로 사용할 수 있습니다.
  • requests.get("https://api.github.com")으로 HTTPS 요청을 보내고 응답을 확인할 수 있습니다.

 

 

API 의 발전

1. SOAP에서 RESTful API로의 전환

  • 과거에는 SOAP와 같은 복잡한 API 표준이 사용되었습니다.
  • 하지만 이제는 RESTful API와 JSON과 같은 표준화된 데이터 형식이 널리 사용되고 있습니다.
  • RESTful API와 JSON은 사용이 더 쉽고 간단합니다.

2. DevNet Always-On IOS XE Sandbox 사례

  • 이 사례에서는 Python의 requests 라이브러리를 사용하여 RESTful API를 통해 라우터의 인터페이스 정보를 가져옵니다.
  • 단 4줄의 코드로 인터페이스 정보를 가져올 수 있습니다.
  • 네 개의 문장(import requests부터 response = requests.get(...))을 사용해 라우터의 인터페이스 세부 정보를 가져왔습니다. 한 개의 문장(interfaces = response.json())을 사용해 데이터를 우리가 사용할 수 있는 형식으로 파싱했습니다.
  • 이는 과거에 비해 API 사용이 매우 간단해졌음을 보여줍니다.

  • import requests: requests 라이브러리 import
  • HOST, USER, PASS: 접속 정보 설정
  • url: API 엔드포인트 URL 구성
  • headers: API 요청 헤더 설정
  • response = requests.get(...): API 요청 수행
  • interfaces = response.json(): 응답 데이터를 JSON으로 파싱
  • interfaces['ietf-interfaces:interfaces']['interface'][0]['name']: 인터페이스 이름 출력
  • interfaces['ietf-interfaces:interfaces']['interface'][0]['ietf-ip:ipv4']['address'][0]['ip']: 인터페이스 IP 주소 출력

API와 프로그래밍 언어는 인프라 엔지니어의 영역에 유용하고 적용 가능할 정도로 발전하고 성숙했습니다.

결과적으로, 상대적으로 적은 양의 코드로 강력한 작업을 수행할 수 있습니다. 반복적이거나 노동 집약적인 작업을 자동화함으로써, 지능을 요구하는 작업에 시간과 노력을 집중할 수 있게 됩니다.

 

 

반응형

댓글