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

SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기Lee Ji Eun
 
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013mumrah
 
Introduction to Spring Cloud
Introduction to Spring Cloud           Introduction to Spring Cloud
Introduction to Spring Cloud VMware Tanzu
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Cisco DevNet
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Lucas Jellema
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 YoungSu Son
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecAdam Paxton
 
Secrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesSecrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesBruno Borges
 
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK toolsHaribabu Nandyal Padmanaban
 
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)IMQA
 
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...GetInData
 
OpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerOpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerSmartBear
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaJiangjie Qin
 
Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Claus Ibsen
 

What's hot (20)

SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
 
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
 
Introduction to Spring Cloud
Introduction to Spring Cloud           Introduction to Spring Cloud
Introduction to Spring Cloud
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
 
Alfresco tuning part1
Alfresco tuning part1Alfresco tuning part1
Alfresco tuning part1
 
Envoy and Kafka
Envoy and KafkaEnvoy and Kafka
Envoy and Kafka
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
 
Kafka presentation
Kafka presentationKafka presentation
Kafka presentation
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI Spec
 
Secrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesSecrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on Kubernetes
 
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
Performance Tuning -  Memory leaks, Thread deadlocks, JDK toolsPerformance Tuning -  Memory leaks, Thread deadlocks, JDK tools
Performance Tuning - Memory leaks, Thread deadlocks, JDK tools
 
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
 
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
Best Practices for ETL with Apache NiFi on Kubernetes - Albert Lewandowski, G...
 
OpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerOpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of Swagger
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache Kafka
 
Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...
 

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)
 
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
 
웹소켓 (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
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기Jaewoo Ahn
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & BeyondJay 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.pptxjunu6
 
[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack Community[오픈소스컨설팅] ARM & OpenStack Community
[오픈소스컨설팅] ARM & OpenStack CommunityOpen 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
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3Ji-Woong Choi
 
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)
[DDD] 모바일 게임을 만들기 위한 AWS 고군분투기 (2019)용호 최
 

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