Sky Engine - Cloud 기반의맞춤형프로그램성능모니터링서비스 - 이름 학번 이메일 전화번호 박진성 201011334 bak723@gmail.com 010 5244 7576 이자형 201011354 ljjh6810@gmail.com 010 5107 8838 김은빈 201011322 icecreambku@gmail.com 010 8442 1677 지도교수 : 하영국교수님 ( 인 ) 1
목차 1. 개요 1.1. 요약 1.2. 새로운성능모니터링서비스의필요성 2. 관련서비스 2.1. Github 2.2. Runnable 2.3. Jennifer 2.4. Apache JMeter 2.5. Travis-ci 3. 본문 3.1. 맞춤형프로그램성능모니터링 3.2. Sky Engine 3.2.1. 성능측정도구모듈 3.2.2. 프로그램실행머신및웹서버 3.2.3. 대시보드 (Report) 4. 향후결과및기대효과 5. 아키텍처 6. 개발환경 7. 사용기술 8. 역할분담 9. 졸업작품개발일정 2
1. 개요 1.1. 요약기존웹서비스를하고있는회사의 70~80% 는회사의서비스모니터링툴로제니퍼소프트사의 APM 솔루션인 Jennifer 을사용하고있다. 이에 APM 솔루션에대한관심으로제니퍼소프트사의 Jennifer 을공부하게되었고클라우드기반의새로운웹서비스에맞는새로운모니터링툴을생각해보게되었다. Sky Engine 은 Runnable service 와 Github service 에서동기부여를받았다. Runnable service 에서는실제로코드를작성하고, 그코드를터미널을통해실행할수가있고, Github service 에서는소스코드를호스팅해주며그소스코드를찾을수있는검색서비스를제공해주고있다. 본계획서에서기획한 Sky Engine 은사용자가소스코드를클라우드컴퓨팅서비스에올려놓고이때 Sky Engine 을실행하게되면서비스내에서각메소드별로성능을측정하여대시보드로보여준다. 클라우드컴퓨팅서비스에올려서사용하는개인단위뿐만아니라기업단위의 enterprise enviroment 에서사용할수있는 agent 를직접다운받은후성능을측정하여그결과를서버로보내서대시보드로보여준다. 1.2. 새로운성능모니터링서비스의필요성지금까지의성능모니터링툴은단순한프로그램이지만, 복잡한설치과정과오직내컴퓨터안의프로그램의성능만을측정할수있다는단점이있었다. 이러한단점을보완하기위해우리가추구하고자하는새로운성능모니터링서비스 Sky Engine 은성능을측정하는데에있어설치과정이간단하고단순히프로그램을서버에올리기만하면성능을측정할수있으며실시간으로측정결과를대시보드에보여준다. 또한, Enterprise 환경등에서의상황을고려하여성능측정도구를제공할수있으며, 이것을다운로드하여직접측정할수있고실시간으로모니터링대시보드를이용할수있는 API 도제공한다. 3
2. 관련서비스 2.1. Github Github( 이하깃허브 ) 는소스코드를호스팅해주는서비스이다. 깃이라는 VCS 툴을이용하여소스코드를깃허브에올리게되고각브랜치와참여하는사람들의커밋정보도볼수있다. 또한, 한프로젝트에대해버그나이슈를올리거나추가기능을붙여요청을보낼수도있다. 4
2.2. Runnable Runnable 은웹에서소스코드를작성하게되고그작성한것을터미널을통해실행해볼수있는샘플리스트웹서비스이다. 이서비스는내가원하는샘플을검색을통해찾을수있으며또한실행해볼수있는것이장점이다. 2.3. Jennifer 제니퍼소프트 ( 이하제니퍼 ) 에서는 APM 솔루션으로써제니퍼라는제품을내놓고있다. 이제니퍼는위에서말했다시피메인프레임세대의하나의물리적서버내에서돌아가는 WAS 를타겟으로모니터링을수행하는솔루션이다. 이제니퍼는이에맞는 Dashboard, 기술등을갖고있다. 5
2.4. Apache JMeter Apache JMeter( 이하 JMeter) 분석을위한테스팅이나 Web Service 에집중되어진다양한서비스의성능을측정하는툴이다. JMeter 는 JDBC Database Connection, FTP, LDAP, Web Service, JMS, HTTP, TCP Connection 등을위한유닛테스트로서이용될수있다. JMeter 는여러개의파라미터, 주장, 쓰레드수행, 파라미터조작과다양한레포트들을지원한다. 6
2.5. Travis-ci Travis ci( 이하트래비스 ) 는지속적통합및배포시스템을호스팅하는서비스이다. 보통오픈소스리포지토리에는무료로제공하며비공개리포지토리에는유료로제공하게된다. 또한, 많은오픈소스프로젝트들이사용하고있다. 7
3. 본문 3.1. 맞춤형프로그램성능모니터링맞춤형프로그램성능모니터링이란개인또는집단이자기가만든프로그램하나에대해서만성능을모니터링할수있는시스템을말한다. 다른모니터링시스템인제니퍼를보자면 WAS 에대해실시간런타임모니터링을수행하게되지만, 하나하나의프로그램에대해맞춤형성능모니터링을제공해주지않는다. 프로그램에대해맞춤형으로성능모니터링을제공해줄경우, 성능측정을위해복잡한설치가필요없이간단하게성능을측정할수있다. 또한, 자기가만든프로그램에대해어느부분을튜닝하여성능을향상시킬지에대해서도알수있다. 3.2. Sky Engine 3.2.1. 성능측정도구모듈 Sky Engine 엔진에서성능측정도구모듈 ( 이하에이전트 ) 은 Javaagent 로제공이되어자바프로그램에붙여프로그램을돌리게된다. 이에이전트는내부적으로 Java Instrument 기술을이용하여프로그램내의각각의메소드에대해서전부성능을측정하고측정된값을 Sky Engine 서버로실시간으로보내게된다. 사용자는 Sky Engine 서버에소스코드또는프로그램을공유하여성능측정을할수도있지만이에이전트를다운받아자신이원하는환경내에서성능을측정할수도있다. 이에이전트는 Java Instrument 기술을적극적으로활용하기때문에 Java 1.5 이상의버전에서만동작하게됨을유의해야한다. 3.2.2. 프로그램실행머신및웹서버 Sky Engine 에서프로그램실행머신및웹서버 ( 이하서버 ) 는사용자에게소스코드또는프로그램을공유받게되어빌드하고프로그램을 IaaS 에올려에이전트를붙인후실행시키는역할을맡는다. 그리고대시보드또는에이전트로부터데이터를입력받아야하는 API 를제공하기위한웹서버의역할도수행한다. 웹서버에서 Ajax 를위해 RestFul 형태의아키텍처를구축한다. 3.2.3. 대시보드 Sky Engine 에서돌아간자바프로그램의성능측정한데이터를실시간으로가져와서대시보드에차례대로보여준다. 대시보드에서는가장오래걸리는메소드와그의상세한코드또는트리들도매칭해서보여주도록한다. 또한검색을통해샘플코드를선택할때해당코드가수행되어모니터링된성능그래프도보여주는역할을한다. HTML5 와 CSS3 를적극적으로활용하여실시간적인데이터를받아그래프를그려낸다. 8
4. 향후결과및기대효과 현재클라우드형태로 CTIP 환경을제공하는기본적인항목이코드커버리지인 coveralls.io 와유닛테스트빌드시스템인 Travis ci 인데이는수행하기가쉽고프로젝트를설치하기쉽기때문이다. 우리는 Sky Engine 을이용하여성능모니터링의클라우드컴퓨팅서비스를제공하는것이가장최종목표이다. 이를통해 Github 나 Bitbucket 과같은소셜오픈소스커뮤니티에서이프로젝트는성능모니터링이우수하다는워터마크와같은검증서비스로써의역할을수행할수있다. 9
5. 아키텍처 6. 개발환경 Language: Java 1.8 IDE: Intellij IDEA OS: Ubuntu Linux Server 10
7. 사용기술 7.1. Build 7.1.1. Spring Boot 기존에 spring framework 로프로젝트를셋팅하려면프로젝트환경설정 xml 이 java 파일을작성하고, WAS 를설치하고 WEB.XML 을설정하고, 컨트롤러 서비스 DAO DOMAIN 을만들어서기본셋팅을했다. 하지만이 spring boot 프로젝트는위과정들을다생략해준다. spring boot 커맨드라인용툴을다운받으면매우간편하게일련의작업들을자동화할수있다. 7.1.2. Maven 메이븐은사실의존관계관리도구라기보다는프로젝트관리도구이며, build lifecycle 에따라프로젝트표준을제공하고의존관계를관리하고플러그인이제공하는부가기능을사용할수있게하는도구이다. 메이븐은이클립스연동도가능하며이클립스프로젝트를만들수있으이클립스에서메이븐플러그을설치하여메이븐프로젝를만들수도있다. 메이븐의기능으로는빌드, 문서화, 리포팅, 의존관계관리, 소스코드관리, 릴리즈, 배포등이있다. 7.2. Web 7.2.1. Spring Framework sprign framework 는 java platform 을위한오픈소스어플리케이션프레임워크로서간단히스프링이라고도한다. 동적인웹사이트를개발하기위한여러가지서비스를제공하고있다. 스프링은경량컨테이로서자바객체를직접관리한다. 또한 POJO(Plain Old Java Object) 방식의프레임워크이며제어반전 (IoC : Inversion of Control) 방식과의존성주입 (DI : Dependency Injection), 관점지향프로그래밍 (AOP : Aspect Oriented Programming) 을지원한다. 스프링은영속성과관련된다양한서비스도지원하고있고, 확장성또한높다. 11
7.2.2. Spring Social Spring Social 은페이스북, 트위터, 링크드인과같은소프트웨어로서의서비스 (SaaS) API 제공업체와응용프로그램을연결할수있는스프링프레임워크의확장이다. Spring Social 은몇가지특징을가지고있다. 첫째로호스팅공급자계정에로컬사용자계정을연결하는과정의간소화서비스를제공한다. 두번째로 Java/Spring Web 응용프로그램, 서비스공급자및사용자의권한부여흐름을처리하는연결컨트롤러이다. 세번째로서비스공급자를통해로그인하여응용프로그램에인증할수있게로그인을컨트롤러이다. 7.3. DB 7.3.1. Spring Data JPA Spring 데이터의 JPA 모듈은 repository beans 을정의할수있는사용자정의네임스페이스가포함되어있다. 또한 JPA 에대한특별특정기능과요소의속성이포함되어있다. 일반적으로 JPA 저장소는저장소요소를사용하여설정할수도있다. Spring data JPA 는쉽게 JPA 기반저장소를구현할수있다. 이모듈은 JPA 기반데이터액세스계층에대한향상된지원을다룬다. 그것은쉽게데이터액세스기술을사용하는스프링구동애플리케이션을구축할수있다. 7.3.2. Hibernate ORM Hibernate 에서 ORM 이란자바애플리케이션내의객체들을 RDB 에있는테이블로의자동화된영속화이다. 쉽게설명하자면우리가예전부터사용해오던 ResultSet 객체를그사용목적에맞는형태의객체로변환하는작업이라고말할수있다. 결국 ORM 이란기존의행하였던작업들에대하여소프트웨어공학적으로정의해놓은것이라고생각할수도있다. 즉, ORM 이란가상의 Object DB 를효과적으로만들어 RDB 를 OOP 언어의개념으로연계하는프로그램기술이다. Hibernate 는이런 ORM 을해주는톨의하나라고할수있다. 이런 ORM 을사용하는가장좋은방법은당연히 OODBMS 를사용하는것이며아직까지완벽하게구현된상용 DBMS 는나와있지는않다. 7.3.3. QueryDsl QueryDsl 는자바 JPA, MongoDB 의및 SQL 등다양한백엔드의형식이안전한 SQL 과유사한쿼리의건설을가능하게하는프레임워크이다. 대신인라인 12
문자열로쿼리를작성하거나 XML 파일로이를구체화의그들은유창 API 를통해구성된다. 7.3.4. MariaDB MariaDB 는오픈소스의관계형데이터베이스관리시스템 (RDBMS) 이다. MySQL 과동일한소스코드를기반으로하며, GPL v2 라이선스를따른다. Oracle 소유의현재불확실한 MySQL 의라이선스상태에반발하여만들어졌으며, 배포자는몬티프로그램 AB(Monty Program AB) 와저작권을공유해야한다. 이것은 MySQL 과높은호환성을유지하기위함이며, MySQL APIs 와명령에정확히매칭하여, 라이브러리바이너리와상응함을제공하여교체가능성을높이고자함이다. MariaDB 에는새로운저장엔진인아리아 (Aria) 뿐만아니라 InnoDB 를교체할수있는 XtraDB 저장엔진을포함하고있다. 이것은트랜잭션과비트랜잭션엔젠그리고미래에나올 MySQL 판에대응할것이다. 7.4. OpenStack OpenStack 은 IaaS 형태의클라우드컴퓨팅오픈소스프로젝트이다. 2012 년창설된비영리단체인 OpenStack Foundation 에서유지, 보수하고있으며아파치라이선스하에배포된다. AMD, intel, 캐노니컬, 수세리눅스, Red Hat, 시스코시스템즈, Dell, HP, IBM, NEC, VMware, Yahoo! 등의 150 개이상의회사가이프로젝트에참가하고있으며, 주로리눅스기반으로운용과개발이이루어진다. 7.4.1. nova IaaS(infrastructure as a Service) 구축에필요한컴퓨트인스턴스들을제어및관리하기위한서비스로 All share 기능을담당하는프로젝트이다. 7.4.2. swift 블록스토리지 (Block Storage) 가아닌오브젝트스토리지 (Object Storage) 환경을구축및관리하기위한서비스로별도의독립적인구축이가능한스토리지서비스 (Storage Service) 프로젝트이다. 13
7.5. Java Instrument instrument 란자바소스를변경하여컴파일하는것이아니라바이트코드 (byte code) 로되어있는자바클래스를분석하여변경하는것을말한다. 유명자바 instrument 라이브러리로는 BCEL, ASM 등이있다. 7.5.1. BCEL The Byte Code Engineering Library(BCEL) 은자바언어에서생성하는클래스파일 ( 바이트코드 ) 를분석하고변경, 재조립하는간편한인터페이스를제공하기위해만들어진아파치재단에서후원하는프로젝트중하나이다. 7.5.2. ASM Byte Code Instrumentation 을지원하는라이브러리로 Object Web 에서제공한다. 7.5.3. CGLIB CGLIB 는기존의자바클래스파일로부터자바의소스코드를동적으로생성하는라이브러리이다. 7.6. HTML5/CSS3 14 년에차세대웹표준으로확정예정이며, 기존텍스트와하이퍼링크만표시하던 HTML 이멀티미디어등다양한애플리케이션까지표현, 제공하도록진화한 웹프로그래밍언어 이다. 예로오디오, 비디오, 그래픽처리, 위치정보제공등다양한기능을제공함으로써, 웹자체에서처리할수있는기능이대폭향상되었다. 7.6.1. 2D Canvas 브라우저위의그림판으로 HTML5 의많은새로운기능중가장자주언급되어왔던것이다. Canvas 위에선, 도형, 텍스트, 이미지와같은그래픽을표현할수있고색깔, 그림자, 패턴과같은여러효과를적용할수있다. 7.6.2. JQuery / Ajax Framework JQuery: JQuery 는브라우저호환성이있는 HTML 속자바스크립트라이브러리이며클라이언트사이드스크립트언어를단순화할수있도록설계되었다. 14
Ajax Framework: web 어플리케이션개발에서의 Ajax framework 는클라이언트측에서동적웹페이지를구축하기위한기술의컬렉션을활용하는 Framework 이다. 7.6.3. Backbone.js Backbone.js 는 RESTful JSON interface 를가진 Java Script library 로 model view presenter(mvp) application 설계패러다임을기반으로한다. 7.6.4. Twitter Bootstrap Twitter Bootstrap 은 website 와 web application 을만들기위한 tool 들의무료컬렉션이다. 이것은 HTML 및입력체계, 양식, 버튼, 탐색및기타 interface 구성요소뿐만아니라선택사양 Java Script 확장에대한 CSS 기반의디자인템플릿이포함되어있다. 15
8. 역할분담 이름 메인역할 서브역할 김은빈 대시보드, 웹서버 기획, 설계문서, 집제공 박진성 Java Agent, DB 프로그램실행머신, DB, 대시보드 이자형 프로그램실행머신 기획, DB, 대시보드 16
9. 졸업작품개발일정 17