SlideShare una empresa de Scribd logo
1 de 41
마이크로 서비스에 적합한 오픈소스 WAS는 무엇?
- Tomcat vs. Jetty vs. Undertow 비교
- 차세대 웹 시스템을 위한 JBoss EAP7(Undertow) 소개
웹시스템의 변화
• 단점
• Connection 당 하나의 요청만 처리
• 3-way handshake Overhead
• Header (Cookie) Overhead
• HOL (Head Of Line) Blocking
HTTP/1.1
TCP connection establishment (3-way handshake)
Performance
https://www.percona.com/solutions/optimize
HTTP/1.1
• 성능을 위한 노력들
• Image Spriting
• Minify css/js
• Data URI Scheme
• Domain Sharding
• Load Faster (css top, js bottom)
• CDN Cache
• 기타
• Multiple Connection (Browser)
• Keep Alive
<img
src="data:image/png;base64,iVBORw560KGgoAAAANSUhEUgAAAAUAAA
AFCAYAAACNbyblAAAAertHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBA
AO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt=“Undertow" />
HTTP/2
• 장점
• Multiplexed Streams
• Stream Priorization
• Server Push
본문 전송 시 서버가 알아서 함께 전송 (js, css 등)
• Header Compression (HPACK)
HTTP/1 vs. HTTP/2 비교
http://ruzhekov.com/switching-to-http2-
considerations-optimization-future/
HTTP/1.1 vs HTTP/2
1153288396.rsc.cdn77.org/http2/http1.html
HTTP HTTPS (SSL)
HTTP/1.1 vs HTTP/2
HTTP/2 제약 사항
• ALPN (Application Layer Protocol Negotiation)
TLS (Transport Layer Security) 기반의 확장
• JAVA EE 7 (JDK 8) 에서는 ALPN을 사용 불가
별도의 ALPN 구현체 설치/설정
• JDK 9 에서 포함
• OpenSSL 업그레이드
• Undetow (JBoss EAP 7.1)
• 별도의 설치/설정 과정 없이 JDK 8 에서 가능
• Chrome Browser plugins
• HTTP/2 and SPDY indicator
• HTTP Request Headers
어떻게 HTTP/2를 사용하는 사이트인지 알 수 있을까?
Source: https://chrome.google.com/webstore/detail/http2-and-spdy-indicator/mpbpobfflnpcgagjijhmgnchggcjblin
• 웹시스템의 발전에 따른 요구사항
• 다양한 SNS 서비스의 등장으로 실시간 메세징이나 푸쉬 기술 요구
• 여러 사용자가 함께 문서를 편집하고 참조할 수 있는 글로벌 협업 도구에 대한 요
구
• 웹이나 모바일 환경에서 옥션 서비스나 스포츠 이벤트 , 금융정보에 대한 실시간
제공 등 실시간 정보 제공에 대한 요구 증가
• 실시간 서버 푸쉬나 커뮤니케이션을 위한 기술 요구
• 기존 HTTP를 이용한 클라이언트와 서버 간의 양방향 통신에 대한 요구 증가
• 기존 HTTP를 사용하여 클라이언트가 일정 간격으로 서버에 요청하는
풀링 방식으로는 새로운 요구를 수용하기 어려움
• Comet 이나 Server Sent Event 방식이 있었으나 기술적인 한계와 개방성에 대한
이슈 때문에 많이 확산되지 않음
배경
• 기존 방식이고, HTTP 통신에 의지 할 수 밖에 없다
• 동시 연결 수가 많으면 메모리 등의 자원을 많이 소모한다.
(1 요청 / 응답 헤더 자체는 수 KB)
• HTTP 는 비상태 프로토콜
• 별도로 세션 관리를 해야 함
• 매번 요청되는 Header 크기
기존 HTTP의 문제점
GET /resources/public-data/ HTTP/1.1
Host: bar.other
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130
Minefield/3.1b3pre
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://foo.example/examples/access-control/simpleXSInvocation.html
Origin: http://foo.example
400 Bytes over!
왜 고속 통신이 가능한가
송신 데이터가 "Hello, world "의 경우
• HTTP
• 12 bytes + 400 bytes
→ 412 Bytes
• 97.1 % 이 Header
• WebSocket
• 12 bytes + 6 bytes
→ 18 Bytes
• 33.3 % 이 Header
같은 문자열을 보낼 때 약 23 배의 감소
WebSocket Header
GET / demo HTTP / 1.1 Host
: example.com Connection :
Upgrade
Sec-WebSocket-Key2 : 12998 5 Y3 1 .P00
Sec-WebSocket-Protocol : sample Upgrade :
WebSocket
Sec-WebSocket-Key1 : 4 @ 1 46546xW % 0l 1 5 Origin :
http://example.com ^ n : ds [4U
Request
Response
HTTP / 1.1 101 WebSocket Protocol Handshake
Upgrade :
WebSocket Connection : UpgradeSec-WebSocket-Origin : http://example.
comSec-WebSocket-Location : ws : //example.com/
demo
Sec-WebSocket-Protocol : sample 8jKS'y : G *
Co, Wxa-
Websocket
• 브라우저 지원 문제
• 웹서버의 신뢰 문제
• 만능의 대체 프레임워크 등장
• Node.js & Socket.io
• Vertx & SockJS
WebSocket
WebSocket Use Cases
• Collaborative Apps
• Multiplayer Games
• Multimedia Chat
• Social Feeds
• Financial Tickets
• Clickstream Data
• Sports Updates
• Online Education
• Location-based Apps
• Online Auction
WebSocket
• 활용
• 실시간 고객상담 응대
• 알람
• 실시간 로그
Undertow
• Lightweight
1Mb 이하, 4Mb 미만의 Heap
• Embeddable
• HTTP Upgrade
• WebSocket
• Servlet 3.1
• Flexible
Handlers
Undertow
• JAVA 언어로 작성된 웹서버
• JBoss 가 후원하고, JBoss EAP 7, Wildfly 가 사용하는 기본 웹서버
https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=json
Community & JBoss EAP with Java EE Spec
JBoss 웹컨테이너 진화
• 기존의 Apache 와 같은 네이티브
웹서버를 사용하지 않고,
로드 밸런스 설정 가능
• Java 로 구현된 로드 밸런스
• mod_cluster 구현
• HTTP, AJP, HTTP/2
• Websocket
Load Balancer
Load Balancer
• 대체 가능 한가
Load Balancer
• IP 주소 한개에 여러 도메인으로 웹사이트 운영하기
• Virtual Host
NameVirtualHostHandler vhostHandler =
Handlers.virtualHost();
ProxyHandler wikiProxyHandler =
ProxyHandler.builder().setProxyClient(
new LoadBalancingProxyClient().addHost(
new URI("http://localhost:8280"))).build();
vhostHandler.addHost("wiki.opennaru.com",
wikiProxyHandler);
<host name="other-host" alias="www.opennaru.com">
Load Balancer
• 원격 서버에서 문서를 가져와 클라이언트에 전달하는 Proxy
• Reverse Proxy
LoadBalancingProxyClient
loadBalancer = new
LoadBalancingProxyClient()
.addHost(new
URI("http://localhost:8180
"));
<location name="/"
handler="myproxy"/>
<reverse-proxy
name="myproxy">
<host
name="http://localhost:8180"
path="/"/>
</reverse-proxy>
Load Balancer
• URL 을 조작 할 수 있는 강력 한 모듈
정규식, 표현식을 통해 강력하게 이용
• Rewrite
• Redirect
PredicatesHandler predicatesHandler = Handlers.predicates(
PredicatedHandlersParser.parse(“” +
“path-prefix('/ddakker') -> {rewrite['/opennaru'];} n" +
"regex('/test(.*)') -> {rewrite['/abc/test/${1}'];} n" +
"regex('/redirect1$') -> redirect['/redirect1/ed'] n" +
<filter-ref name="rewrite-test" predicate="regex('^/test(.*)$')"/>
<rewrite name="rewrite-test" target="/abc/test$${1}.jsp"
redirect="false"/>
Load Balancer
• 클라이언트의 IP 주소에 따라 접근 제어
• IP Address Access Controller
• WEB-INF/undertow-handlers.conf
IPAddressAccessControlHandler handler = new
IPAddressAccessControlHandler()
.setDefaultAllow(false)
.addAllow(“localhost") .addAllow("127.0.0.1"));
<expression-filter name="ipAccess" expression="path-prefix[/] ->
ip-access-control[default-allow=false, acl={' localhost allow',
'127.0.0.1 allow'}]"/>
Load Balancer
• WAS Clustring 을 위한 cluster
• mod_cluster
• 동적 구성
• 서버 측 부하 계산
• 세밀한 생명주기 제어
• http, https, ajp 지원
final ModCluster modCluster
=
ModCluster.builder(worker).b
uild();
modCluster.start();
server.start();
<filter-ref name="b_eap71" /
<mod-cluster name="b_eap71" advertise-socket-
binding="modcluster" management-socket-binding="http"
enable-http2="true" security-key="app" />
JBoss EAP (Wildfly)
• Undertow Filter
• custom-filter
• error-page
• expression-filter
• gzip
• mod-cluster
• request-limit
• response-header
• rewrite
<host name="default-host" alias="localhost">
<filter-ref name="rewrite-test" predicate="regex('/test1') "/>
..
<filters>
<rewrite name=“rewrite-test" target="/abc/test1"
redirect="false"/>
• Load Balancer
• 세밀한 제어
(Suspend, Resume, Gracefull or mod_cluster mgr)
• Only with JAVA
• Static Content
• Native Module 필요 없음
WAS 역할의 변화
JAVA
Server #1Server #1
L4 Switch
Server #3
Undertow (EAP)
instance11
Undertow (EAP)
instance12
Undertow (EAP)
Balancer #1
Server #4
Undertow (EAP)
instance21
Undertow (EAP)
instance22
Undertow (EAP)
Balancer #2M
O
D
C
L
U
S
T
E
R
“살아 남는 종(種)은 강한 종이 아니고,
또 우수한 종도 아니다.
변화에 적응하는 종이다. ”
- Charles Darwin, 1809
제품이나 서비스에 관한 문의
콜 센터 :02-469-5426 ( 휴대폰 : 010-2243-3394 )
전자메일:sales@opennaru.com
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?

Más contenido relacionado

La actualidad más candente

서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해중선 곽
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)용호 최
 
svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드Insub Lee
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법Ji-Woong Choi
 
Docker swarm introduction
Docker swarm introductionDocker swarm introduction
Docker swarm introductionEvan Lin
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법pyrasis
 
모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)Eunwoo Cho
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기Ji-Woong Choi
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
JBoss EAP 설치 가이드
JBoss EAP 설치 가이드 JBoss EAP 설치 가이드
JBoss EAP 설치 가이드 Opennaru, inc.
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)Ji-Woong Choi
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
Best practices for ansible
Best practices for ansibleBest practices for ansible
Best practices for ansibleGeorge Shuklin
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git민태 김
 

La actualidad más candente (20)

서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)
 
svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드svn 능력자를 위한 git 개념 가이드
svn 능력자를 위한 git 개념 가이드
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
 
Docker swarm introduction
Docker swarm introductionDocker swarm introduction
Docker swarm introduction
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 
모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
JBoss EAP 설치 가이드
JBoss EAP 설치 가이드 JBoss EAP 설치 가이드
JBoss EAP 설치 가이드
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
 
Git undo
Git undoGit undo
Git undo
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
Best practices for ansible
Best practices for ansibleBest practices for ansible
Best practices for ansible
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
 

Similar a 200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?

WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징trustinlee
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How ToJi-Woong Choi
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)jeongseokoh
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)DK Lee
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 
한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구ByungJoon Lee
 
