SlideShare a Scribd company logo
1 of 4
Download to read offline
1. 프로젝트 소개 및 설명 
  Jandy 프로젝트는 오픈소스 개발자들을 위한 것으로 애플리케이션 개발 과정 중 성능 
분석과 튜닝 포인트를 찾아주는 것을 도와주는 것을 목적으로 한다.  
  어플리케이션 성능개선을 원하는 오픈소스 개발자는 Jandy가 제공해주는 어플리케이션 
프로파일링을 통해 실제 애플리케이션의 성능향상을 기대할 수 있다. 그리고 Jandy는 다양한 
프로그래밍 언어들에 대해 지원하는 것을 목적으로하여 각각의 언어별 고유한 특성이나 
Syntax, multi­thread 사용등을 통한 어플리케이션의 성능 변화를 분석할 수 있도록 하는것을 
발전방향으로 한다. 향후에는 프로파일링 결과를 단순한 통계적 수치를 보여주는데 
그치지않고 효과적으로 보여줄 수 있도록 다양한 시각화 방식을 위한 API를 제공하는 방안을 
고민하고 있다. 
 
우리 서비스의 메인 기능은 아래와 같다. 
● Travis­CI와 github와의 긴밀한 연계를 통한 자동 테스팅 및 프로파일링 환경제공 
● java, python, ruby 등 다양한 주요언어를 지원 
● 프로파일링 시각화 지원을 통한 직관적이고 효율적인 성능 개선 포인트 발견 
● email이나 twitter를 통한 오픈소스 개발자들간의 협업을 위한 레포팅 기능 제공 
 
  아래 그림은 실제 사용자가 Jandy를 사용하게 되는 서비스플로우이다. 우선 사용자는 
Github를 통해 오픈소스 프로젝트에 참여하고있는 Committer로 가정하며, 해당 프로젝트는 
Travis­CI와 연동되어 단위테스트가 지원되고있다는 것을 전제로 한다. 사용자는 Local환경에 
해당 프로젝트 소스에 ​(1) 수정 및 빌드​를 하게되고, IDE와 연동되어있는 github로 ​(2) 
Commit​ 을 수행하면 바로 Travis­CI를 통해 단위 테스트까지 진행된다. 이때 사용자는 
Travis­CI를 통해 단위테스트가 완료되면 바로 연동되어있는​ ​(3) Jandy​를 통해 곧바로 자신이 
build를 수행한 애플리케이션에 대한 프로파일링 정보를 이메일로 받게되고, 이때 필요한 
경우 해당 이메일 링크나 직접접속을 통해 Jandy Report를 상세하게 확인할 수 있다. 또한 
사용자는 ​빌드피드(Build feed)​를 통해 지난번 build와 비교하여 애플리케이션 성능의 변화를 
분석할 수 있는 단서를 얻을 수 있다. 
 
Fig. 1. 전체 서비스 흐름도 
 
 
2. 프로젝트 아키텍처 
  본 프로젝트는 프로그램의 성능을 프로파일링 할 수 있는 프로파일러와 프로파일링 결과를 
받아서 Database에 넣고 웹으로 가시화하는 서버로 나뉜다. 본 프로젝트의 시스템은 자바 
언어와 파이썬 언어의 기본적인 프로그램을 지원하고 있기 때문에 총 3개의 모듈로 나눠진다. 
아래 Fig.2의 그림은 Jandy 프로젝트의 전체 아키텍처를 나타내며 2.1절부터 이 아키텍처의 
그림을 자세하게 설명한다. 
 
 
Fig. 2. Jandy 프로젝트의 전체 아키텍처 
2.1. Jandy Profiler 
  Jandy에서 제공하는 프로파일러는 현재 2개의 언어를 지원하고 있다. 각각 자바와 파이썬을 
지원하며 특히 파이썬의 경우 Jandy 스크립트를 통해 자동으로 프로파일러를 설치하는 
기능을 갖고있다. 
2.1.1. Jandy­java­profiler 
  모듈 jandy­java­profiler는 본 프로젝트에서 Java의 프로그램에 “javaagent”로 java 
프로그램과 함께 실행되며 프로파일링을 수행하게 된다. Javaagent란,  java.lang.Instrument 
클래스를 활용하여 만든다. Instrument 클래스는  Java 프로그래밍 언어로 JVM에서 돌아가는 
프로그램을 instrumentation을 수행할 수 있는 agent를 만들 수 있도록 해당 서비스들을 
지원한다. 이 것은 instrumentation을 위해 method들의 byte­code들을 수정하여 동작한다. 
  따라서, 본 모듈은 이러한 javaagent를 기반으로 JVM이 처음 class를 로드할 때, 
