SlideShare a Scribd company logo
Sarc Summit Summer 2016
by sarc.io
June 11
삵
Tomcat 마이그레이션 도전하기
Jins Choi
sarc.io
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
WebLogic
WebSphere
JEUS
JBoss EAP
WildFly
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Middleware
Web Application Server
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Apache Tomcat®
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
마이그레이션,
단지 WAS만 Tomcat으로 바꾸는 것인가?
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
단지 WAS만 Tomcat으로 바꾸는 것이 맞다면
다음 사항이 변경없이 유지되는지 확인
• Host
• OS
• File system
• Java
• Front-end
• Back-end
• Interface
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Java
IBM J9
HP/UX
Oracle
OpenJDK
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
JVM
마이그레이션 전과 후 JVM 간 확인해야 할 것들
• Java 제품, 버전
• 메모리 설정
• GC 정책을 포함한 GC 관련 옵션
• 기타 JVM 옵션
고려 요소
• 메모리 설정은 그대로 유지할 것인가?
• 현재 사용하고 있는 옵션을 계속 사용할 수 있는가?
• 현재 GC 정책이 새로운 호스트, 새로운 Java 버전에 적합한가?
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Tomcat 버전 선택
Tomcat 버전 Java 버전 Servlet Spec JSP Spec EL Spec
6.0.x 5 이상 2.5 2.1 2.1
7.0.x 6 이상 3.0 2.2 2.2
8.0.x 7 이상 3.1 2.3 3.0
8.5.x 7 이상 3.1 2.3 3.0
9.0.x 8 이상 4.0 ? ?
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Class Loader
기존 WAS와 Tomcat의 Class Loading 순서 비교 확인
1. Bootstrap
2. WEB-INF/classes
3. WEB-INF/lib의 jar 파일
4. System
5. $CATALINA_BASE/lib의 unpacked 클래스
6. $CATALINA_BASE/lib의 jar 파일
7. $CATALINA_HOME/lib의 unpacked 클래스
8. $CATALINA_HOME/lib의 jar 파일
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Connector / Port
Tomcat은 HTTP 및 AJP 방식의 Connector/Port 설정 가능
• HTTP : HTTP 요청 처리가 가능한 하나의 완성된 WEB 서버 포트
• AJP : Front-end에서 AJP 방식으로 연결 시 연동 포트
Front-end 요소 및 연결 방식에 따라 Port 방식이 달라진다.
• 최전방에 Tomcat 존재
• Front-end에 N/W 스위치 존재
• Front-end에 WEB 서버가 존재 (HTTP 방식으로 연결)
• Front-end에 WEB 서버가 존재 (AJP 방식으로 연결)
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Connector / Thread Pool 용량
기존 용량 설정 분석 결과를 바탕으로
Tomcat에 최적화된 Thread Pool 용량을 설정
• 호스트가 변경되면 CPU 파워에 의하여 처리 성능이 달라짐
• 동시 접속자, 처리 건수, Back-end(DB) 응답 속도 등 고려
• Front-end의 WEB-WAS Connection Pool 용량 고려
• Active-Active 혹은 Active-Standby 등 아키텍처 고려
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Connector / Thread Pool 방식
기존 Thread 방식을 분석
• 혹시 WebLogic의 Self-tuning 기능을 사용?
• 혹시 WebLogic의 Performace Pack(Native I/O)을 사용?
Tomcat은 어떤 Connector Protocol을 사용할 것인가?
• Blocking Java Connector (Http11Protocol)
• Non-blocking Java Connector (Http11NioProtocol)
• APR/Native Connector (Http11AprProtocol)
▶ Tomcat 8.5와 9.0은 BIO(Blocking Java Connector) 사용 불가
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
JDBC Driver
Oracle
IBM DB2
SQLServer
MySQL
MariaDB
PostgreSQL
PPAS
JDBC Driver는
• DB 버전
• Tomcat의 Java 버전
등을 확인하여
기존 파일을 그대로 사용하거나
새로 다운로드 받은 후
Tomcat에 적용
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
DataSource / Connection Pool
WAS는 고유의 DB 관련 설정 방법 보유
[ 예 : WebLogic 8.1 ]
• Initial Capacity, Maximum Capacity, Capacity Increment
• Statement Cache Type, Statement Cache Size
• Remove Infected Connections Enabled
• Test Frequency, Test Reserved Connections
• Connection Creation Retry Frequency, 등등 …
어떻게 Tomcat 설정으로 잘 옮길 것인가?
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Log
새로운 Log 파일
• Log 파일의 위치
• Log 파일 명
• Log 파일 내용 및 주요 키워드, 에러 패턴/코드
• Log rotation
Access Log
• 현재 Access Log 생성 여부 확인
• Log format
• 분석 툴과의 연계, 참조
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Session Cluster
현재 Session Cluster 기능을 사용한다면
어떠한 Session Cluster 방식을 사용하는지 확인
• WAS가 제공하는 기능 사용
• 별도의 Session Cluster 솔루션 사용
만약 WAS의 Session Cluster 기능을 사용한다면
• Tomcat의 Session Cluster 기능으로 마이그레이션
• web.xml 내에 <distributable/> element 추가
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Interface
SSO, LDAP, TP-Monitor 등과의 Interface 확인
만약 타 시스템이 마이그레이션 대상 시스템으로
WAS의 특정 Port를 통해 HTTP로 연결하고 있다면
• 해당 시스템에 새로운 정보(IP, 도메인, Port 등)를 전달
그런데 만약 Tomcat에 단지 AJP Port만 개방하였다면
Interface를 위한 Port 설정을 고민
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Web Application
웹 애플리케이션은
• 표준을 엄격히 준수한 코드인가
• Spec에 따라 web.xml에 변경할 부분은 없는가
• 특정 WAS만 용인하는 잘못된 문법을 사용하지 않았는가
• 특정 WAS만 제공하는 라이브러리를 사용하지 않았는가
특정 WAS만의 기능 사용 여부 확인
• weblogic.xml, jboss-web.xml, jeus-web-dd.xml
• Auto Reload, Hot Deployment, JSP Precompile
• Session ID Name, HTTP Header, Compression
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
OS / Native Environment
OS 상에서 확인해야 할 것
• Profile (.profile, .bash_profile)
• $LANG
• $LD_LIBRARY_PATH or $LIBPATH
• Network Parameter
혹시 Native Library를 사용하고 있지는 않은가
• 새로운 OS 및 새로운 bit와 호환되는가
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Test
기능 테스트
• 검증 시나리오
• 역할, 일정
성능 테스트
• 성능 기준
• Apache Bench, Apache JMeter, nGrinder, Load Runner
• (혹은 가내 수공업?)
• 테스트 중 모니터링 방안, 도구
• 역할, 일정
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Monitoring
Tomcat을 어떻게 모니터링 할 것인가?
• OS 레벨 모니터링 방법의 변화
• 현재 모니터링 도구의 Tomcat 지원 여부
• 오픈 소스 모니터링 도구를 사용하고자 하는가
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
Operation
Tomcat 운영 방법론과 각종 도구 사용의 변화
• 관리 항목의 변화
• 장애 발생 시 대응 절차
• 백업/복구 절차
• Java(JDK)
• 배포 환경
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
이사라는 것…
Sarc Summit Summer 2016
by sarc.io
Tomcat 마이그레이션 도전하기삵
고맙습니다!