Restful web service
Restful web serviceRestful web service
Restful web servicesunguen lee
 
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)Opennaru, inc.
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE 흥래 김
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js연웅 조
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure rockplace
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기Huey Park
 
vert.x 를 활용한 분산서버 개발하기
vert.x 를 활용한 분산서버 개발하기vert.x 를 활용한 분산서버 개발하기
vert.x 를 활용한 분산서버 개발하기John Kim
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안Lee Ji Eun
 
113 deview2013 varnish-day1_track1_session3_1013
113 deview2013 varnish-day1_track1_session3_1013113 deview2013 varnish-day1_track1_session3_1013
113 deview2013 varnish-day1_track1_session3_1013NAVER D2
 
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선XpressEngine
 

Similar a 200.마이크로서비스에 적합한 오픈소스 WAS는 무엇? (20)

WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To
 
Servlet3
Servlet3Servlet3
Servlet3
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 
Restful web service
Restful web serviceRestful web service
Restful web service
 
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)02.JBOSS EAP7(FOR CONTAINER/CLOUD)
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기
 
vert.x 를 활용한 분산서버 개발하기
vert.x 를 활용한 분산서버 개발하기vert.x 를 활용한 분산서버 개발하기
vert.x 를 활용한 분산서버 개발하기
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안
 