프로파일링에 대상이 되는 class와 method들의 byte­code를 수정하여 프로파일링을 수행할 
준비를 마친다. 프로파일링의 결과로 대상이 되는 method들의 호출관계, 실행 되는 시간과 
수행되는 Thread를 알 수 있다. 이렇게 나온 결과를 서버에 보내주면 모듈 
jandy­java­profiler의 역할은 끝나게 된다. 
2.1.2. Jandy­python 
  본 모듈 jandy­python은 본 프로젝트에서 프로그램을 실행하는 실행기와 Python언어에 
해당하는 프로파일러를 갖고 있다. jandy­python에서 프로그램을 실행하는 실행기는 
Python언어를 통해 프로파일링이 대상이 되는 프로그램을 profiler와 함께 실행하도록 
만들어졌다. 예를 들어,  
 
java ­jar jandy­server.jar ­­spring.profiles.active=mysql 
 
 위와 같이 실행되는 프로그램을 Greem 프로젝트의 프로파일러를 통해 성능 측정 및 관리를 
하고 싶을 경우 아래와 같이 실행한다. 
 
greem java ­jar jandy­server.jar ­­spring.profiles.active=mysql 
 
  위의 명령 체계는 ​jandy​이란 Python 스크립트로 명령어를 실행하게 된다. Jandy 프로젝트는 
오픈소스 개발자를 위해 Github와 Travis­CI가 연동되어 있고 이 환경의 정보를 jandy 
스크립트가 정리하여 server에 프로파일링 결과와 함께 전달한다. 그리고, jandy­python의 
Python언어의 프로파일러는 Python에서 제공하는 system모듈의 ​settrace()​라는 함수를 
기반으로 만들어졌다. 이 trace 함수는 Python에서 Python 소스코드의 디버거를 구현하기 
위해 만들어졌다. 본 모듈은 ​settrace() ​함수에 instrumentation을 수행하는 함수를 넣어 각 
쓰레드별로 실행되는 method들의 동적 정보를 뽑아낸다. 프로파일링의 정보는 대상이 되는 
method들의 호출관계, 실행 되는 시간과 수행되는 Thread를 알 수 있다. 
2.2. Jandy Server 
  본 모듈의 역할은 본 프로젝트에서 프로파일링 정보를 저장하고 사용자에게 보여주는 
웹서버이다. 본 모듈은 Travis­CI에서 실행되는 프로그램에서 프로파일링 정보를 받아서 
1차적으로 데이터베이스에 저장한다. 이 때, 프로토콜로써 사용되는 것이 Thrift이다. Thrift는 
각 언어에서 서비스의 추상화를 통해 사용자의 소스코드에 들어가 같은 프로토콜로 다른 
언어로 만든 프로그램과 통신을 쉽게 한다. 
  따라서, jandy­server 모듈에서는 ​jandy​ 스크립트로부터 프로파일링 결과와 Travis­CI 빌드 
환경 정보를 Thrift의 데이터 직렬화를 통해 받은 후, Database에 오브젝트로 만든다. 또한, 
jandy­server 모듈은 프로파일링을 통해 얻은 성능 이력을 사용자에게 보여주며 각 
프로젝트의 프로파일링 히스토리를 볼 수 있다. 그리고 본 모듈은 Java, Python 프로파일러의 
배포 서버 역할도 하고 있으며 중앙 관리형태로 버전과 각 정보들의 프로토콜을 관리하고 
있다. 
  jandy­server 모듈의 Package는 전체 프로젝트의 최종 형태로 볼 수 있어서 실제로 Jandy 
프로젝트를 설치하여 사용할 경우 jandy­server 모듈만 설치하고 프로파일러는 Python의 
pip을 통해 설치하여 Build되는 CI서버에 통합하여 사용할 수 있다. 현재 프로젝트는 
Travis­CI와 Github에 긴밀하게 연결되어 있기 때문에 다른 소스코드 관리 툴과 Build를 
수행하는 다른 CI서버는 추후 개발될 예정이다. 
 
 
 
 
 
 
 
 

More Related Content

Viewers also liked

Caisse des Dépots - @utonomie et bien vieillir dans les territoires
Caisse des Dépots - @utonomie et bien vieillir dans les territoiresCaisse des Dépots - @utonomie et bien vieillir dans les territoires
Caisse des Dépots - @utonomie et bien vieillir dans les territoiresLes Interconnectés
 
Fastest Sales Network in online TV commerce
Fastest Sales Network in online TV commerceFastest Sales Network in online TV commerce
Fastest Sales Network in online TV commerceHanwha System / ICT
 
Facebook 마케팅 활용 가이드
Facebook 마케팅 활용 가이드Facebook 마케팅 활용 가이드
Facebook 마케팅 활용 가이드INNOCEAN Worldwide
 
L’intelligence collective au service de la réinvention des territoires - Ecdys
L’intelligence collective au service de la réinvention des territoires - Ecdys 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-2018Valenciennes métropole - présentation stratégie numérique 2016-2018
Valenciennes métropole - présentation stratégie numérique 2016-2018Rémi PASSARELLA
 