More Related Content

What's hot

Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Serhat Can
 
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Flink Forward
 
WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
Takakiyo Tanaka
 
Spring Core
Spring CoreSpring Core
Spring Core
Pushan Bhattacharya
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
NAVER D2
 
Spring Boot Interview Questions | Edureka
Spring Boot Interview Questions | EdurekaSpring Boot Interview Questions | Edureka
Spring Boot Interview Questions | Edureka
Edureka!
 
Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2teejug
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기
GunHee Lee
 
Using Queryable State for Fun and Profit
Using Queryable State for Fun and ProfitUsing Queryable State for Fun and Profit
Using Queryable State for Fun and Profit
Flink Forward
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
jieunsys
 
Maven
MavenMaven
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
Arawn Park
 
Service mesh(istio) monitoring
Service mesh(istio) monitoringService mesh(istio) monitoring
Service mesh(istio) monitoring
Jeong-Ho Na
 
Messaging queue - Kafka
Messaging queue - KafkaMessaging queue - Kafka
Messaging queue - Kafka
Mayank Bansal
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
Purbarun Chakrabarti
 
Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
HostedbyConfluent
 
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
문기 박
 
REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developers
Patrick Savalle
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
Sandeep Chawla
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
Thomas Wuerthinger
 

What's hot (20)

Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
 
WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51WebSphere Application Server V8.5.5Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
WebSphere Application Server V8.5.5 Libertyプロファイルのご紹介 #jjug_ccc #ccc_r51
 
