SlideShare a Scribd company logo
1 of 26
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

Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 

What's hot (20)

[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
[DEVIEW 2021] 1000만 글로벌 유저를 지탱하는 기술과 사람들
 
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
 
톰캣 운영 노하우
톰캣 운영 노하우톰캣 운영 노하우
톰캣 운영 노하우
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingCloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
CloudWatch 성능 모니터링과 신속한 대응을 위한 노하우 - 박선용 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바
 
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
[Gaming on AWS] AWS와 함께 한 쿠키런 서버 Re-architecting 사례 - 데브시스터즈
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
 
Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19
 
Oracle Cloud Infrastructure:2021年6月度サービス・アップデート
Oracle Cloud Infrastructure:2021年6月度サービス・アップデートOracle Cloud Infrastructure:2021年6月度サービス・アップデート
Oracle Cloud Infrastructure:2021年6月度サービス・アップデート
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
 
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
 
kafka
kafkakafka
kafka
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
 
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
[2019] PAYCO 쇼핑 마이크로서비스 아키텍처(MSA) 전환기
 
AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS ::: Game...
AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS :::  Game...AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS :::  Game...
AWS for Games - 게임만을 위한 AWS 서비스 길라잡이 (레벨 200) - 진교선, 솔루션즈 아키텍트, AWS ::: Game...
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
 
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
 
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기Amazon Redshift로 데이터웨어하우스(DW) 구축하기
Amazon Redshift로 데이터웨어하우스(DW) 구축하기
 

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)

JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
Ted Won
 
WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징WebSocket 기반 쌍방향 메시징
WebSocket 기반 쌍방향 메시징
trustinlee
 

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

톰캣 #01-소개
톰캣 #01-소개톰캣 #01-소개
톰캣 #01-소개
 
웹소켓 (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
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
[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 마이그레이션 도전하기삵 고맙습니다!