ݺߣ

ݺߣShare 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

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 마이그레이션 도전하기삵 고맙습니다!