Spring Core
Spring CoreSpring Core
Spring Core
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
 
Spring Boot Interview Questions | Edureka
Spring Boot Interview Questions | EdurekaSpring Boot Interview Questions | Edureka
Spring Boot Interview Questions | Edureka
 
Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기
 
Using Queryable State for Fun and Profit
Using Queryable State for Fun and ProfitUsing Queryable State for Fun and Profit
Using Queryable State for Fun and Profit
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
 
Maven
MavenMaven
Maven
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
Service mesh(istio) monitoring
Service mesh(istio) monitoringService mesh(istio) monitoring
Service mesh(istio) monitoring
 
Messaging queue - Kafka
Messaging queue - KafkaMessaging queue - Kafka
Messaging queue - Kafka
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 
Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
Introducing KRaft: Kafka Without Zookeeper With Colin McCabe | Current 2022
 
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
 
REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developers
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
 

Viewers also liked

Application Performance Tuning Basic (Paul S.J.Kim)
Application Performance Tuning Basic (Paul S.J.Kim)Application Performance Tuning Basic (Paul S.J.Kim)
Application Performance Tuning Basic (Paul S.J.Kim)
삵 (sarc.io)
 
삵 사이트에서 Technical Note 작성하기
삵 사이트에서 Technical Note 작성하기삵 사이트에서 Technical Note 작성하기
삵 사이트에서 Technical Note 작성하기
삵 (sarc.io)
 
가트너와 함께하는 IT Trend (승리자v)
가트너와 함께하는 IT Trend (승리자v)가트너와 함께하는 IT Trend (승리자v)
가트너와 함께하는 IT Trend (승리자v)
삵 (sarc.io)
 
Trace End-User Request (조동진)
Trace End-User Request (조동진)Trace End-User Request (조동진)
Trace End-User Request (조동진)
삵 (sarc.io)
 
인프라 성능 데이터 분석 시작하기 (김아령)
인프라 성능 데이터 분석 시작하기 (김아령)인프라 성능 데이터 분석 시작하기 (김아령)
인프라 성능 데이터 분석 시작하기 (김아령)
삵 (sarc.io)
 
NoSQL?? (marc)
NoSQL?? (marc)NoSQL?? (marc)
NoSQL?? (marc)
삵 (sarc.io)
 
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
삵 (sarc.io)
 

Viewers also liked (7)

Application Performance Tuning Basic (Paul S.J.Kim)
Application Performance Tuning Basic (Paul S.J.Kim)Application Performance Tuning Basic (Paul S.J.Kim)
Application Performance Tuning Basic (Paul S.J.Kim)
 
삵 사이트에서 Technical Note 작성하기
삵 사이트에서 Technical Note 작성하기삵 사이트에서 Technical Note 작성하기
삵 사이트에서 Technical Note 작성하기
 
가트너와 함께하는 IT Trend (승리자v)
가트너와 함께하는 IT Trend (승리자v)가트너와 함께하는 IT Trend (승리자v)
가트너와 함께하는 IT Trend (승리자v)
 
Trace End-User Request (조동진)
Trace End-User Request (조동진)Trace End-User Request (조동진)
Trace End-User Request (조동진)
 
인프라 성능 데이터 분석 시작하기 (김아령)
인프라 성능 데이터 분석 시작하기 (김아령)인프라 성능 데이터 분석 시작하기 (김아령)
인프라 성능 데이터 분석 시작하기 (김아령)
 
NoSQL?? (marc)
NoSQL?? (marc)NoSQL?? (marc)
NoSQL?? (marc)
 
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
 

Similar to Tomcat 마이그레이션 도전하기 (Jins Choi)

톰캣 #01-소개
톰캣 #01-소개톰캣 #01-소개
톰캣 #01-소개
GyuSeok Lee
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How ToJi-Woong Choi
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
jeongseokoh
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
흥래 김
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
RHAMT 소개
RHAMT 소개RHAMT 소개
RHAMT 소개
Opennaru, inc.
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
Jaewoo Ahn
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & Beyond
Jay Lee
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
JungWoon Lee
 
ParameterizedTest 와 ContextCaching.pptx
ParameterizedTest 와 ContextCaching.pptxParameterizedTest 와 ContextCaching.pptx
ParameterizedTest 와 ContextCaching.pptx
junu6
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
Open Source Consulting
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
JaM2in
 
WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징trustinlee
 
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Amazon Web Services Korea
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
Ted Won
 
JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍
Myungjin Lee
 
2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기
Jay Park
 