Conférence Open Data La Gazette juin 2016
Conférence Open Data La Gazette juin 2016Conférence Open Data La Gazette juin 2016
Conférence Open Data La Gazette juin 2016Mairie de Paris
 

Viewers also liked (9)

Mindfulness - a presentation for AJS 2016
Mindfulness - a presentation for AJS 2016 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 territoiresCaisse 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 decisionsENGAGE making decisions
ENGAGE making decisions
 
Fastest Sales Network in online TV commerce
Fastest Sales Network in online TV commerceFastest Sales Network in online TV commerce
Fastest Sales Network in online TV commerce
 
Facebook 마케팅 활용 가이드
Facebook 마케팅 활용 가이드Facebook 마케팅 활용 가이드
Facebook 마케팅 활용 가이드
 
KorriGo services
KorriGo servicesKorriGo 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 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-2018Valenciennes 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 2016Confé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)Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)Channy Yun
 
경영과 정보기술 - 어플리케이션 디자인 과제
경영과 정보기술 - 어플리케이션 디자인 과제 경영과 정보기술 - 어플리케이션 디자인 과제
경영과 정보기술 - 어플리케이션 디자인 과제 Young Eun Park
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyunjaeyunjeong1
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기NAVER Engineering
 
31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"hyu_jaram
 
How to implement your dream 20150427
How to implement your dream 20150427How to implement your dream 20150427
How to implement your dream 20150427Will Kim
 
Groupware project
Groupware projectGroupware project
Groupware projectJiHwan Yoon
 
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동NAVER D2
 
프로덕트 매니저 8년의 경험
프로덕트 매니저 8년의 경험프로덕트 매니저 8년의 경험
프로덕트 매니저 8년의 경험Jihye OK
 
개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109한 경만
 
델파이 @22
델파이 @22델파이 @22
델파이 @22Devgear
 
김봉라인 사업계획서
김봉라인 사업계획서김봉라인 사업계획서
김봉라인 사업계획서성찬 봉
 
JDesigner Platform v5.0 소개
JDesigner Platform v5.0 소개JDesigner Platform v5.0 소개
JDesigner Platform v5.0 소개Lee Sangboo
 
딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)
딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)
딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)Wonkyung Lyu
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxssuser2601f7
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf정민 안
 
모바일, 클라우드, 웹 환경에 필요한 DB관리
모바일, 클라우드, 웹 환경에 필요한 DB관리모바일, 클라우드, 웹 환경에 필요한 DB관리
모바일, 클라우드, 웹 환경에 필요한 DB관리mosaicnet
 
Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Google Firebase로 레고블럭 조립하기 - IO Extended 2016Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Google Firebase로 레고블럭 조립하기 - IO Extended 2016Chiung Choi
 
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SangIn Choung
 

Similar to Jandy - Introduction Paper (20)

Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
Open API - 웹 플랫폼 생태계를 만드는 기술 (2011)
 
경영과 정보기술 - 어플리케이션 디자인 과제
경영과 정보기술 - 어플리케이션 디자인 과제 경영과 정보기술 - 어플리케이션 디자인 과제
경영과 정보기술 - 어플리케이션 디자인 과제
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 
Speecher
SpeecherSpeecher
Speecher
 
31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"
 
How to implement your dream 20150427
How to implement your dream 20150427How to implement your dream 20150427
How to implement your dream 20150427
 
Groupware project
Groupware projectGroupware project
Groupware project
 
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동
 
프로덕트 매니저 8년의 경험
프로덕트 매니저 8년의 경험프로덕트 매니저 8년의 경험
프로덕트 매니저 8년의 경험
 
개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109개발자 리서치 활동강화 방안 180109
개발자 리서치 활동강화 방안 180109
 
델파이 @22
델파이 @22델파이 @22
델파이 @22
 
김봉라인 사업계획서
김봉라인 사업계획서김봉라인 사업계획서
김봉라인 사업계획서
 
JDesigner Platform v5.0 소개
JDesigner Platform v5.0 소개JDesigner Platform v5.0 소개
JDesigner Platform v5.0 소개
 
딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)
딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)
딥링크 기반의 앱 마케팅 플랫폼: 지글(Jeegle)
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptx
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
 
모바일, 클라우드, 웹 환경에 필요한 DB관리
모바일, 클라우드, 웹 환경에 필요한 DB관리모바일, 클라우드, 웹 환경에 필요한 DB관리
모바일, 클라우드, 웹 환경에 필요한 DB관리
 
Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Google Firebase로 레고블럭 조립하기 - IO Extended 2016Google Firebase로 레고블럭 조립하기 - IO Extended 2016
Google Firebase로 레고블럭 조립하기 - IO Extended 2016
 
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
 

Jandy - Introduction Paper