Top

Go를 활용한 네트워크 자동화 [Golang의 기초부터 네트워크 자동화까지]

  • 원서명Network Automation with Go: Learn how to automate network operations and build applications using the Go programming language (ISBN 9781800560925)
  • 지은이니콜라스 레이바(Nicolas Leiva), 마이클 카신(Michael Kashin)
  • 옮긴이엄진국, 서태진, 김우석, 장기식
  • ISBN : 9791161758466
  • 40,000원 (eBook 32,000원)
  • 2024년 06월 20일 펴냄
  • 페이퍼백 | 540쪽 | 188*235mm
  • 시리즈 : 네트워크 프로그래밍

eBook 판매처

교보문고 알라딘 YES24

책 소개

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/network-automation-go

요약

이론적인 설명뿐만 아니라 실제 코드 예제와 실습 환경 구축 가이드를 제공해 독자가 Go 언어를 사용한 네트워크 자동화 솔루션 개발 능력을 향상시킬 수 있는 지식을 제공한다. 이 책을 통해 네트워크 자동화의 개념, Go 프로그래밍 기법, 다양한 자동화 도구 및 API 활용 방법 등을 배우고 실제 네트워크 환경에 적용할 수 있다.

이 책에서 다루는 내용

◆ 네트워크 관련 예제를 통한 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)의 버전과 관련 종속성을 포함하는 테스트 환경을 구축하는 과정을 설명한다.

저자/역자 소개

지은이 소개

니콜라스 레이바(Nicolas Leiva)

레드햇(Red Hat)의 스태프 솔루션 아키텍트(staff solutions architect)로, 사업 규모에 상관없이 IT 인프라와 서비스, 애플리케이션의 프로비저닝(provisioning)과 운영 자동화를 지원한다. 이전에는 15년 동안 네트워크 업계에서 일하면서 시스코 공인 설계 전문가(CCDE, Cisco Certified Design Expert)와 시스코 공인 인터네트워크 전문가(CCIE, Cisco Certified Internetwork Expert) 자격을 취득했다. 현재 클라우드 기술에 많은 관심을 갖고 Go 언어로 오픈소스 소프트웨어를 개발하는 데 열정을 바치고 있다.

마이클 카신(Michael Kashin)

현재 NVIDIA 네트워크 사업부의 클라우드 인프라 솔루션 아키텍트(cloud infrastructure solutions architect)로, 네트워크 운영부터 소프트웨어 개발 그리고 시스템 아키텍처와 설계에 이르기까지 다양한 역할을 수행했다. 다른 분야 간의 경계를 허물고 사업의 요구사항을 만족시키면서 가장 최적의 방법으로 기술적 문제를 해결하는 것을 즐긴다. 또한 클라우드 네이티브 인프라(cloud-native infrastructure)와 자동화, 오케스트레이션(orchestration)에 집중하는 오픈소스 기여자이자 저자로 활동하고 있다.

옮긴이의 말

현대 사회의 필수 기반 시설인 네트워크 인프라를 안정적이고 효율적으로 운영하는 것은 매우 중요한 과제입니다. 그러나 과거의 수작업 기반 운영 방식은 인적 오류의 발생 가능성이 높았을 뿐만 아니라 비효율적이었습니다. 이에 프로그래밍 방식의 네트워크 자동화가 그 대안으로 주목받고 있습니다.

Go 언어는 간결한 구문, 뛰어난 성능, 강력한 동시성 지원 등과 같은 장점을 가진 네트워크 자동화 분야에서 각광받는 프로그래밍 언어입니다. 이 책은 Go를 활용한 실전 네트워크 자동화 지식과 기술을 상세히 다룹니다.

이 책은 Go 언어의 기본 문법과 주요 개념을 알려주고 TCP/IP 모델 전반에 걸친 실제 프로그래밍 예제를 통해 네트워크 프로토콜에 대한 이해도를 높이는 데 도움을 줄 수 있습니다. 또한 SSH, HTTP 등 주요 프로토콜의 활용, 데이터 추출 및 파싱, 장치 구성 및 상태 관리 등 네트워크 자동화 실무에 필수적인 주제를 다양한 예제를 바탕으로 익힐 수 있습니다.

이 밖에도 앤서블(Ansible), 테라폼(Terraform) 등 주요 자동화 프레임워크의 연동 방법과 OpenConfig 기반 gNMI/gNOI 활용법, 패킷 캡처 및 모니터링 자동화 기술 등 최신 네트워크 운영 트렌드를 심도 있게 다룹니다. 외부 시스템 연동, 프레임워크 직접 개발 등 실무 환경에 맞는 전략적 기술도 포함돼 있습니다.

저자를 비롯해 네트워크 자동화 분야에서 Go 언어를 사용하는 전문가들이 오랜 기간 실무를 통해 고민했던 문제와 해결 방안을 친절히 설명하고 있으므로 이 분야의 입문자와 전문가 모두에게 큰 도움이 될 것입니다. Go 기반 네트워크 자동화 역량을 한층 업그레이드하는 데에 도움이 되길 바랍니다.

