책소개
이론적인 설명뿐만 아니라 실제 코드 예제와 실습 환경 구축 가이드를 제공해 독자가 Go 언어를 사용한 네트워크 자동화 솔루션 개발 능력을 향상시킬 수 있는 지식을 제공한다. 이 책을 통해 네트워크 자동화의 개념, Go 프로그래밍 기법, 다양한 자동화 도구 및 API 활용 방법 등을 배우고 실제 네트워크 환경에 적용할 수 있다.
목차
1부. Go 프로그래밍 언어
1장. 소개
__기술 요구사항
__네트워킹과 Go
__왜 Go인가?
____비기술적인 이유
__Go의 미래
____기술적인 이유
____네트워킹을 위한 Go
__Go와 파이썬
____코드 실행
____타입 시스템
____성능
____사용 편의성
____메모리 관리
____구문
____장애 처리
____동시성
____커뮤니티
__Go 설치하기
____윈도우즈
____맥
____리눅스
__요약
__참고 문헌
2장. Go의 기초
__기술 요구사항
__Go란 무엇인가?
__Go의 격언
__Go 소스 코드 파일
____패키지
____Go 모듈
____패키지 임포트하기
____주석
____이름
____Go 코드 실행하기
__온라인에서 Go 프로그램 실행하기
____Go Playground
____Go Play Space
____미래 엿보기
__Go 소스 코드 관리를 위한 go 도구
____build
____run
____mod
____get
____install
____fmt
____test
____env
__요약
__참고 문헌
3장. Go 시작하기
__기술 요구사항
__Go의 타입 시스템
____기본 타입
____컨테이너형
____사용자 정의 타입
__산술, 비교, 논리 연산자
____산술 연산자
____논리 연산자
____비교 연산자
__제어 흐름
____for 루프
____조건문
____goto 문
__함수
____함수 인수
____에러 처리
____메서드
____가변 인수 함수
____클로저
____디퍼
__인터페이스
____네트워크 자동화 예제
____표준 라이브러리의 예
____계약으로서의 인터페이스
__I/O 연산
____io.Reader 인터페이스
____io.Writer 인터페이스
____io.Copy 함수
____합성
__디코딩과 인코딩
____디코딩
____인코딩
__동시성
____고루틴
____채널
____채널과 타이머
____공유 데이터 액세스
____동시성 주의사항
__요약
__참고 문헌
4장. Go를 사용하는 네트워킹(TCP/IP)
__기술 요구사항
__링크 계층
____네트워크 인터페이스
____이더넷
__인터넷 계층
____net 패키지
____새로운 netip 패키지
____IP 주소로 작업하기
____경로 조회
__전송 계층
____UDP 핑 애플리케이션
__응용 계층
____HTTP 클라이언트 작업
____HTTP 서버 작업
__요약
__참고 문헌
2부. 일반적인 도구와 프레임워크
5장. 네트워크 자동화
__기술 요구사항
__네트워크 자동화란?
____네트워크 자동화가 필요한 이유
____상향식 관점
____하향식 관점
__네트워크 운영 작업 자동화
____구성 관리
____네트워크 상태 분석
____네트워크 감사 및 보고서 작성
__시스템 접근 방식
____폐루프 자동화
____데모 애플리케이션
__요약
__참고 문헌
6장. 구성 관리
__기술 요구사항
__환경 설정
____토폴로지 만들기
__SSH를 통해 네트워크 장치와 상호작용하기
____네트워크 장치 구성 설명하기
____Go의 SSH 패키지를 사용해 네트워크 장치에 액세스하기
____일상적인 SSH 작업 자동화하기
__HTTP를 통해 네트워크 장치와 상호작용하기
____Go의 HTTP 패키지를 사용해 네트워크 장치에 액세스하기
____HTTP를 통해 다른 시스템에서 구성 입력 가져오기
__상태 확인
____라우팅 정보 확인하기
____장치 간 도달 가능성 확인하기
__요약
__참고 문헌
7장. 자동화 프레임워크
__기술 요구사항
__앤서블
____앤서블 구성 요소
____앤서블 모듈로 작업하기
____앤서블 모듈 개발하기
____플레이북 실행하기
__테라폼
____테라폼의 구성 요소
____테라폼 사용하기
____테라폼 제공자 개발하기
____네트워킹 제공자
__기타 자동화 프레임워크
____Gornir
____Consul-Terraform-Sync
____mgmt
____미래 전망
__요약
__참고 문헌
3부. API 활용하기
8장. 네트워크 API
__기술 요구사항
__API 데이터 모델링
__OpenAPI
____데이터 모델링
____데이터 입력
____장치 구성
__JSON-RPC
____코드 생성
____구성 빌드하기
____장치 구성
__RESTCONF
____코드 생성
____구성 빌드하기
____장치 구성
__상태 확인
____작동 상태 모델링
____작동 상태 처리하기
__gRPC
____Protobuf
____gRPC 전송
____gRPC 서비스 정의하기
____gRPC로 네트워크 장치 구성하기
____gRPC로 네트워크 장치에서 원격 측정 스트리밍하기
__요약
__참고 문헌
9장. OpenConfig
__기술 요구사항
__장치 프로비저닝
____Set RPC
____gNMI로 네트워크 인터페이스 구성하기
__스트리밍 원격 측정
____Subscribe RPC
____gNMI를 사용한 스트리밍 원격 측정 처리 파이프라인
____이벤트 관리지 샘플 프로그램
____데이터 가시화하기
__네트워크 운영
____Traceroute RPC
____경로 검증기 애플리케이션
__요약
__참고 문헌
10장. 네트워크 모니터링
__기술 요구사항
__데이터 평면 원격 측정 처리
____패킷 캡처
____패킷 필터링
____패킷 처리
____트래픽 만들기
__Go 프로그램 디버깅
____IDE에서 디버깅하기
__데이터 평면 원격 측정 집계
____상위 토커
____Go 프로그램 테스트
__제어 평면 성능 측정
__BGP 업데이트 전파 시간 측정
____이벤트 기반 BGP 상태 기계
____BGP 메시지 인코딩 및 디코딩
____측정 지표 수집 및 노출
____측정 지표 저장 및 시각화
__분산 애플리케이션 개발
__요약
__참고 문헌
11장. 전문가의 식견
__데이비드 바로소
__스튜어트 클락
__클라우디아 드 루나
__알렉시스 드 탈루엣
__존 도크
__로만 도딘
__데이비드 지
__다니엘 헤르츠버그
__마커스 하인즈
__스네하 인구바
__안토니오 오헤아
__칼 몬타나리
__브렌트 솔즈베리
__막시밀리안 빌헬름
__매트 오스왈트
__참고 문헌
12장. 부록: 테스트 환경 구축
__테스트 환경이란?
____1단계 - 테스트 환경 구축하기
____2단계 - 컨테이너 이미지 업로드하기
____3단계 - 테스트 환경과 상호작용하기
__가상 네트워크 토폴로지 시작하기
____장치에 연결하기
____네트워크 토폴로지 삭제하기
____4단계 - 클라우드 호스팅 환경 정리하기
__참고 문헌
저자소개
출판사리뷰
◈ 이 책에서 다루는 내용 ◈
◆ 네트워크 관련 예제를 통한 Go 프로그래밍 언어의 기본 개념
◆ 네트워크 자동화를 위한 Go의 강력한 기능
◆ 네트워크 자동화의 목표와 이점 그리고 일반적인 사용 사례
◆ 다양한 기술을 사용해 네트워크 장치와 상호작용하는 방법
◆ Go 프로그램을 자동화 프레임워크에 통합하는 방법
◆ Go를 OpenConfig 생태계에 활용하는 방법
◆ 네트워크 가시성을 위해 분산 및 확장 가능한 시스템 구축
◈ 이 책의 대상 독자 ◈
네트워크 자동화가 무엇인지, Go 프로그래밍 언어가 네트워크 자동화 솔루션을 개발하는 데 어떤 도움이 되는지 알고자 하는 모든 네트워크 엔지니어, 관리자 그리고 기타 실무자를 위해 설계된 책이다. 전반부에서는 Go 언어의 주요 기능을 설명하므로 프로그래밍의 기본 지식을 갖춘 초보자에게 적합하다.
◈ 이 책의 구성 ◈
1장, ‘소개’에서는 네트워킹과 Go 언어, Go 언어의 장점 그리고 파이썬과의 차이점을 살펴본다.
2장, ‘Go의 기초’에서는 Go 언어를 정의하고 기본 원칙을 소개한다. 그리고 Go 소스 코드 파일 구조를 설명하고 Go 프로그램을 컴파일하는 방법을 알아본다.
3장, ‘Go 시작하기’에서는 제어 흐름, 입출력 연산, 디코딩과 인코딩 그리고 동시성과 같은 네트워크 자동화와 관련된 Go의 다양한 특성을 소개한다.
4장, ‘Go를 사용하는 네트워킹(TCP/IP)’에서는 TCP/IP 모델의 각 계층에서 Go를 사용하는 실제 사용 사례를 살펴본다.
5장, ‘네트워크 자동화’에서는 네트워크 자동화가 네트워크 운영에 미치는 영향 그리고 비즈니스에서의 장점에 대해 설명한다. 또한 개별 사용 사례를 네트워크 자동화 시스템으로 확장하는 방법도 알아본다.
6장, ‘구성 관리’에서는 SSH와 HTTP를 통해 다양한 네트워킹 공급자의 네트워크 장치와 상호작용해서 네트워크 장치를 구성하고 운영 상태를 수집해 모든 변경 사항을 확인하는 실제 예를 살펴본다.
7장, ‘자동화 프레임워크’에서는 앤서블(Ansible)과 테라폼(Terraform)을 중심으로 자동화 프레임워크를 Go와 통합하는 방법을 설명한다.
8장, ‘네트워크 API’에서는 네트워크 자동화를 가능하게 하는 네트워크 장치를 관리하기 위한 기기 간 인터페이스(RESTCONF와 OpenAPI부터 gRPC까지)를 살펴본다.
9장, ‘OpenConfig’에서는 장치 프로비저닝(provisioning)이나 원격 측정 스트림(telemetry stream) 그리고 라우팅 추적(traceroute)과 같은 행위를 실행하는 등 원격 OpenConfig gRPC 서비스로 일반적인 운영 작업을 수행하는 방법을 알아본다.
10장, ‘네트워크 모니터링’에서는 Go를 사용해 네트워크 패킷을 캡처하거나, 데이터 평면 원격 측정(data plane telemetry)을 처리하거나, 네트워크 성능을 측정하기 위해 능동형 프로브(active probe)를 실행하고 측정 지표를 시각화하는 등 네트워크를 다양한 각도로 모니터링하는 방법을 자세히 알아본다.
11장, ‘전문가의 식견’에서는 네트워크 자동화에 대한 실무 경험이 있거나 네트워크 관련 업무와 활동을 위해 Go를 사용하는 사람의 관점을 공유한다.
12장 ‘부록: 테스트 환경 구축’에서는 이 책의 모든 예제를 원활하게 실행할 수 있도록 호환되는 컨테이너랩(Containerlab)의 버전과 관련 종속성을 포함하는 테스트 환경을 구축하는 과정을 설명한다.
◈ 옮긴이의 말 ◈
현대 사회의 필수 기반 시설인 네트워크 인프라를 안정적이고 효율적으로 운영하는 것은 매우 중요한 과제입니다. 그러나 과거의 수작업 기반 운영 방식은 인적 오류의 발생 가능성이 높았을 뿐만 아니라 비효율적이었습니다. 이에 프로그래밍 방식의 네트워크 자동화가 그 대안으로 주목받고 있습니다.
Go 언어는 간결한 구문, 뛰어난 성능, 강력한 동시성 지원 등과 같은 장점을 가진 네트워크 자동화 분야에서 각광받는 프로그래밍 언어입니다. 이 책은 Go를 활용한 실전 네트워크 자동화 지식과 기술을 상세히 다룹니다.
이 책은 Go 언어의 기본 문법과 주요 개념을 알려주고 TCP/IP 모델 전반에 걸친 실제 프로그래밍 예제를 통해 네트워크 프로토콜에 대한 이해도를 높이는 데 도움을 줄 수 있습니다. 또한 SSH, HTTP 등 주요 프로토콜의 활용, 데이터 추출 및 파싱, 장치 구성 및 상태 관리 등 네트워크 자동화 실무에 필수적인 주제를 다양한 예제를 바탕으로 익힐 수 있습니다.
이 밖에도 앤서블(Ansible), 테라폼(Terraform) 등 주요 자동화 프레임워크의 연동 방법과 OpenConfig 기반 gNMI/gNOI 활용법, 패킷 캡처 및 모니터링 자동화 기술 등 최신 네트워크 운영 트렌드를 심도 있게 다룹니다. 외부 시스템 연동, 프레임워크 직접 개발 등 실무 환경에 맞는 전략적 기술도 포함돼 있습니다.
저자를 비롯해 네트워크 자동화 분야에서 Go 언어를 사용하는 전문가들이 오랜 기간 실무를 통해 고민했던 문제와 해결 방안을 친절히 설명하고 있으므로 이 분야의 입문자와 전문가 모두에게 큰 도움이 될 것입니다. Go 기반 네트워크 자동화 역량을 한층 업그레이드하는 데에 도움이 되길 바랍니다.