24
맛만 보자 Undertow Jeff Lee

맛만 보자 Undertow

Embed Size (px)

Citation preview

Page 1: 맛만 보자 Undertow

맛만 보자 Undertow

Jeff Lee

Page 2: 맛만 보자 Undertow

Who am i

초콜릿을 14년 동안 받아보지 못한 개발자… (ㅠ.ㅠ )GRD ASKY (그래도 안생겨요)

http://blog.daum.net/dhlh0h34/107

Page 3: 맛만 보자 Undertow

먹통~ 먹통~ 왜~ 왜~

“1초에 30만명 접속" 중국 춘제 기차표 예매사이트 '먹통' 막은 알리바바출처 : http://www.ajunews.com/view/20150120144132775

제주항공 홈페이지 '먹통'…특가 항공권 예매 전쟁 시작출처 : http://www.hankyung.com/news/app/newsview.php?aid=201501206254g

코레일 예매 서비스 먹통…"원인 파악 중"출처 : http://biz.newdaily.co.kr/news/article.html?no=10034418

한국시리즈 예매, 작년에 이어 올해도 먹통출처 : http://m.mk.co.kr/sports/home/2014/1383520

Page 4: 맛만 보자 Undertow

저희 회사 서비스의 특징

서비스 접속의 80% 이상은 데이터베이스를 사용하지 않는다.

우리 회사 서비스는 글로벌을 지향한다.그런데 돈이 부족하다. (ㅠ.ㅠ )

파트너 서버

스마트 폰

데이터 베이스회사 서비스 서버

Page 5: 맛만 보자 Undertow

인터넷 트래픽의 폭발적 증가

PC 모바일 IoThttp://www.moneyone.co.kr/attachfile/images/000043/20130514151019435_N9HT2H6D.png

Page 6: 맛만 보자 Undertow

Nginx versus Apache

동시 접속자가 많아 질수록 ngnix가 apache보다 많은 요청을 처리한다.

동시 접속자가 많아져도 ngnix는 apache처럼 메모리 사용량이 많이 증가 하지 않는다.

http://blog.webfaction.com/2008/12/a-little-holiday-present-10000-reqssec-with-nginx-2/

Page 7: 맛만 보자 Undertow

어떤 마법이 숨어 있을까요?

Apache

Ngnix

Socket Connection Thread

Socket Connection

Socket Connection

Thread

OS Kernel

or

Thread Pool

Socket Connection Thread

Page 8: 맛만 보자 Undertow

Web Framework Benchmarks (EC2)

https://www.techempower.com/benchmarks/#section=data-r9&hw=peak&test=plaintext

Page 9: 맛만 보자 Undertow

Undertow - 나도 물 좋아해요~

저류, 되돌아가는 물결, 역류

Page 10: 맛만 보자 Undertow

Undertow - 넌 누구니?

Undertow has a composition based architecture that allows you to build a web server by combining small single purpose handlers.

- Full Java EE servlet 3.1 container- Low level non-blocking handler

http://undertow.io

Page 11: 맛만 보자 Undertow

왜~ Undertow를 쓸까?

겁니 가벼워요~- core 라이브러리 1M- 단순 웹 서버는 4MB 이하 힙 사이즈에서 동작

프로토콜 바꿔줘요~ (HTTP Upgrade)- HTTP 1.1에서 다른 프로토콜로 변경 해줌.

- Upgrade: websocket

당근~ Web Socket 지원- JSR-356 스펙을 포함한 웹 소켓을 완벽하게 지원

Page 12: 맛만 보자 Undertow

왜~ Undertow를 쓸까?

오~ Servlet 3.1 지원- Java EE servlet 3.1 지원

어디 숨었니?- 애플리케이션 안에 포함 가능- 혼자 작동 가능

앗 너무 유연해~- 미리 만들어진 핸들러를 필요한 만큼 가져다가 사용 가능

Page 13: 맛만 보자 Undertow

근본 있는 Undertow

XNIO비동기 통신 라이브러리 (ex:Netty)SSL 지원http://xnio.jboss.org/

Page 14: 맛만 보자 Undertow

지원하는 프로토콜

HTTPHTTPSAJP(Apache JServ Protocol)

SPDYHTTP2(Draft 15)

Page 15: 맛만 보자 Undertow

미리 만들어진 Handlers

PathVirtual HostPath TemplateDateResourcePredicateHTTP ContinueWebsocketRedirect

TraceHeaderIP Access ControlACLURL DecodingSet AttributeRewriteGraceful ShutdownProxy Peer Address

Page 16: 맛만 보자 Undertow

Show me the code

Method chaining 방식으로 개발

Page 17: 맛만 보자 Undertow

Handler 만들기

Page 18: 맛만 보자 Undertow

File Service

Page 19: 맛만 보자 Undertow

WebSocket

Page 20: 맛만 보자 Undertow

Reverse Proxy

Page 21: 맛만 보자 Undertow

Error Handling

Page 22: 맛만 보자 Undertow

Servlet Deployment

Page 23: 맛만 보자 Undertow

개발 관련 코드 사이트

Undertow Githubhttps://github.com/undertow-io/undertow

JBoss Wildfly Github (웹서버 확장)https://github.com/wildfly/wildfly/tree/master/undertow

Page 24: 맛만 보자 Undertow

훈훈한 마무으~리

서비스 요구 사항에 맞는 프레임워크를 선택하세요.

- 프레임워크는 각자의 목적을 가지고 있습니다.- 프레임워크의 특징을 잘 파악하여야 합니다.- Undertow는 그 선택지 중 하나 입니다.