옮긴이 소개

엄진국

고려대학교 정보보호대학원에서 석사 학위를 취득했으며, 20년간 CERT 업무 외 NW 보안 업무를 담당해왔다. 행정안전부 정부 종합 청사에서 국가망의 외부 공격들을 분석하면서 보안 업무를 시작했다. 이후 신한 금융 그룹에서 보안 관제 센터를 처음 만들 때 막내로 함께했으며 금융권 최초로 모든 계열 그룹사를 통합해 통합보안관제센터를 구축하면서 CERT를 운영했다. 이후 신한 금융 그룹에서 7년간 통합보안관제센터장을 역임하면서 여러 가지 침해 사고와 위협들을 경험했다. 이 경험을 바탕으로 현재는 SK하이닉스에서 보안관제센터를 업그레이드했고, SK 계열사 최초로 SOAR를 구축해 여러 가지 보안 관제 업무 플로를 자동화하는 플레이북(Playbook)을 만들었으며 지금은 NW 보안 총괄을 맡아 업무의 효율성을 높이고 있다. NW 보안과 침해 위협에 대한 예방 방법에 대해 많은 연구를 했고 SIEM을 이용한 침해 위협 탐지 방법론을 논문으로 작성했다. 또한 웹 공격을 선제적으로 방어하기 위해 세계에서 가장 빠르게 방어 패턴을 만들 수 있는 시스템을 만들어 특허를 출원(출원 번호: KR102048141B1)했다.

서태진

고려대학교 정보보호대학원에서 석사 학위를 취득했다. 국민은행 전산부를 시작으로 현재까지 30년간 IT 업무에 종사한 보안 및 개발 업무 전문가이다. 현재는 주식회사 크라비스커뮤니티 대표로, Opentext, 모바일 보안, Chinalaysis, TrustArc의 제품군을 취급하고 있으며 애플리케이션 보안 업무의 전문가로 활동하고 있다. 최근에는 금융사 클라우드 전환 시 보안의 전반적인 업무를 맡아 성공적으로 오픈했고 암호화 화폐, AI 등 신기술에 대한 연구를 하고 있으며 보안, 개발 등의 업무를 책임지고 있다.

김우석

여러 개발 프로젝트를 수행하면서 광운대학교에서 공학 석사를 취득했고 정보 보안을 체계적으로 배우기 위해 고려대학교 정보보호대학원 박사 과정을 수료했다. 경찰청 사이버테러대응센터에서 사이버 수사를 지원하는 인터넷 추적 시스템을 개발했고 한전 KDN에서 운영하는 사이버안전센터에서 에너지·산업·무역의 보안 관제 총괄 및 침해 사고 대응 업무와 보안 솔루션 개발에 참여해 해킹에 대응하는 기술을 연구했다. 현재는 전력 ICT 분야에서 전력 효율화를 위한 EMS(Energy Management System) 개발 담당으로서 전력 수요 예측 및 발전 예측 등에 인공지능 기술을 접목시키고 있다. 에이콘출판사에서 출간한 『적대적 머신러닝』(2020)과 『사이버 보안을 위한 머신러닝 쿡북』(2021)을 번역했다.

장기식

경희대학교에서 대수학을 전공했으며 고려대학교 정보보호대학원에서 박사 학위를 취득했다. 이후 약 10년간 경찰청 사이버안전국 디지털포렌식센터에서 디지털포렌식 업무를 담당했다. 경찰대학 치안정책연구소에서 데이터 분석을 접한 이후 데이터 분석을 기반으로 한 머신러닝 기술을 연구했고 이 경험을 바탕으로 스타트업에서 인공지능 기반 데이터 분석 업무부터 CCTV용 영상 분석에 이르기까지 다양한 머신러닝 및 인공지능 업무를 수행했다. 현재 모빌리티 보안 전문 업체인 ㈜시옷의 CTO로서 자동차 사이버 보안 및 데이터 분석 솔루션 개발 및 연구를 책임지고 있다. 번역서로는 『보안을 위한 효율적인 방법 PKI』(인포북, 2003), 『머신러닝 리스크 관리 with 파이썬』(한빛미디어, 2024)을 비롯해 에이콘출판사에서 출간한 『EnCase 컴퓨터 포렌식』(2015), 『인텔리전스 기반 사고 대응』(2019), 『적대적 머신러닝』(2020), 『사이버 보안을 위한 머신러닝 쿡북』(2021), 『양자 암호 시스템의 시작』(2021), 『스크래치로 배워 보자! 머신러닝』(2022), 『Pandas를 이용한 데이터 분석 실습 2/e』(2022), 『그래프 머신러닝』(2023)이 있다.

목차

목차
  • 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단계 - 클라우드 호스팅 환경 정리하기
    • 참고 문헌

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안