자바 네트워크 소녀 netty 리뷰

18
NETTY 소녀친해지기… [email protected]

Upload: woojin-joe

Post on 09-Feb-2017

4.748 views

Category:

Engineering


16 download

TRANSCRIPT

Page 1: 자바 네트워크 소녀 Netty 리뷰

NETTY 소녀와 친해지기…[email protected]

Page 2: 자바 네트워크 소녀 Netty 리뷰

HTTP://NETTY.IO/ HTTP://DESIGN.JBOSS.ORG/NETTY/LOGO/FINAL/NETTY_LOGO_600PX.PNG

먼저 NETTY는?

▸ 공식 사이트에 있는 설명을 번역하자면 …

▸ 유지보수가 용이한 고성능의 서버 & 클라이언트 프로토콜을 빠르게 개발할 수 있도록 돕는 비동기, 이벤트 기반의 네트워크 애플리케이션 프레임워크

Page 3: 자바 네트워크 소녀 Netty 리뷰

이 책의 목표

▸ “네트워크 프로그램을 처음 만드는 초보 개발자와 체계적으로 지식을 습득하려는 기존 개발자가 네티로 손쉽게 그리고 완성도 있게 네트워크 프로그램을 만들 수 있었으면 좋겠다.” (지은이의 말 中)

▸ “이 책을 접하는 독자가 결과뿐만 아니라 튼튼한 내공에 열을 올리는 이 책의 컨셉에 동의해 주기를 희망 …” (역시 지은이의 말 中)

네티로 네트워크 프로그램 잘 짜기

기본개념 잘 닦기

Page 4: 자바 네트워크 소녀 Netty 리뷰

책의 구성

▸ 1부 네티 소개 ▸ 1-2장은 네티의 공식예제와 함께 네티와 일반적인 네트워크 애플리케이션을 비교하며 특징을 살펴보기

▸ 2부 네티 상세 ▸ 네티 핵심(부트스트랩, 채널 파이프라인, 코덱, 이벤트 모델, 바이트 버퍼)을 자세히 들여다 보기

▸ 3부 네티 응용 ▸ 오픈 SSL, 메이븐, Junit, Spring, Redis까지 넣어서 응용해보기!

‘자바 네트워크 소녀 NETTY’ 12-13P를 참조

Page 5: 자바 네트워크 소녀 Netty 리뷰

1장 네티 맛보기

▸ 네트워크 프로그램의 Hello World격인 대표적 예제: Discard 서버 와 Echo서버를 구현해 본다.

▸ 간단한 예제로 네티의 맛을 살짝 보게 해준다.

▸ 예제 소스

▸ https://github.com/krisjey/netty.book.kor/tree/master/example/src/java/com/github/nettybook/ch1

▸ 책에서 소개하는 웹프레임워크 성능 평가 자료

▸ https://goo.gl/v8UVyC

Page 6: 자바 네트워크 소녀 Netty 리뷰

2장 네티의 주요 특징 (1)

▸ 이 장의 키워드 ▸ 동기와 비동기 ▸ 블로킹과 논블로킹 소켓 ▸ 이벤트 기반 프로그래밍

▸ 위 키워드에 대해 자세히 알고 있다면 패스해도 OK!

▸ 조금이라도 불안하다면 2장에서 기본기를 튼튼히 하고 넘어가자

Page 7: 자바 네트워크 소녀 Netty 리뷰

2장 네티의 주요 특징 (2)

▸ 2장에서는 도식을 활용하여 상세히 설명한다.

Page 8: 자바 네트워크 소녀 Netty 리뷰

그저�특정�프레임워크의�API를�배우는�수준이라면�배움의�효용가치가�낮지만�이�책의�3-6장은�고급�자바�개념과�설계,�운영�지식등을�얻어갈�수�있는�내용들이�곳곳에�포진해�있음

2부를�열기�전에…

Page 9: 자바 네트워크 소녀 Netty 리뷰

3장 부트스트랩 (1)

▸ 부트스트랩은 네티 기반 애플리케이션의 가장 기본

▸ 네티로 작성한 네트워크 애플리케이션의 동작 방식과 환경을 설정하는 도우미 클래스

▸ 부트스트랩 클래스는 Builder 패턴을 활용하여 메서드 체이닝 방식으로 작성

Page 10: 자바 네트워크 소녀 Netty 리뷰

3장 부트스트랩 (2)

▸ 소켓 입출력 모드를 설정시 다양한 모드를 지원 ▸ 일반적인 소켓, Local, Epoll, SCTP, UDT …

▸ SCTP랑 UDT는 무슨 프로토콜? ▸ “SCTP는 TCP의 연결지향 및 전송보장 특성과 UDP의 메시지 지향 특성을 모두 갖추고 있다…” 하면서 SCTP, UDT도 Note에서 설명