113 deview2013 varnish-day1_track1_session3_1013
113 deview2013 varnish-day1_track1_session3_1013113 deview2013 varnish-day1_track1_session3_1013
113 deview2013 varnish-day1_track1_session3_1013
 
Html5 performance
Html5 performanceHtml5 performance
Html5 performance
 
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
 

Más de Opennaru, inc.

머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해
머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해
머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해Opennaru, inc.
 
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처Opennaru, inc.
 
컨테이너 기술의 역사와 발전 단계
컨테이너 기술의 역사와 발전 단계컨테이너 기술의 역사와 발전 단계
컨테이너 기술의 역사와 발전 단계Opennaru, inc.
 
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?Opennaru, inc.
 
컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점Opennaru, inc.
 
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?Opennaru, inc.
 
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모Opennaru, inc.
 
가상화 기술 VS 컨테이너의 집적도 비교 데모
가상화 기술 VS 컨테이너의 집적도 비교 데모가상화 기술 VS 컨테이너의 집적도 비교 데모
가상화 기술 VS 컨테이너의 집적도 비교 데모Opennaru, inc.
 
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모Opennaru, inc.
 
마이크로서비스 아키텍처 (MSA) 데모
마이크로서비스 아키텍처 (MSA) 데모마이크로서비스 아키텍처 (MSA) 데모
마이크로서비스 아키텍처 (MSA) 데모Opennaru, inc.
 
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합Opennaru, inc.
 
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모Opennaru, inc.
 
