Submit Search
Upload
Jandy - Introduction Paper
•
0 likes
•
227 views
진
진성 박
Follow
Introduction Paper written by Korean
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 4
Download now
Download to read offline
Recommended
2014 공개소프트웨어 개발자대회 SK플래닛 기업과제 소개
2014 공개소프트웨어 개발자대회 SK플래닛 기업과제 소개
Junhee Woo
Api first design 개발의 선순환
Api first design 개발의 선순환
Jeong-gyu Kim
앱팀메이킹
앱팀메이킹
Jungsook Baek
앱팀메이킹
앱팀메이킹
Jungsook Baek
hofresforjob
hofresforjob
Jeff Burrow
Port contrap
Port contrap
estther_maga
Módulo 3 - Visão Atual do Direito
Módulo 3 - Visão Atual do Direito
Sonia R Ribeiro
R#2 - 26/05/2016 - Epinay sur Seine - Etienne Darmagnac
R#2 - 26/05/2016 - Epinay sur Seine - Etienne Darmagnac
TerriNum Cpnt
Recommended
2014 공개소프트웨어 개발자대회 SK플래닛 기업과제 소개
2014 공개소프트웨어 개발자대회 SK플래닛 기업과제 소개
Junhee Woo
Api first design 개발의 선순환
Api first design 개발의 선순환
Jeong-gyu Kim
앱팀메이킹
앱팀메이킹
Jungsook Baek
앱팀메이킹
앱팀메이킹
Jungsook Baek
hofresforjob
hofresforjob
Jeff Burrow
Port contrap
Port contrap
estther_maga
Módulo 3 - Visão Atual do Direito
Módulo 3 - Visão Atual do Direito
Sonia R Ribeiro
R#2 - 26/05/2016 - Epinay sur Seine - Etienne Darmagnac
R#2 - 26/05/2016 - Epinay sur Seine - Etienne Darmagnac
TerriNum Cpnt
Mindfulness - a presentation for AJS 2016
Mindfulness - a presentation for AJS 2016
Agustin (Gus) Castellanos, M.D.
Caisse des Dépots - @utonomie et bien vieillir dans les territoires
Caisse des Dépots - @utonomie et bien vieillir dans les territoires
Les Interconnectés
ENGAGE making decisions
ENGAGE making decisions
Alexandra Okada
Fastest Sales Network in online TV commerce
Fastest Sales Network in online TV commerce
Hanwha System / ICT
Facebook 마케팅 활용 가이드
Facebook 마케팅 활용 가이드
INNOCEAN Worldwide
KorriGo services
KorriGo services
Les Interconnectés
L’intelligence collective au service de la réinvention des territoires - Ecdys
L’intelligence collective au service de la réinvention des territoires - Ecdys
Les Interconnectés
Valenciennes métropole - présentation stratégie numérique 2016-2018
Valenciennes métropole - présentation stratégie numérique 2016-2018
Rémi PASSARELLA
Conférence Open Data La Gazette juin 2016
Conférence Open Data La Gazette juin 2016
Mairie de Paris
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Channy Yun
경영과 정보기술 - 어플리케이션 디자인 과제
경영과 정보기술 - 어플리케이션 디자인 과제
Young Eun Park
Android Developer JeongJaeyun
Android Developer JeongJaeyun
jaeyunjeong1
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
NAVER Engineering
Speecher
Speecher
JongRak Moon
31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"
hyu_jaram
How to implement your dream 20150427
How to implement your dream 20150427
Will Kim
Groupware project
Groupware project
JiHwan Yoon
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동
NAVER D2
프로덕트 매니저 8년의 경험
프로덕트 매니저 8년의 경험
Jihye OK
개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109
한 경만
델파이 @22
델파이 @22
Devgear
김봉라인 사업계획서
김봉라인 사업계획서
성찬 봉
More Related Content
Viewers also liked
Mindfulness - a presentation for AJS 2016
Mindfulness - a presentation for AJS 2016
Agustin (Gus) Castellanos, M.D.
Caisse des Dépots - @utonomie et bien vieillir dans les territoires
Caisse des Dépots - @utonomie et bien vieillir dans les territoires
Les Interconnectés
ENGAGE making decisions
ENGAGE making decisions
Alexandra Okada
Fastest Sales Network in online TV commerce
Fastest Sales Network in online TV commerce
Hanwha System / ICT
Facebook 마케팅 활용 가이드
Facebook 마케팅 활용 가이드
INNOCEAN Worldwide
KorriGo services
KorriGo services
Les Interconnectés
L’intelligence collective au service de la réinvention des territoires - Ecdys
L’intelligence collective au service de la réinvention des territoires - Ecdys
Les Interconnectés
Valenciennes métropole - présentation stratégie numérique 2016-2018
Valenciennes métropole - présentation stratégie numérique 2016-2018
Rémi PASSARELLA
Conférence Open Data La Gazette juin 2016
Conférence Open Data La Gazette juin 2016
Mairie de Paris
Viewers also liked
(9)
Mindfulness - a presentation for AJS 2016
Mindfulness - a presentation for AJS 2016
Caisse des Dépots - @utonomie et bien vieillir dans les territoires
Caisse des Dépots - @utonomie et bien vieillir dans les territoires
ENGAGE making decisions
ENGAGE making decisions
Fastest Sales Network in online TV commerce
Fastest Sales Network in online TV commerce
Facebook 마케팅 활용 가이드
Facebook 마케팅 활용 가이드
KorriGo services
KorriGo services
L’intelligence collective au service de la réinvention des territoires - Ecdys
L’intelligence collective au service de la réinvention des territoires - Ecdys
Valenciennes métropole - présentation stratégie numérique 2016-2018
Valenciennes métropole - présentation stratégie numérique 2016-2018
Conférence Open Data La Gazette juin 2016
Conférence Open Data La Gazette juin 2016
Similar to Jandy - Introduction Paper
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Channy Yun
경영과 정보기술 - 어플리케이션 디자인 과제
경영과 정보기술 - 어플리케이션 디자인 과제
Young Eun Park
Android Developer JeongJaeyun
Android Developer JeongJaeyun
jaeyunjeong1
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
NAVER Engineering
Speecher
Speecher
JongRak Moon
31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"
hyu_jaram
How to implement your dream 20150427
How to implement your dream 20150427
Will Kim
Groupware project
Groupware project
JiHwan Yoon
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동
NAVER D2
프로덕트 매니저 8년의 경험
프로덕트 매니저 8년의 경험
Jihye OK
개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109
한 경만
델파이 @22
델파이 @22
Devgear
김봉라인 사업계획서
김봉라인 사업계획서
성찬 봉
JDesigner Platform v5.0 소개
JDesigner Platform v5.0 소개
Lee Sangboo
딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)
딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)
Wonkyung Lyu
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptx
ssuser2601f7
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
정민 안
모바일, 클라우드, 웹 환경에 필요한 DB관리
모바일, 클라우드, 웹 환경에 필요한 DB관리
mosaicnet
Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Chiung Choi
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SangIn Choung
Similar to Jandy - Introduction Paper
(20)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
경영과 정보기술 - 어플리케이션 디자인 과제
경영과 정보기술 - 어플리케이션 디자인 과제
Android Developer JeongJaeyun
Android Developer JeongJaeyun
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
Speecher
Speecher
31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"
How to implement your dream 20150427
How to implement your dream 20150427
Groupware project
Groupware project
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동
프로덕트 매니저 8년의 경험
프로덕트 매니저 8년의 경험
개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109
델파이 @22
델파이 @22
김봉라인 사업계획서
김봉라인 사업계획서
JDesigner Platform v5.0 소개
JDesigner Platform v5.0 소개
딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)
딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptx
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
모바일, 클라우드, 웹 환경에 필요한 DB관리
모바일, 클라우드, 웹 환경에 필요한 DB관리
Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Google Firebase로 레고블럭 조립하기 - IO Extended 2016
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
Jandy - Introduction Paper
1.
1. 프로젝트 소개 및 설명 Jandy 프로젝트는 오픈소스 개발자들을 위한 것으로 애플리케이션 개발 과정 중 성능 분석과 튜닝 포인트를 찾아주는 것을 도와주는 것을 목적으로 한다. 어플리케이션 성능개선을 원하는 오픈소스 개발자는 Jandy가 제공해주는 어플리케이션 프로파일링을 통해 실제 애플리케이션의 성능향상을 기대할 수 있다. 그리고 Jandy는 다양한 프로그래밍 언어들에 대해 지원하는 것을 목적으로하여 각각의 언어별 고유한 특성이나 Syntax, multithread 사용등을 통한 어플리케이션의 성능 변화를 분석할 수 있도록 하는것을 발전방향으로 한다. 향후에는 프로파일링 결과를 단순한 통계적 수치를 보여주는데 그치지않고 효과적으로 보여줄 수 있도록 다양한 시각화 방식을 위한 API를 제공하는 방안을 고민하고 있다. 우리 서비스의 메인 기능은 아래와 같다. ● TravisCI와 github와의 긴밀한 연계를 통한 자동 테스팅 및 프로파일링 환경제공 ●
java, python, ruby 등 다양한 주요언어를 지원 ● 프로파일링 시각화 지원을 통한 직관적이고 효율적인 성능 개선 포인트 발견 ● email이나 twitter를 통한 오픈소스 개발자들간의 협업을 위한 레포팅 기능 제공 아래 그림은 실제 사용자가 Jandy를 사용하게 되는 서비스플로우이다. 우선 사용자는 Github를 통해 오픈소스 프로젝트에 참여하고있는 Committer로 가정하며, 해당 프로젝트는 TravisCI와 연동되어 단위테스트가 지원되고있다는 것을 전제로 한다. 사용자는 Local환경에 해당 프로젝트 소스에 (1) 수정 및 빌드를 하게되고, IDE와 연동되어있는 github로 (2) Commit 을 수행하면 바로 TravisCI를 통해 단위 테스트까지 진행된다. 이때 사용자는 TravisCI를 통해 단위테스트가 완료되면 바로 연동되어있는 (3) Jandy를 통해 곧바로 자신이 build를 수행한 애플리케이션에 대한 프로파일링 정보를 이메일로 받게되고, 이때 필요한 경우 해당 이메일 링크나 직접접속을 통해 Jandy Report를 상세하게 확인할 수 있다. 또한 사용자는 빌드피드(Build feed)를 통해 지난번 build와 비교하여 애플리케이션 성능의 변화를 분석할 수 있는 단서를 얻을 수 있다. Fig. 1. 전체 서비스 흐름도
2.
2. 프로젝트 아키텍처 본 프로젝트는 프로그램의 성능을 프로파일링 할 수 있는 프로파일러와 프로파일링 결과를 받아서 Database에 넣고 웹으로 가시화하는 서버로 나뉜다. 본 프로젝트의 시스템은 자바 언어와 파이썬 언어의 기본적인 프로그램을 지원하고 있기 때문에 총 3개의 모듈로 나눠진다. 아래 Fig.2의 그림은 Jandy 프로젝트의 전체 아키텍처를 나타내며 2.1절부터 이 아키텍처의 그림을 자세하게 설명한다. Fig. 2. Jandy 프로젝트의 전체 아키텍처 2.1. Jandy Profiler Jandy에서 제공하는 프로파일러는 현재 2개의 언어를 지원하고 있다. 각각 자바와 파이썬을 지원하며 특히 파이썬의 경우 Jandy 스크립트를 통해 자동으로 프로파일러를 설치하는 기능을 갖고있다. 2.1.1.
Jandyjavaprofiler 모듈 jandyjavaprofiler는 본 프로젝트에서 Java의 프로그램에 “javaagent”로 java 프로그램과 함께 실행되며 프로파일링을 수행하게 된다. Javaagent란, java.lang.Instrument 클래스를 활용하여 만든다. Instrument 클래스는 Java 프로그래밍 언어로 JVM에서 돌아가는 프로그램을 instrumentation을 수행할 수 있는 agent를 만들 수 있도록 해당 서비스들을 지원한다. 이 것은 instrumentation을 위해 method들의 bytecode들을 수정하여 동작한다. 따라서, 본 모듈은 이러한 javaagent를 기반으로 JVM이 처음 class를 로드할 때, 프로파일링에 대상이 되는 class와 method들의 bytecode를 수정하여 프로파일링을 수행할 준비를 마친다. 프로파일링의 결과로 대상이 되는 method들의 호출관계, 실행 되는 시간과
3.
수행되는 Thread를 알 수 있다. 이렇게 나온 결과를 서버에 보내주면 모듈 jandyjavaprofiler의 역할은 끝나게 된다. 2.1.2. Jandypython 본 모듈 jandypython은 본 프로젝트에서 프로그램을 실행하는 실행기와 Python언어에 해당하는 프로파일러를 갖고 있다. jandypython에서 프로그램을 실행하는 실행기는 Python언어를 통해 프로파일링이 대상이 되는 프로그램을 profiler와 함께 실행하도록 만들어졌다. 예를 들어, java jar jandyserver.jar spring.profiles.active=mysql 위와 같이 실행되는 프로그램을 Greem 프로젝트의 프로파일러를 통해 성능 측정 및 관리를 하고 싶을 경우 아래와 같이 실행한다. greem java jar jandyserver.jar spring.profiles.active=mysql 위의 명령 체계는 jandy이란 Python 스크립트로 명령어를 실행하게 된다. Jandy 프로젝트는 오픈소스 개발자를 위해 Github와 TravisCI가 연동되어 있고 이 환경의 정보를 jandy 스크립트가 정리하여 server에 프로파일링 결과와 함께 전달한다. 그리고, jandypython의 Python언어의 프로파일러는 Python에서 제공하는 system모듈의 settrace()라는 함수를 기반으로 만들어졌다. 이 trace 함수는 Python에서 Python 소스코드의 디버거를 구현하기 위해 만들어졌다. 본 모듈은 settrace() 함수에 instrumentation을 수행하는 함수를 넣어 각 쓰레드별로 실행되는 method들의 동적 정보를 뽑아낸다. 프로파일링의 정보는 대상이 되는 method들의 호출관계, 실행 되는 시간과 수행되는 Thread를 알 수 있다. 2.2. Jandy Server 본 모듈의 역할은 본 프로젝트에서 프로파일링 정보를 저장하고 사용자에게 보여주는 웹서버이다. 본 모듈은 TravisCI에서 실행되는 프로그램에서 프로파일링 정보를 받아서 1차적으로 데이터베이스에 저장한다. 이 때, 프로토콜로써 사용되는 것이 Thrift이다. Thrift는 각 언어에서 서비스의 추상화를 통해 사용자의 소스코드에 들어가 같은 프로토콜로 다른 언어로 만든 프로그램과 통신을 쉽게 한다. 따라서, jandyserver 모듈에서는 jandy 스크립트로부터 프로파일링 결과와 TravisCI 빌드 환경 정보를 Thrift의 데이터 직렬화를 통해 받은 후, Database에 오브젝트로 만든다. 또한, jandyserver 모듈은 프로파일링을 통해 얻은 성능 이력을 사용자에게 보여주며 각 프로젝트의 프로파일링 히스토리를 볼 수 있다. 그리고 본 모듈은 Java, Python 프로파일러의 배포 서버 역할도 하고 있으며 중앙 관리형태로 버전과 각 정보들의 프로토콜을 관리하고 있다. jandyserver 모듈의 Package는 전체 프로젝트의 최종 형태로 볼 수 있어서 실제로 Jandy 프로젝트를 설치하여 사용할 경우 jandyserver 모듈만 설치하고 프로파일러는 Python의 pip을 통해 설치하여 Build되는 CI서버에 통합하여 사용할 수 있다. 현재 프로젝트는 TravisCI와 Github에 긴밀하게 연결되어 있기 때문에 다른 소스코드 관리 툴과 Build를 수행하는 다른 CI서버는 추후 개발될 예정이다.
4.
Download now