Springmvc
SpringmvcSpringmvc
Springmvc
HyungKuIm
 
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
용호 최
 

Similar to Tomcat 마이그레이션 도전하기 (Jins Choi) (20)

톰캣 #01-소개
톰캣 #01-소개톰캣 #01-소개
톰캣 #01-소개
 
[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To[오픈소스컨설팅]Tomcat6&7 How To
[오픈소스컨설팅]Tomcat6&7 How To
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
Eclipse RAP
Eclipse RAPEclipse RAP
Eclipse RAP
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
RHAMT 소개
RHAMT 소개RHAMT 소개
RHAMT 소개
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & Beyond
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
 
ParameterizedTest 와 ContextCaching.pptx
ParameterizedTest 와 ContextCaching.pptxParameterizedTest 와 ContextCaching.pptx
ParameterizedTest 와 ContextCaching.pptx
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
 
WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
 
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
Terraform을 기반한 AWS 기반 대규모 마이크로서비스 인프라 운영 노하우 - 이용욱, 삼성전자 :: AWS Summit Seoul ...
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍
 
2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기2020년 10월 24일 개발자 이야기
2020년 10월 24일 개발자 이야기
 
Springmvc
SpringmvcSpringmvc
Springmvc
 
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
 

Tomcat 마이그레이션 도전하기 (Jins Choi)

  • 1. Sarc Summit Summer 2016 by sarc.io June 11 삵 Tomcat 마이그레이션 도전하기 Jins Choi sarc.io
  • 2. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 WebLogic WebSphere JEUS JBoss EAP WildFly
  • 3. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Middleware Web Application Server
  • 4. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Apache Tomcat®
  • 5. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵
  • 6. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 마이그레이션, 단지 WAS만 Tomcat으로 바꾸는 것인가?
  • 7. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 단지 WAS만 Tomcat으로 바꾸는 것이 맞다면 다음 사항이 변경없이 유지되는지 확인 • Host • OS • File system • Java • Front-end • Back-end • Interface
  • 8. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Java IBM J9 HP/UX Oracle OpenJDK
  • 9. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 JVM 마이그레이션 전과 후 JVM 간 확인해야 할 것들 • Java 제품, 버전 • 메모리 설정 • GC 정책을 포함한 GC 관련 옵션 • 기타 JVM 옵션 고려 요소 • 메모리 설정은 그대로 유지할 것인가? • 현재 사용하고 있는 옵션을 계속 사용할 수 있는가? • 현재 GC 정책이 새로운 호스트, 새로운 Java 버전에 적합한가?
  • 10. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Tomcat 버전 선택 Tomcat 버전 Java 버전 Servlet Spec JSP Spec EL Spec 6.0.x 5 이상 2.5 2.1 2.1 7.0.x 6 이상 3.0 2.2 2.2 8.0.x 7 이상 3.1 2.3 3.0 8.5.x 7 이상 3.1 2.3 3.0 9.0.x 8 이상 4.0 ? ?
  • 11. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Class Loader 기존 WAS와 Tomcat의 Class Loading 순서 비교 확인 1. Bootstrap 2. WEB-INF/classes 3. WEB-INF/lib의 jar 파일 4. System 5. $CATALINA_BASE/lib의 unpacked 클래스 6. $CATALINA_BASE/lib의 jar 파일 7. $CATALINA_HOME/lib의 unpacked 클래스 8. $CATALINA_HOME/lib의 jar 파일
  • 12. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Connector / Port Tomcat은 HTTP 및 AJP 방식의 Connector/Port 설정 가능 • HTTP : HTTP 요청 처리가 가능한 하나의 완성된 WEB 서버 포트 • AJP : Front-end에서 AJP 방식으로 연결 시 연동 포트 Front-end 요소 및 연결 방식에 따라 Port 방식이 달라진다. • 최전방에 Tomcat 존재 • Front-end에 N/W 스위치 존재 • Front-end에 WEB 서버가 존재 (HTTP 방식으로 연결) • Front-end에 WEB 서버가 존재 (AJP 방식으로 연결)
  • 13. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Connector / Thread Pool 용량 기존 용량 설정 분석 결과를 바탕으로 Tomcat에 최적화된 Thread Pool 용량을 설정 • 호스트가 변경되면 CPU 파워에 의하여 처리 성능이 달라짐 • 동시 접속자, 처리 건수, Back-end(DB) 응답 속도 등 고려 • Front-end의 WEB-WAS Connection Pool 용량 고려 • Active-Active 혹은 Active-Standby 등 아키텍처 고려
  • 14. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Connector / Thread Pool 방식 기존 Thread 방식을 분석 • 혹시 WebLogic의 Self-tuning 기능을 사용? • 혹시 WebLogic의 Performace Pack(Native I/O)을 사용? Tomcat은 어떤 Connector Protocol을 사용할 것인가? • Blocking Java Connector (Http11Protocol) • Non-blocking Java Connector (Http11NioProtocol) • APR/Native Connector (Http11AprProtocol) ▶ Tomcat 8.5와 9.0은 BIO(Blocking Java Connector) 사용 불가
  • 15. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 JDBC Driver Oracle IBM DB2 SQLServer MySQL MariaDB PostgreSQL PPAS JDBC Driver는 • DB 버전 • Tomcat의 Java 버전 등을 확인하여 기존 파일을 그대로 사용하거나 새로 다운로드 받은 후 Tomcat에 적용
  • 16. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 DataSource / Connection Pool WAS는 고유의 DB 관련 설정 방법 보유 [ 예 : WebLogic 8.1 ] • Initial Capacity, Maximum Capacity, Capacity Increment • Statement Cache Type, Statement Cache Size • Remove Infected Connections Enabled • Test Frequency, Test Reserved Connections • Connection Creation Retry Frequency, 등등 … 어떻게 Tomcat 설정으로 잘 옮길 것인가?
  • 17. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Log 새로운 Log 파일 • Log 파일의 위치 • Log 파일 명 • Log 파일 내용 및 주요 키워드, 에러 패턴/코드 • Log rotation Access Log • 현재 Access Log 생성 여부 확인 • Log format • 분석 툴과의 연계, 참조
  • 18. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Session Cluster 현재 Session Cluster 기능을 사용한다면 어떠한 Session Cluster 방식을 사용하는지 확인 • WAS가 제공하는 기능 사용 • 별도의 Session Cluster 솔루션 사용 만약 WAS의 Session Cluster 기능을 사용한다면 • Tomcat의 Session Cluster 기능으로 마이그레이션 • web.xml 내에 <distributable/> element 추가
  • 19. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Interface SSO, LDAP, TP-Monitor 등과의 Interface 확인 만약 타 시스템이 마이그레이션 대상 시스템으로 WAS의 특정 Port를 통해 HTTP로 연결하고 있다면 • 해당 시스템에 새로운 정보(IP, 도메인, Port 등)를 전달 그런데 만약 Tomcat에 단지 AJP Port만 개방하였다면 Interface를 위한 Port 설정을 고민
  • 20. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Web Application 웹 애플리케이션은 • 표준을 엄격히 준수한 코드인가 • Spec에 따라 web.xml에 변경할 부분은 없는가 • 특정 WAS만 용인하는 잘못된 문법을 사용하지 않았는가 • 특정 WAS만 제공하는 라이브러리를 사용하지 않았는가 특정 WAS만의 기능 사용 여부 확인 • weblogic.xml, jboss-web.xml, jeus-web-dd.xml • Auto Reload, Hot Deployment, JSP Precompile • Session ID Name, HTTP Header, Compression
  • 21. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 OS / Native Environment OS 상에서 확인해야 할 것 • Profile (.profile, .bash_profile) • $LANG • $LD_LIBRARY_PATH or $LIBPATH • Network Parameter 혹시 Native Library를 사용하고 있지는 않은가 • 새로운 OS 및 새로운 bit와 호환되는가
  • 22. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Test 기능 테스트 • 검증 시나리오 • 역할, 일정 성능 테스트 • 성능 기준 • Apache Bench, Apache JMeter, nGrinder, Load Runner • (혹은 가내 수공업?) • 테스트 중 모니터링 방안, 도구 • 역할, 일정
  • 23. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Monitoring Tomcat을 어떻게 모니터링 할 것인가? • OS 레벨 모니터링 방법의 변화 • 현재 모니터링 도구의 Tomcat 지원 여부 • 오픈 소스 모니터링 도구를 사용하고자 하는가
  • 24. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 Operation Tomcat 운영 방법론과 각종 도구 사용의 변화 • 관리 항목의 변화 • 장애 발생 시 대응 절차 • 백업/복구 절차 • Java(JDK) • 배포 환경
  • 25. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 이사라는 것…
  • 26. Sarc Summit Summer 2016 by sarc.io Tomcat 마이그레이션 도전하기삵 고맙습니다!