자동 확장 자원 풀 – Auto Scaling 데모
자동 확장 자원 풀 – Auto Scaling 데모자동 확장 자원 풀 – Auto Scaling 데모
자동 확장 자원 풀 – Auto Scaling 데모Opennaru, inc.
 
자동 장애 복구 데모 – Auto Healing 데모
자동 장애 복구 데모 – Auto Healing 데모자동 장애 복구 데모 – Auto Healing 데모
자동 장애 복구 데모 – Auto Healing 데모Opennaru, inc.
 
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모Opennaru, inc.
 
PaaS 환경에서 전자 정부 프레임워크 배포 데모
PaaS 환경에서 전자 정부 프레임워크 배포 데모PaaS 환경에서 전자 정부 프레임워크 배포 데모
PaaS 환경에서 전자 정부 프레임워크 배포 데모Opennaru, inc.
 
PaaS 환경에서 워드프레스 구축하기 데모
PaaS 환경에서 워드프레스 구축하기 데모PaaS 환경에서 워드프레스 구축하기 데모
PaaS 환경에서 워드프레스 구축하기 데모Opennaru, inc.
 
PaaS 환경에서 다중 사용자를 위한 머신 러닝 플랫폼 구축 데모
PaaS 환경에서 다중 사용자를 위한  머신 러닝 플랫폼 구축 데모PaaS 환경에서 다중 사용자를 위한  머신 러닝 플랫폼 구축 데모
PaaS 환경에서 다중 사용자를 위한 머신 러닝 플랫폼 구축 데모Opennaru, inc.
 