▸ 주요 소켓 옵션에 대한 설명도 놓치지 않고 있다.

다시 한번 확인하자: 기본개념 잘 닦기

Page 11: 자바 네트워크 소녀 Netty 리뷰

4장 채널 파이프라인과 코덱

▸ 네티의 이벤트 실행 방식과 채널, 이벤트, 채널 파이프라인의 관계에 대한 설명

▸ 이 장을 읽으면서 소켓기반의 네트워크 통신의 과정을 어떻게 모델링하여 프레임워크를 만들었는지 디자인 패턴에 대한 노하우까지 엿 볼 수 있었음

▸ 원리가 궁금하면 책에서…

Page 12: 자바 네트워크 소녀 Netty 리뷰

5장 이벤트 모델

▸ 네티의 핵심 내부 구조 “이벤트 루프”와 함께 네티의 이벤트의 발생 및 실행 순서에 대한 내용을 다룸

▸ 멀티스레드 관련된 코멘트들도 유익

▸ 더 자세한 노하우는 5장을 읽어보자!

‘자바 네트워크 소녀 NETTY’ 140P를 참조

“종종�다중�스레드의�장점을�얻기�위해서�스레드�개수를��너무�많이�설정하거나�스레드�개수를�제한하지�않는�실수를�한다.”

“다중�스레드�아키텍처는�자원의�효율적�사용이라는�장점도�있지만��컨텍스트�스위칭�비용과�스레드�경합이라는�단점도�존재한다”

Page 13: 자바 네트워크 소녀 Netty 리뷰

6장 바이트 버퍼

▸ 네티는 자바가 제공하는 바이트 버퍼 대신 자체 바이트 버퍼를 사용

▸ 네티의 바이트 버퍼만 설명하지 않고 자바 NIO의 바이트 버퍼도 다룸

▸ 서점에 가서 책 175-176p를 꼭 읽어보시라!

네티의 바이트 버퍼는 버퍼 풀을 활용한 버퍼의 재사용을 통하여

성능 향상의 도움!

“네티가�제공하는�바이트�버퍼의�구조와�동작�방식을�정확하게�이해하는�것이�높은�성능을�내는�네티�네트워크�애플리케이션을�개발하는�시작점이다.”

‘자바 네트워크 소녀 NETTY’ 181P를 참조

Page 14: 자바 네트워크 소녀 Netty 리뷰

3부 네티 응용

▸ 3부는 이 책의 보너스와 같은 알짜 지식이 이어짐: 키워드만 나열해 보면…

▸ 7장 “네티와 채널 보안”에서 다루는 내용

▸ http 데이터 캡쳐, 피들러 사용, 와이어 샤크, 대칭/비대칭 암호화 방식, SSL/TLS, SSL 인증서와 OpenSSL

▸ 8장 “네티와 서드파티 연동”에서 다루는 내용

▸ 메이븐, 스프링 컨텍스트, Junit (EmbeddedChannel 하나면 네티 애플리케이션 테스트 가능)

▸ 9장 네티로 구현한 API 서버

▸ RESTful API 설계 원칙, HSQLDB, Redis, postman

Page 15: 자바 네트워크 소녀 Netty 리뷰

9장 [실전 응용] 네티로 구현한 API 서버

▸ 네티를 어떻게 활용할 수 있는지 확인할 수 있는 예제

▸ 사용자 인증처리를 위한 REST API서버 구현을 네티로 어떻게 하는지 볼 수 있다.

▸ 소스 실행 시 유의사항

pom.xml에서 mainClass 위치를 바꿔 주어야 함

Page 16: 자바 네트워크 소녀 Netty 리뷰

마무리: 이 책의 장점

▸ 두께는 얇지만 네트워크 프로그램에 필요한 설명을 상세히 다룬다!

▸ 실습 과정의 생략이 없다. 실습 과정 중 잘못 따라할 수 있는 부분까지 감안해서 설명한다.

▸ 소스 다운 받아 바로 실행 가능한 응용예제에서 다양한 도구 및 기술을 활용하고 있어 하나라도 건질 수 있는 지식이 늘어난다.

▸ Wireshark, 피들러, 메이븐, 스프링, OpenSSL, Redis, Junit

Page 17: 자바 네트워크 소녀 Netty 리뷰

▸ 제목: 자바 네트워크 소녀 네티

▸ 책 URL: http://www.hanbit.co.kr/book/look.html?isbn=978-89-6848-224-3

▸ 저자: 정경석

책 정보

Page 18: 자바 네트워크 소녀 Netty 리뷰

감사합니다.