jco 제 12회 자바컨퍼런스 - paas for business expert (부재: gae 오픈소스로...
TRANSCRIPT
비즈니스 전문가를 위한 PaaS 플랫폼 구축 전략
유엔진 오픈소스 프로젝트 장진영[email protected]
강사소개 : 나도 7 ㅐ발자다
• 초등학교때 GW-Basic• 중고딩 : Pascal, C, Asm• 96 년 부터 Java • 2000 년 초 방황• 2003 년 오픈소스 BPMS 개발 & 공개• 2007 년 창업 , BPM 컨설팅• 2009 년 JCO 첫 발표• 2011 년 오픈소스 PaaS 에 필받음• 2012 년 JCO 에 오픈 PaaS 공개
오늘의 스토리
• Google App Engine 같은 PaaS 플랫폼을 만들어 보고싶어진 개발자가 있었다…
• 적을 알고 나를 알고 , 잘 정리된 요구사항을 뽑기 위해 ‘ 모두 다 되는 기능목록’ 을 ( 맥가이버 칼 ) 뽑기에 이르는데…
• 결국 그것은… 망할 징조 ..? 라는걸 깨닫고 ..
• 분명한 차별성을 가져야 하며 , 많은 이에게 ‘ 돈’ 이 될만한 것을 만들자 . 비즈니스 목적성을 잃지 않아야지… 라는 깨달음을 얻는다 .
• 고군분투… 혼자서 모든 것을 구현할 수 는 없다 . 하지만 아키텍처는 거의 혼자서 수립해야 한다 .
• 그리고 결국 플랫폼의 알파버전을 완성하여 개발자 행사 당일 그것을 오픈하려하는데…
PaaS 를 해야겠다 – Google App Engine
- 페이지번호 -
http://www.youtube.com/watch?v=shsBhM6LSns&feature=player_em
bedded
PaaS 의 정의
PaaS 는 개발환경과 API 레벨에서의 가상화
- 페이지번호 -
What are PaaS users looking for?
PaaS 의 정의 - 예시
Play My Code 는 웹상에서 바로 게임을 개발 , 경연 , 서비스 한다 .
- 페이지번호 -
클라우드 IDE 를 위해서는 코드 보안성이 중요하다
PaaS Reference Architecture – Gartner’s
- 페이지번호 -
- 페이지번호 -
PaaS Reference Architecture – Forrester’s
PaaS 의 시장의 플랫폼 전쟁
( 독점적 ) PaaS 제공자들의 영토전쟁
- 페이지번호 -
- 페이지번호 -
PaaS Reference Architecture – Forrester’s
- 페이지번호 -
PaaS Reference Architecture – Forrester’s
Platform Business Strategy
- 페이지번호 -
• Step1:Lock-in: becoming loyal & subordinaring
• Step2:Churn-in: fishing by social networks
• Step3:Cross-Selling: 새로운 것을 살짝 : releasing new services
• Step4:Up-Selling: free to free-charging
Open Standard and global interoperability
Open PaaS 의 기회 !
PaaS 는 이식성 , 표준성이 따라주지 않으면 기업에 도입하기 힘들다 .
- 페이지번호 -
Nice 한 PaaS 가 되기 위해서 필요한 것은 ..
선택과 집중…( 각자를 연결해 보세요… )
- 페이지번호 -
Nice PaaSPlatform
Open SourceOpen Architecture
Security & Quality
Model-DrivenTooling
Social BusinessSupport
Portability Governance
Cloud ALM
APM
UX
Social Coding
GamificationRIA
Builders
N-ScreenSupport
BPM/BRE/BI
PaaS for Business Expert
비즈니스 목표 중심의 어플리케이션 구현은 모델 중심의 아키텍처를 가져감
- 페이지번호 -
비즈니스목표
기능목표
구현목표
소스코드
사업계획
스펙문서
모델중심
PaaS for Business Expert
비즈니스 전문가를 위한 PaaS 가 뜬다 .
- 페이지번호 -
PaaS for Business ExpertMorgan Stanley 클라우드 시장 전망 (2011)
2015 년 이후 독립적인 PaaS 가 시장 주도
확장형 PaaS 의 높은 시장가치 전망 (50 억불 시장 )
• 현재 PaaS 는 SaaS 혹은 IaaS 에 종속적이나 향후 2~3 년 이내에 PaaS 자체가 클라우드 시장을 주도할 전망
• 비즈니스 프로세스 모델링과 Orchestration 을 통해 플랫폼 독립적이고 Loosely coupled 된 비즈니스 애플리케이션 개발
Ref) Gartner research
PaaS for Business Expert
BPaaS 는 Process Orchestration Approach 를 추구한다 .
IBM’s SOA Maturity Model – Level 7
Process Orchestration ApproachPaaS for Business Expert
BPaaS 는 SOA 의 성숙도 수준을 모든 IT 조직에 균등한 품질로 유지할 수 있도록 한다
새로운 오픈소스 프로젝트 – Open PaaS
프로젝트명 : 미정 ( 지금까지는 .. “ 프로세스 코디” & “메타웍스” )라이센스 : 오픈소스 라이센스 (MIT)개발시점 : 2011 년 9 월 부터 ~목표 : 국내 개발자 중심의 오픈소스 PaaS 플랫폼프로젝트 위치 :
범위 :
1.Cloud IDE java and javascript, and multi-language support2.Cloud ALM (Application Lifecycle Management)3.Application Platform WAS, security, mongo DB, structured DBMS, cache4.Integration PlatformEAI, SOA, REST mashup5.Model PlatformBPM, BRE, BI6.UI FrameworkModel-driven UI, POJO support- 페이지번호 -
http://code.google.com/p/metaworks3/
사용언어 – 당연히 ? Java!
- 페이지번호 -
• 1. Isolation 이 쉽다 :VM 재기동이 용이하다 , 클래스 로더 구조가 쉽게 App영역과 플랫폼 영역을 나누기 좋다 .
• 2. 멀티 언어를 지원한다 :자바 플랫폼 위에서 BSF (Bean Shell Scripting Framwork) 같은 것은 거의 대부분의 스크립팅 언어를 지원해주어 개발자들을 포용하기 좋다 (JRuby, Javascript, Python, VBScript…)
• 3. 코드주입 및 컨트롤이 용이하다미터링 , 빌링 , 보안 등의 처리를 일관화하기 좋은 BCI, AOP 등의 도구들이 잘 제공된다 .
• 4. 개발자가 많다 . 자체가 생태계를 갖고 있다 .
Multi-Tenancy SupportAuto-Scaling
Metering / Logging / Authentication
Process Codi PaaS Platform
Your App
여러분의소셜 코딩의 힘으로 !!!
HTML5 및 메타데이터 기반 N-Screen 지원
BPM, ESB, CEP 등 SOA 아키텍처 제공
Open Flamingo
어플리케이션 및 데이터베이스 서버
클라우드 IDE
Open PaaS 의 아키텍처와 참여자
- 페이지번호 -
Your App Your App
Open PaaS 구현 노트
클라우드 IDE – 객체 유형
- 페이지번호 -
• 클래스• 자바 리소스• HTML• 자바스크립트
• 엔티티• DAO
• 프로세스
• 룰• 디시젼 테이블• 디시젼 트리
• 폼
Open PaaS 구현 노트
클라우드 IDENo SDK, IDE, Sandbox, Converter
- 페이지번호 -
• 순수웹기반 IDE Ace Editor 사용• Java7 컴파일
javax.JavaCompiler 사용
• 실행 및 동적클래스 변경
Janino 의 JavaSourceClassLoader 사용
• 코드 어시스턴스 mw3 사용• 컴파일 오류 시스템 접근 클래스
( 파일시스템 ) 등의 사용을 차단
• PMD 기반 오류 잘못 유입될 무한반복코드 등을 차단
Open PaaS 구현 노트
어플리케이션 플랫폼
- 페이지번호 -
엔티티 디자이너 및 DAO 생성기
1. DB접근은 JDBC 라이브러리를 제공하지 않기 때문에 직접 접근하지 못하고 대신 JPA 표준으로 DAO 를 생성하여 표준을 맞추고 ORMapping 기능은 메타웍스 3 이 수행함
2. 데이터 접근에 관한 일종의 Proxy 를 두기 때문에 미터링 , 빌링이 가능한 데이터를 플랫폼이 수집하게 됨
Open PaaS 구현 노트
어플리케이션 플랫폼
- 페이지번호 -
Mongo DB (unstructured DB)
1. 몽고 DB 를 접근하는 API 를 Spring 으로 Autowired 하여 사용할 수 있음 .
2. 직접적인 몽고 DB API 접근은 메인 클래스로더에 의하여 차단됨3. Spring 을 경유하여 사용해야 하기 때문에 미터링과 빌링을 Advisor
에 의하여 처리함4. ThreadLocal 에 의하여 진입시점에 가입자 ( 태넌트 ) 에 대한
메타데이터가 들어오기 때문에 이를 기반으로 미터링 할 수 있게됨5. Spring 자체의 설정 기능을 제공하고자 하는 경우는 Spring대신에
Jboss 의 Byteman 을 사용할 수 있음
Open PaaS 구현 노트
UI 프레임워크 – 메타웍스 3
- 페이지번호 -
• Cloud IDE UI 의 많은 부분은 객체묘사정보에 의하여 자동화 처리되어야 함
• 이때문에 이클립스도 SWT와 같은 UI 프레임워크를 기반하고 있음
• 최근 이클립스의 Orion 프로젝트
PaaS 구현에 있어 의외로 매우 중요한 하부 요소임
1. 내부적으로 DWR 을 통하여 자바 -자바스크립트간 RMI 를 처리
2. EJS 템플릿 언어를 기반하여 클라이언트 -사이드에서 JSON 을 HTML 로 렌더링하여 표준기반의 빠른 RIA 를 생성할 수 있음
3. 기존에 사용하던 자바스크립트 및 자바 컴포넌트를 어노테이션 (@) 기반으로 래핑하여 메타웍스 3 컴포넌트로 빠르게 포장할 수 있음
Open PaaS 구현 노트
UI 프레임워크 – 메타웍스 3메타웍스 3 컴포넌트 래핑 예시 – 구글 챠트 컴포넌트
- 페이지번호 -
자바 = 모델 HTML = Face
자바스크립트 = FaceHelper
Open PaaS 구현 노트
UI 프레임워크 – 메타웍스 3메타웍스 3 컴포넌트 래핑 예시 – 구글 챠트 컴포넌트
- 페이지번호 -
자바 = 모델
Open PaaS 구현 노트
UI 프레임워크 – 메타웍스 3메타웍스 3 컴포넌트 래핑 예시 – 구글 챠트 컴포넌트
- 페이지번호 -
HTML = Face
Open PaaS 구현 노트
UI 프레임워크 – 메타웍스 3메타웍스 3 컴포넌트 래핑 예시 – 구글 챠트 컴포넌트
- 페이지번호 -
자바스크립트 = FaceHelper
Open PaaS 구현 노트
UI 프레임워크 – 메타웍스 3컴포넌트 조합 – 화이트박스 사용
- 페이지번호 -
Import assistance 로 빠르게
컴포넌트 import
동적 컴파일 & 클래스 로딩으로 바로 실행결과 확인
Open PaaS 구현 노트
UI 프레임워크 – 메타웍스 3컴포넌트 사용 – 블랙박스 사용
1.멀티태넌트가 각자의 리소스를 등록 가능토록 하려면 객체에 어노테이션 @Resource 를 부여2.컴포넌트 사용시엔 템플릿에 채워넣기 식으로 리소스나 설정 변경만으로 사용할 수 있음
- 페이지번호 -
컴포넌트 저작시 컴포넌트 사용시
Open PaaS 구현 노트
클라우드 IDE - 모바일 시뮬레이션 – 폰갭
- 페이지번호 -
• Phonegap.js 를 시뮬레이션 해줌
• 빠르게 웹앱을 테스팅 한 후 실제 타겟 디바이스에 맞추어 프로젝트를 export 시켜 사용
• 진동기 , LBS, 카메라 등 대부분의 폰갭 디바이스 접근 JS API를 시뮬레이션시킴 ( 로드맵 )
Open PaaS 구현 노트
모델 플랫폼
- 페이지번호 -
• 업무 전문가가 최대한 쉽게 다룰 수 있도록 비즈니스 규칙 변경을 용이하게 함
보험료 산출 , 금융대출심사 , 투자리스크관리 등 광범위하게 적용됨
• 웹기반 룰디자이너
mw3 기반 개발
• 동적 실행• 프로세스와 연계
비즈니스 규칙 편집 및 실행기 (BRMS & BRE)
Open PaaS 구현 노트
모델 플랫폼
- 페이지번호 -
• 업무 전문가가 룰과 클래스들을 업무 프로세스와 연결하여 비즈니스 환경변화에 적응력을 높힘
• 현재 기존 유에진 프로세스 디자이너를 확장
순수웹으로 4 월 정도 전환 예정
• 동적 실행
비즈니스 프로세스 디자이너 ( 매시업 ) 및 엔진
Open PaaS 구현노트 – 차별성 : Infra 의 공유를 넘어
- 페이지번호 -
SOA 아키텍처를 ‘공유’ (or Lease) 하다
Serv
ice C
on
sum
er
Business Processe
s
Services
개발협의 /계획프로세스
Proto 설계검증 프로세스
양산 /이관프로세스
Serv
ice P
rovid
er
Application
Service Compone
nt
E 메일
cBOMcBOM 경영전략정보
경영전략정보 경영분석경영분석 LegacyLegacy
계약현황사업계획
통계자료
구매계약
연구현황
협업허브
2.0
포탈
BPM
(uEngine)
ESB
(Serv
ice M
ix)
.NET c
omponent
Java
com
ponent
Database
&
Applicatio
n
Business Processe
s
개발협의 /계획프로세스
Proto 설계검증 프로세스
양산 /이관프로세스
Application
Service Compone
nt E 메일
cBOMcBOM 경영전략정보
경영전략정보 경영분석경영분석 LegacyLegacy
계약현황
사업계획
통계자료
구매계약
연구현황
협업허브
2.0
포탈
BPM
(uEngine)
Service Composite Service
.NET c
omponent
Java
com
ponent
Database
&
Applicatio
n
•표준 /비표준 인터페이스 혼재•연동 발생 시 마다 개발자 개입 불가피•높은 결합도 ( 직접접근 ) 로 인한 아키텍처 재수립
•표준 인터페이스 (SOAP) / 동적 연동 등이 가상화됨 •비즈니스 분석가가 필요한 연동을 수행•아키텍처도 빌려쓰면 편하다
프로젝트 1 프로젝트 2 프로젝트 3
구매계약통계자료
프로젝트 1 프로젝트 2 프로젝트 3
Open PaaS 구현노트 – 차별성 : 보안 관점
Public Cloud 와 Private Cloud 입장에서 각각 바라본 ‘ 보안’
- 페이지번호 -
Public PaaS 의 입장 – 불순함 ?의 방어
1. 파일 시스템 등 시스템 리소스에의 접근 e.g. 포맷시도2. java.lang.System 클래스가 보유한 다양한 시스템 함수의 남용3. 무한루프4. SQL injection5. …
Private PaaS 의 입장 – IT 거버넌스
1. 코드의 균일한 품질2. 사용하지 않기로 약속한 라이브러리 차단3. 테스팅을 거쳐야만 제출4. 애자일 방법론 적용 – 회고시간에 IDE 를 차단 , 회고를 작성하게 유도5. 코드의 외부 유출 차단
Open PaaS 구현 노트
어플리케이션 플랫폼
- 페이지번호 -
Security Framework
CodiClassLoader (extends Janino + javax.ClassCompler)( 동적 클래스 로딩 )
CodiDwrServlet ( 모든 외부 접근의 경로 )
Compiled User App(class files
In-memory)
Cloud IDE
User App Source (*.java)
PMD 정적분석(무한반복 등 점검 )
<< 빌드타임 >> << 런타임 >>
컴파일
업로드된라이브러리
(jar)
SecurityManager (패키지 차단 , 파일 접근 차단 )
BCI 기반의 보안 및 과금 로직 주입 (Javassist 로 구현 )
Open PaaS 구현 노트 - SecurityManager
…
Open PaaS 구현 노트 – BCI 기반 보안 코드 주입
Open PaaS 구현 노트 – BCI 기반 보안 코드 주입
secured.classmethods=
java.io.File.createNewFile, java.io.File.delete, java.io.File.list , java.io.File.listFiles, java.io.File.renameTo, java.io.File.mkdir, java.io.File.mkdirs, java.lang.System.setOut, java.lang.System.load, java.lang.System.loadLibrary, java.lang.System.setOut, java.lang.System.setProperties, java.lang.System.setErr, java.lang.System.setSecurityManager, java.lang.System.getSecurityManager
Open PaaS 구현 노트 – Metering Billing by Spring AOP
예제 어플리케이션
금융권
- 페이지번호 -
• 금융 대출 심사 ASP 서비스 – 프로세스 자동화와 룰엔진의 결합 등 모델 플랫폼을 쉽게 관리하여 서비스를 할 수 있는 분야
소셜 비즈니스 어플리케이션
• 소셜네트워크와 연결된 기업의 오픈이노베이션 , 협업 등의 어플리케이션• 소셜커머스 어플리케이션• 소셜네트워크게임
모바일 비즈니스 어플리케이션
• 웹앱 모바일 어플리케이션 – 상대적으로 비즈니스용도에 적합
플랫폼 활용 패턴1 – 비즈니스 적용
직접 고객
- 페이지번호 -
• 기술구현보다는 비즈니스 모델 구현에 집중하고 싶다• 커스터마이징이 용이한 환경이 필요하고 벤더 종속이 되기 싫다• 조직 전반의 IT 거버넌스 이슈를 쉽게 관리해야 한다
– IT 프로젝트 마다의 개발기 및 미들웨어 설치 /교육 /관리 비용
플랫폼 제공자
• 자체 플랫폼에 대한 개발자를 빠르게 끌어들이고 싶은 경우 클라우드 IDE와 소셜 코딩 개념을 통하여 빠르게 플랫폼 확산효과를 보고자 할때
플랫폼 활용 패턴2 – 오픈소스 프로젝트 or 커뮤니티내 웹사이트나 오픈소스 프로젝트를 갖고 계신분
- 페이지번호 -
• 내 사이트에서 친구들이 코딩을 직접 해보면서 서로 대화하는 공간으로 만들자
몽고 DB 는 웹상에서 직접실행가능한 쉘을 익명 유저에게도 제공한다 .
참 , 구현이 중요한게 아니라 플랫폼이 성공할까 ?
개발자들이 써야 한다
- 페이지번호 -
• 진입 장벽이 낮아야 한다 . 클라우드 IDE 로 조금 극복• 재미있어야 한다 . • 지속적으로 흥미를 잃지 않도록 유지시켜야 한다 .
개발자들이 들끓어야 한다 .
• 서로 경합하거나 , 자극이 될 수 있어야 한다• 서로 부족한 면을 보완할 수 있으면 좋다 집단지성 ?• 달성하고 , 성공하는 모습이 최대한 공유될 수록 좋다
Gamification 의 사례 – Heroku.com
- 페이지번호 -
• 눈을 의심하지 마세요 .. PaaS 플랫폼의 UI랍니다
개발 운용에 필요한리소스들을 게임 아이템처럼보여주는 대시보드
소셜코딩 지원
이왕 웹상에서 컴파일 , 실행이 다되는 마당에 페이스북에서 코딩 못할 것 없지 않은가 ? 친구중에는 훌륭한 경험을 갖고 있어 문제해결을 빨리 해줄 수 있다 .
소셜코딩 지원
소셜 코딩에 고려사항들 어느 수준까지 공유할 것인가 ?
•해당 개발 아이템 팔로워 •해당 개발 아이템 팔로워의 친구•전체 공개 ( 플랫폼 팔로워 )
보안 문제는 어떻게 할 것인가 ?
•외부화 한 문제 해결의 경우 접근 리소스 설정( 예 : 데이터소스는 접근 못함 등 )•PMD 룰 설정 통한 특정 표현 잠금
수많은 Submit 들을 모두 테스팅 할 것인가 ?•테스팅 자동화 프로세스 – 요건 정의시
평가 보상은 어떻게 할 것인가 ?• 평가 보상 프로세스 자동화
프로세스 기반 ALM 의 필요성(Application Lifecycle Management)
유사한 접근
오픈소스 PaaS
•AppScale : a GAE open source clone
소셜 코딩 & 클라우드 IDE
•Github•Cloud9 IDE•Eclipse Orion
PaaS for 비즈니스 전문가
•Cordys•Run-my-workflow (in Google App Market)•WorkXpress
- 페이지번호 -
로드맵 - 개발측면
국내외 오픈소스 BI 플랫폼 통합•맵 - 리듀스 엔진 및 매시업 툴인 ‘ 오픈플라밍고’ 통합•맵 - 리듀스 Trigger 프로세스 액티비티 개발•Olap4Cube – Hive 기반 OLAP server 통합
클라우드 IDE + 사례기반 KM/ 추천 시스템•라인디버깅 지원•개발자가 닥친 상황의 실시간 분석 해결방안 추천•Line-By-Line Locking 채팅기반 협업 코딩•100% 폰갭 시뮬레이션
샘플 어플리케이션•Best Practices – 금융 , 제조 , 소셜앱 , 모바일 앱 등•웹표준 기반 RIA applications – mw3 의 기능은 어디까지가 한계이며 , 어디까지 추상화되는가 ?
- 페이지번호 -
로드맵 – 그 외
홍보 및 에반젤라이징 활동•컴포넌트 / 앱 경연 레포지토리 구축•관련 국내외 커뮤니티 리더의 참여 의뢰•페이스북 코딩 어플 •프로젝트 명칭 공모•트레이닝 투어 – 관심있으신 학교와 기업은 등록해주세요 무상교육실시
문서화•문서 및 동영상 오픈 – Slideshare and 유튜브•오픈 문서화 프로세스
테스팅•IaaS 환경 테스팅•보안 뚫기 – Hack the Open PaaS ? 행사•개발기 - 운영기 분리 – 운영기는 OpenShift / AppScale 등과 연결 테스팅
- 페이지번호 -
(저의 ) 교훈 : Requirements of nice PaaS
A Nice Platform
Open SourceOpen
ArchitectureSecurity &
Quality
Model-DrivenTooling
Motivation
Portability Governance
Cloud ALMAPM
UX
Social Coding
GamificationRIA
Builders
N-ScreenSupport
BPM/BRE/BI
Cloud IDE
플랫폼 비즈니스 … 집단지성이 필요합니다 .
오픈 이노베이션 기반의 플랫폼을 고민하시는 분들…저를 친구로 추가해주세요 ^^
- 페이지번호 -
혹은
페이스북 그룹명 “ 메타웍스 3 스터디” 로 검색해서 그룹에 가입