16. understanding and implementing msa concepts pub
16. understanding and implementing msa concepts pub16. understanding and implementing msa concepts pub
16. understanding and implementing msa concepts pubOpennaru, inc.
 
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들개발자가 PaaS 환경에서 반드시 알아야 하는 기술들
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들Opennaru, inc.
 

Más de Opennaru, inc. (20)

머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해
머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해
머신 중심에서 애플리케이션 중심으로 불변의 인프라스트럭처 개념 이해
 
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처
쿠버네티스를 이해하려면 반드시 알아야 하는 불변의 인프라스트럭처
 
컨테이너 기술의 역사와 발전 단계
컨테이너 기술의 역사와 발전 단계컨테이너 기술의 역사와 발전 단계
컨테이너 기술의 역사와 발전 단계
 
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?
구글은 왜 쿠버네티스를 오픈소스로 공개했을까요?
 
컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점
 
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?
컨테이너 개념의 이해 - 물류 분야의 컨테이너와 다른점은?
 
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
VM과 컨테이너 상에서 Apache & Tomcat 설치, 실행 그리고 배포 데모
 
가상화 기술 VS 컨테이너의 집적도 비교 데모
가상화 기술 VS 컨테이너의 집적도 비교 데모가상화 기술 VS 컨테이너의 집적도 비교 데모
가상화 기술 VS 컨테이너의 집적도 비교 데모
 
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
PaaS 환경에서 기업 메신저 서비스 10분 만에 구축하기 데모
 
마이크로서비스 아키텍처 (MSA) 데모
마이크로서비스 아키텍처 (MSA) 데모마이크로서비스 아키텍처 (MSA) 데모
마이크로서비스 아키텍처 (MSA) 데모
 
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합
클라우드 환경에서의 모니터링의 특징과 구현 방안 로그통합
 
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
컨테이너 상에서의 서비스 무중단 배포 방법 비교 데모
 
자동 확장 자원 풀 – Auto Scaling 데모
자동 확장 자원 풀 – Auto Scaling 데모자동 확장 자원 풀 – Auto Scaling 데모
자동 확장 자원 풀 – Auto Scaling 데모
 
자동 장애 복구 데모 – Auto Healing 데모
자동 장애 복구 데모 – Auto Healing 데모자동 장애 복구 데모 – Auto Healing 데모
자동 장애 복구 데모 – Auto Healing 데모
 
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
멀티 애플리케이션 환경에서 부하에 따른 자동 자원 할당 데모
 
PaaS 환경에서 전자 정부 프레임워크 배포 데모
PaaS 환경에서 전자 정부 프레임워크 배포 데모PaaS 환경에서 전자 정부 프레임워크 배포 데모
PaaS 환경에서 전자 정부 프레임워크 배포 데모
 
PaaS 환경에서 워드프레스 구축하기 데모
PaaS 환경에서 워드프레스 구축하기 데모PaaS 환경에서 워드프레스 구축하기 데모
PaaS 환경에서 워드프레스 구축하기 데모
 
PaaS 환경에서 다중 사용자를 위한 머신 러닝 플랫폼 구축 데모
PaaS 환경에서 다중 사용자를 위한  머신 러닝 플랫폼 구축 데모PaaS 환경에서 다중 사용자를 위한  머신 러닝 플랫폼 구축 데모
PaaS 환경에서 다중 사용자를 위한 머신 러닝 플랫폼 구축 데모
 
16. understanding and implementing msa concepts pub
16. understanding and implementing msa concepts pub16. understanding and implementing msa concepts pub
16. understanding and implementing msa concepts pub
 
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들개발자가 PaaS 환경에서 반드시 알아야 하는 기술들
개발자가 PaaS 환경에서 반드시 알아야 하는 기술들
 

