#90DaysOfDevOps - Network Automation - Day 24
네트워크 자동화
네트워크 자동화의 기본 사항
네트워크 자동화의 주요 동인
- 민첩성 달성
- 비용 절감
- 오류 제거
- 규정 준수 보장
- 중앙 집중식 관리
자동화 도입 프로세스는 각 비즈니스에 따라 다릅니다. 자동화를 배포하는 데 있어 모든 것에 적합한 방법은 없으며, 조직에 가장 적합한 접근 방식을 파악하고 수용하는 능력은 보다 민첩한 환경을 유지하거나 만드는 데 매우 중요하며, 항상 비즈니스 가치와 최종 사용자 경험에 초점을 맞춰야 합니다. (처음에 DevOps 전체와 문화 변화 및 이로 인한 자동화된 프로세스와 관련하여 비슷한 내용을 말씀드렸습니다.)
이를 세분화하려면 자동화하려는 작업이나 프로세스가 최종 사용자 경험 또는 비즈니스 가치를 어떻게 달성하고 개선할 수 있는지 파악하고 단계별 체계적인 접근 방식을 따라야 합니다.
"어디로 가는지 모르면 어떤 길이라도 그곳에 도달할 수 있습니다."
달성하고자 하는 프레임워크 또는 설계 구조를 통해 최종 목표가 무엇인지 파악한 다음, 비즈니스 결과를 기반으로 다양한 단계에서 자동화 성공 여부를 측정하면서 목표 달성을 위해 단계적으로 작업하세요.
기존 애플리케이션을 중심으로 모델링된 개념 구축 자동화는 애플리케이션, 서비스, 인프라에 적용해야 하기 때문에 거창하게 개념을 설계할 필요가 없으므로 기존 인프라, 즉 기존 애플리케이션을 중심으로 모델링하여 개념을 구축하기 시작하세요.
네트워킹 자동화에 대한 접근 방식
작업을 식별하고 네트워크 변경 요청에 대한 검색을 수행하여 솔루션을 자동화할 가장 일반적인 이슈와 문제를 파악해야 합니다.
- 현재 수동으로 처리하고 있는 모든 변경 요청과 workflow의 목록을 작성합니다.
- 가장 일반적이고 시간이 오래 걸리며 오류가 발생하기 쉬운 활동을 파악하세요.
- 비즈니스 중심 접근 방식을 취하여 요청의 우선순위를 정하세요.
- 이는 자동화 프로세스를 구축하기 위한 프레임워크이며, 자동화해야 하는 작업과 자동화하지 않아야 하는 작업을 구분합니다.
그런 다음 작업을 나누고 서로 다른 네트워크 기능이 어떻게 작동하고 상호 작용하는지 분석해야 합니다.
- 인프라/네트워크 팀은 애플리케이션을 배포하기 위해 여러 계층에서 변경 티켓을 받습니다.
- 네트워크 서비스를 기반으로 여러 영역으로 나누고 서로 어떻게 상호 작용하는지 이해합니다.
- 애플리케이션 최적화
- ADC(애플리케이션 전송 컨트롤러)
- 방화벽
- DDI(DNS, DHCP, IPAM 등)
- 라우팅
- 기타
- 다양한 종속성을 파악하여 비즈니스 및 문화적 차이를 해결하고 팀 간 협업을 유도하세요.
재사용 가능한 정책, 재사용 가능한 서비스 작업, 프로세스 및 입출력을 정의하고 단순화하세요.
- 다양한 서비스, 프로세스 및 입출력을 위한 오퍼링을 정의하세요.
- 배포 프로세스를 간소화하면 신규 워크로드와 기존 워크로드 모두의 시장 출시 시간을 단축할 수 있습니다.
- 표준 프로세스가 마련되면, 멀티스레드 접근 방식과 제공을 위해 개별 요청에 따라 프로세스를 순서화 및 조정할 수 있습니다.
정책을 비즈니스별 활동과 결합하세요. 이 정책을 구현하면 비즈니스에 어떤 도움이 되나요? 시간이 절약되나요? 비용이 절감되나요? 더 나은 비즈니스 결과를 제공하나요?
- 서비스 작업이 상호 운용 가능한지 확인하세요.
- 증분 서비스 작업을 연결하여 비즈니스 서비스를 만들 수 있도록 정렬하세요.
- 필요에 따라 서비스 작업을 연결하고 다시 연결할 수 있는 유연성을 제공하세요.
- 셀프 서비스 기능을 배포하고 운영 효율성을 개선할 수 있는 기반을 마련하세요.
- 감독 및 규정 준수에 지속적으로 기여할 수 있도록 다양한 기술 스킬셋을 허용합니다.
가용성과 서비스를 유지하면서 정책과 프로세스를 반복하여 추가하고 개선하세요.
- 기존 작업을 자동화하여 작게 시작하세요.
- 자동화 프로세스에 익숙해져서 자동화를 통해 이점을 얻을 수 있는 다른 영역을 식별할 수 있습니다.
- 자동화 이니셔티브를 반복하여 필요한 가용성을 유지하면서 민첩성을 점진적으로 추가합니다.
- 점진적인 접근 방식을 취하면 성공의 길을 열 수 있습니다!
네트워크 서비스를 오케스트레이션하세요!
- 애플리케이션을 신속하게 제공하려면 배포 프로세스의 자동화가 필요합니다.
- 민첩한 서비스 환경을 구축하려면 기술 전반에 걸쳐 관리해야 할 다양한 요소가 필요합니다.
- 자동화와 배포 순서를 제어할 수 있는 End To End 오케스트레이션을 준비하세요.
네트워크 자동화 도구
여기서 좋은 소식은 대부분의 경우 네트워크 자동화에 사용하는 도구는 다른 자동화 영역에 사용하거나 지금까지 이미 다룬 내용 또는 향후 세션에서 다룰 내용과 동일하다는 것입니다.
운영 체제 - 이번 챌린지 내내 그랬듯이 저는 대부분의 학습을 Linux OS로 하는 데 집중하고 있으며, 그 이유는 Linux 섹션에서 설명했지만, 크로스 OS 플랫폼이긴 하지만 오늘 다룰 거의 모든 도구는 처음부터 모두 Linux 기반 애플리케이션 또는 도구로 시작되었습니다.
통합 개발 환경(IDE) - 다양한 언어에서 사용할 수 있는 광범위한 플러그인을 기반으로 Visual Studio Code를 IDE로 추천한다는 것 외에는 여기서 더 이상 설명할 것이 없습니다.
구성 관리 - 아직 구성 관리 섹션은 다루지 않았지만, 이 영역에서 구성 관리 및 자동화를 위해 Ansible이 가장 선호되는 것은 분명합니다. Ansible은 Python으로 작성되었지만, Python을 알 필요는 없습니다.
- 에이전트리스
- SSH만 필요
- 대규모 지원 커뮤니티
- 다양한 네트워크 모듈
- 푸시 전용 모델
- YAML로 구성
- 오픈 소스!
Link to Ansible Network Modules
구성 관리 섹션에서 Ansible Tower에 대해서도 다룰 예정이며, 이를 Ansible의 GUI로 보시면 됩니다.
CI/CD - 이와 관련된 개념과 도구에 대해서는 다시 다룰 예정이지만, 네트워킹뿐만 아니라 서비스 및 플랫폼의 모든 프로비저닝에 걸쳐 있기 때문에 최소한 여기서 언급하는 것이 중요합니다.
특히 Jenkins는 네트워크 자동화를 위한 인기 있는 도구를 제공하거나 제공하는 것으로 보입니다.
- 변경사항이 있는지 git 리포지토리를 모니터링한 다음 변경을 시작합니다.
버전 관리 - 이 역시 나중에 자세히 살펴볼 내용입니다.
- Git은 로컬 디바이스에서 코드의 버전 제어를 제공합니다 - 크로스 플랫폼
- GitHub, GitLab, BitBucket 등은 리포지토리를 정의하고 코드를 업로드할 수 있는 온라인 웹사이트입니다.
언어 | 스크립팅 - 우리가 아직 다루지 않은 Python입니다. 상황에 따라 프로그래밍 언어로 Go를 사용하기로 결정했는데, Golang과 Python이 박빙의 승부를 펼쳤으며 네트워크 자동화에는 Python이 승자가 된 것 같습니다.
- 여기서 언급해야 할 것이 바로 파이썬으로 작성된 자동화 프레임워크인 Nornir입니다. 이것은 Ansible의 역할을 하는 것으로 보이지만 특히 네트워크 자동화를 중심으로 합니다. Nornir documentation
API 분석 - Postman은 RESTful API를 분석하기 위한 훌륭한 도구입니다. API를 빌드, 테스트 및 수정하는 데 도움이 됩니다.
- POST >>> 리소스 객체를 생성합니다.
- GET >>> 리소스를 검색합니다.
- PUT >>> 리소스를 생성하거나 교체합니다.
- PATCH >>> 리소스 오브젝트를 생성하거나 업데이트합니다.
- DELETE >>> 리소스를 삭제합니다.
기타 언급할 도구
Cisco NSO (Network Services Orchestrator)
NetYCE - Simplify Network Automation
앞으로 3일 동안은 지금까지 다룬 내용 중 몇 가지를 좀 더 실습해보고 Python과 네트워크 자동화에 관한 작업을 해볼 계획입니다.
지금까지 네트워킹 주제를 모두 다루지는 못했지만, 아래에 추가하는 리소스를 통해 계속 학습하면서 따라갈 수 있을 정도로 폭넓게 다루고자 합니다.
자료
- 3 Necessary Skills for Network Automation
- Computer Networking full course
- Practical Networking
- Python Network Automation
Day 25에서 봐요!