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)
• 배포 환경