200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?

  • 1. 마이크로 서비스에 적합한 오픈소스 WAS는 무엇? - Tomcat vs. Jetty vs. Undertow 비교 - 차세대 웹 시스템을 위한 JBoss EAP7(Undertow) 소개
  • 3.
  • 4. • 단점 • Connection 당 하나의 요청만 처리 • 3-way handshake Overhead • Header (Cookie) Overhead • HOL (Head Of Line) Blocking HTTP/1.1
  • 5. TCP connection establishment (3-way handshake)
  • 7. HTTP/1.1 • 성능을 위한 노력들 • Image Spriting • Minify css/js • Data URI Scheme • Domain Sharding • Load Faster (css top, js bottom) • CDN Cache • 기타 • Multiple Connection (Browser) • Keep Alive <img src="data:image/png;base64,iVBORw560KGgoAAAANSUhEUgAAAAUAAA AFCAYAAACNbyblAAAAertHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBA AO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt=“Undertow" />
  • 8.
  • 9. HTTP/2 • 장점 • Multiplexed Streams • Stream Priorization • Server Push 본문 전송 시 서버가 알아서 함께 전송 (js, css 등) • Header Compression (HPACK)
  • 10. HTTP/1 vs. HTTP/2 비교 http://ruzhekov.com/switching-to-http2- considerations-optimization-future/
  • 13. HTTP/2 제약 사항 • ALPN (Application Layer Protocol Negotiation) TLS (Transport Layer Security) 기반의 확장 • JAVA EE 7 (JDK 8) 에서는 ALPN을 사용 불가 별도의 ALPN 구현체 설치/설정 • JDK 9 에서 포함 • OpenSSL 업그레이드 • Undetow (JBoss EAP 7.1) • 별도의 설치/설정 과정 없이 JDK 8 에서 가능
  • 14. • Chrome Browser plugins • HTTP/2 and SPDY indicator • HTTP Request Headers 어떻게 HTTP/2를 사용하는 사이트인지 알 수 있을까? Source: https://chrome.google.com/webstore/detail/http2-and-spdy-indicator/mpbpobfflnpcgagjijhmgnchggcjblin
  • 15.
  • 16. • 웹시스템의 발전에 따른 요구사항 • 다양한 SNS 서비스의 등장으로 실시간 메세징이나 푸쉬 기술 요구 • 여러 사용자가 함께 문서를 편집하고 참조할 수 있는 글로벌 협업 도구에 대한 요 구 • 웹이나 모바일 환경에서 옥션 서비스나 스포츠 이벤트 , 금융정보에 대한 실시간 제공 등 실시간 정보 제공에 대한 요구 증가 • 실시간 서버 푸쉬나 커뮤니케이션을 위한 기술 요구 • 기존 HTTP를 이용한 클라이언트와 서버 간의 양방향 통신에 대한 요구 증가 • 기존 HTTP를 사용하여 클라이언트가 일정 간격으로 서버에 요청하는 풀링 방식으로는 새로운 요구를 수용하기 어려움 • Comet 이나 Server Sent Event 방식이 있었으나 기술적인 한계와 개방성에 대한 이슈 때문에 많이 확산되지 않음 배경
  • 17. • 기존 방식이고, HTTP 통신에 의지 할 수 밖에 없다 • 동시 연결 수가 많으면 메모리 등의 자원을 많이 소모한다. (1 요청 / 응답 헤더 자체는 수 KB) • HTTP 는 비상태 프로토콜 • 별도로 세션 관리를 해야 함 • 매번 요청되는 Header 크기 기존 HTTP의 문제점 GET /resources/public-data/ HTTP/1.1 Host: bar.other User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130 Minefield/3.1b3pre Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Connection: keep-alive Referer: http://foo.example/examples/access-control/simpleXSInvocation.html Origin: http://foo.example 400 Bytes over!
  • 18. 왜 고속 통신이 가능한가 송신 데이터가 "Hello, world "의 경우 • HTTP • 12 bytes + 400 bytes → 412 Bytes • 97.1 % 이 Header • WebSocket • 12 bytes + 6 bytes → 18 Bytes • 33.3 % 이 Header 같은 문자열을 보낼 때 약 23 배의 감소
  • 19. WebSocket Header GET / demo HTTP / 1.1 Host : example.com Connection : Upgrade Sec-WebSocket-Key2 : 12998 5 Y3 1 .P00 Sec-WebSocket-Protocol : sample Upgrade : WebSocket Sec-WebSocket-Key1 : 4 @ 1 46546xW % 0l 1 5 Origin : http://example.com ^ n : ds [4U Request Response HTTP / 1.1 101 WebSocket Protocol Handshake Upgrade : WebSocket Connection : UpgradeSec-WebSocket-Origin : http://example. comSec-WebSocket-Location : ws : //example.com/ demo Sec-WebSocket-Protocol : sample 8jKS'y : G * Co, Wxa-
  • 20. Websocket • 브라우저 지원 문제 • 웹서버의 신뢰 문제 • 만능의 대체 프레임워크 등장 • Node.js & Socket.io • Vertx & SockJS
  • 22. WebSocket Use Cases • Collaborative Apps • Multiplayer Games • Multimedia Chat • Social Feeds • Financial Tickets • Clickstream Data • Sports Updates • Online Education • Location-based Apps • Online Auction
  • 23. WebSocket • 활용 • 실시간 고객상담 응대 • 알람 • 실시간 로그
  • 24.
  • 25. Undertow • Lightweight 1Mb 이하, 4Mb 미만의 Heap • Embeddable • HTTP Upgrade • WebSocket • Servlet 3.1 • Flexible Handlers
  • 26. Undertow • JAVA 언어로 작성된 웹서버 • JBoss 가 후원하고, JBoss EAP 7, Wildfly 가 사용하는 기본 웹서버 https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=json
  • 27. Community & JBoss EAP with Java EE Spec
  • 29. • 기존의 Apache 와 같은 네이티브 웹서버를 사용하지 않고, 로드 밸런스 설정 가능 • Java 로 구현된 로드 밸런스 • mod_cluster 구현 • HTTP, AJP, HTTP/2 • Websocket Load Balancer
  • 30. Load Balancer • 대체 가능 한가
  • 31. Load Balancer • IP 주소 한개에 여러 도메인으로 웹사이트 운영하기 • Virtual Host NameVirtualHostHandler vhostHandler = Handlers.virtualHost(); ProxyHandler wikiProxyHandler = ProxyHandler.builder().setProxyClient( new LoadBalancingProxyClient().addHost( new URI("http://localhost:8280"))).build(); vhostHandler.addHost("wiki.opennaru.com", wikiProxyHandler); <host name="other-host" alias="www.opennaru.com">
  • 32. Load Balancer • 원격 서버에서 문서를 가져와 클라이언트에 전달하는 Proxy • Reverse Proxy LoadBalancingProxyClient loadBalancer = new LoadBalancingProxyClient() .addHost(new URI("http://localhost:8180 ")); <location name="/" handler="myproxy"/> <reverse-proxy name="myproxy"> <host name="http://localhost:8180" path="/"/> </reverse-proxy>
  • 33. Load Balancer • URL 을 조작 할 수 있는 강력 한 모듈 정규식, 표현식을 통해 강력하게 이용 • Rewrite • Redirect PredicatesHandler predicatesHandler = Handlers.predicates( PredicatedHandlersParser.parse(“” + “path-prefix('/ddakker') -> {rewrite['/opennaru'];} n" + "regex('/test(.*)') -> {rewrite['/abc/test/${1}'];} n" + "regex('/redirect1$') -> redirect['/redirect1/ed'] n" + <filter-ref name="rewrite-test" predicate="regex('^/test(.*)$')"/> <rewrite name="rewrite-test" target="/abc/test$${1}.jsp" redirect="false"/>
  • 34. Load Balancer • 클라이언트의 IP 주소에 따라 접근 제어 • IP Address Access Controller • WEB-INF/undertow-handlers.conf IPAddressAccessControlHandler handler = new IPAddressAccessControlHandler() .setDefaultAllow(false) .addAllow(“localhost") .addAllow("127.0.0.1")); <expression-filter name="ipAccess" expression="path-prefix[/] -> ip-access-control[default-allow=false, acl={' localhost allow', '127.0.0.1 allow'}]"/>
  • 35. Load Balancer • WAS Clustring 을 위한 cluster • mod_cluster • 동적 구성 • 서버 측 부하 계산 • 세밀한 생명주기 제어 • http, https, ajp 지원 final ModCluster modCluster = ModCluster.builder(worker).b uild(); modCluster.start(); server.start(); <filter-ref name="b_eap71" / <mod-cluster name="b_eap71" advertise-socket- binding="modcluster" management-socket-binding="http" enable-http2="true" security-key="app" />
  • 36. JBoss EAP (Wildfly) • Undertow Filter • custom-filter • error-page • expression-filter • gzip • mod-cluster • request-limit • response-header • rewrite <host name="default-host" alias="localhost"> <filter-ref name="rewrite-test" predicate="regex('/test1') "/> .. <filters> <rewrite name=“rewrite-test" target="/abc/test1" redirect="false"/>
  • 37. • Load Balancer • 세밀한 제어 (Suspend, Resume, Gracefull or mod_cluster mgr) • Only with JAVA • Static Content • Native Module 필요 없음 WAS 역할의 변화 JAVA Server #1Server #1 L4 Switch Server #3 Undertow (EAP) instance11 Undertow (EAP) instance12 Undertow (EAP) Balancer #1 Server #4 Undertow (EAP) instance21 Undertow (EAP) instance22 Undertow (EAP) Balancer #2M O D C L U S T E R
  • 38. “살아 남는 종(種)은 강한 종이 아니고, 또 우수한 종도 아니다. 변화에 적응하는 종이다. ” - Charles Darwin, 1809
  • 39.
  • 40. 제품이나 서비스에 관한 문의 콜 센터 :02-469-5426 ( 휴대폰 : 010-2243-3394 ) 전자메일:sales@opennaru.com

Notas del editor

  1. 우선 문제점 Header User-Agent
  2. 성능을 향상 시키기위한 노력
  3. 그러한 노력들은
  4. Multiplexed -> 다중 전송 기술로서 기존 Connection Keep-Alive, Pipelining 의 대안 Google SPDY 가 오픈소스화 하면서 기반 기술이 JAVA EE 스펙으로 포함
  5. SSL 인증서 비용 HTTP Upgrade 어플리케이션 계층 프로토콜 협상
  6. 1. Ajax, Hidden iFrmae, 더 나아가 Comet
  7. 이렇게 기존의 HTTP는 이러한 실시간성 요구사항을 충족 시킬 수 없었습니다.
  8. 비 연결형이기도 하고, 불필요한 오버헤드가 있기 때문입니다.
  9. 그런데도 불구하고, 이러한 기술은 활성화가 잘 되지 못 했습니다.
  10. 구조의 복잡도 증가 러닝 커브
  11. 1. 하지만 이제는 이러한 노력을 덜 해도 되는 시점이 왔다
  12. 1. Spring boot undertow
  13. 1. 왜 Tomcat을 버리고 Undertow? Module -> logging, web, datasource, cluster,
  14. 또 Undertow 의 특징으로는 로드 발란서이기도 합니다.
  15. 그럼 성능은 그렇다 쳐도 기존 웹서버들의 기능들은 제공 하느냐? 한번 살펴보도록 하겠습니다.
  16. Undertow 는 JBoss EAP 에서 사용되는 웹서버라고 앞서 설명 했습니다. 따라서 모든 Undertow 설정들을 JBoss EAP 설정파일 레벨에서도 동일하게 이용 할 수 있습니다.
  17. devops, WEB-INF/handlers.conf
  18. 모두 java C Native Module 필요 없이 성능 보장 Static content -> WAS -> 장점 -> 배포 시 WEB/WAS 버전 차이 문제 mod_cluster 동적 관리
  19. 현재 웹서버, 서블릿 엔진은 이미 성능 적인 측면에서 거의 평준화 되었습니다. 하지만 앞서 설명한 세밀한 유입 제어가 뒷받침 되지 않는다면 배포나 특정 서버 작업 시에 안정성을 확보하기 어렵습니다. 하지만 Undertow 에서 제공하는 세밀한 유입 제어 부분을 활용한다면 배포 및 특정 작업 시에도 안정성을 확보하여 더욱 품질 좋은 서비스를 할 수 있게 될 것입니다. 그렇기에 저희는 엔터프라이즈 환경에서 Undertow, JBoss EAP 를 적극 추천합니다.