스프링포트폴리오의현황과발전방향 Spring One Americas 2008 참관기 ( 주 ) 아이티와이즈컨설팅컨설턴트안영회 2008-12-17 1 발표자소개 안영회 ( 주 ) 아이티와이즈컨설팅 SE 컨설턴트 KSUG( 한국스프링사용자모임 ) 대표 엔터프라이즈개발경력 9 년 OOAD/ 아키텍처 / 방법론컨설팅경력 6 년 현재한화 S&C 개발프레임워크프로젝트 PM 주요경력 스프링기반프레임워크구축 : 한화 S&C, 해군 C4I 아키텍트 : KT OSS 아키텍처수립, 해군 C4I 아키텍처수립 프레임워크적용방안컨설팅 : KT CIA, 증권선물거래소지수지원시스템구축 방법론개발및적용 : SKT 방법론개발, 예금보험공사, 신용회복위원회 CBD 적용컨설팅 기업체강의 : SK C&C CBD 전임강사 4 년, 다수보험사강의, 대우정보시스템 CBD 강사 1
목표 개발자의활용도구로써 Spring 과유관제품에대한이해를돕는다. Spring 의지향점을명확하게이해하여적절한활용을돕는다. Spring 관련최근동향파악을통해기술발전방향을짚어본다. 3 목차 1. Spring 프레임워크소개 2. Spring 포트폴리오소개 3. Spring One Americas 2008 4 2
1. Spring 프레임워크소개 Spring 프레임워크의시작 Spring 프레임워크등장배경 Interface 21 에서 Spring 프레임워크로 POJO 프로그래밍의필요성 Spring 프레임워크소개 5 1 Spring 프레임워크의시작 2002년 11월출간한 J2EE Design and Development 에포함한 3만라인의코드출판사인 Wrox 포럼에서 Juergen Hoeller 그리고 Yann Caroff가오픈소스프로젝트를권유 Yann Caroff가 Spring 이라는이름을고안 2003년 6월오프소스로프로젝트로공개 2004년 3월 1.0 출시 Rod Johnson은당시유럽대형포털, 보험, 금융권 J2EE 아키텍트이며, JCP의 JSR-154 (Servlet 2.4), JDO 2.0 Expert Groups 일원 6 3
Spring 프레임워크등장배경 EJB - 자바엔터프라이즈기술의꽃 Version 1.0 : 1998 년 EJB 스펙이약속한것 EJB 는애플리케이션개발을쉽게해줄것이다 애플리케이션개발자는로우레벨의트랜잭션, 상태관리, 멀티쓰레드, 리소스풀링등의복잡한로우레벨 API 등을알필요가없다. EJB 는자바의 WORA(write-once, run anywhere) 철학을따라서, 한번개발되면다양한플랫폼에서컴파일과코드의수정없이사용될것이다 Spring 프레임워크등장배경 EJB - 스펙과구현그리고실제의 Gap 신뢰할만한구현체 (implementation) 의존재없이만들어지는스펙의한계 스펙설계에참여한벤더간의다툼으로인한스펙의왜곡 관련기술의발전과현장의변화를따라가지못하는스펙 - 구현의긴싸이클 (2-3 년 ) 구현벤더의비표준기능의범람 4
Spring 프레임워크등장배경 갈수록복잡해져가는 EJB 스펙 1.0, 1.2, 2.0, 2.1, 3.0, 3.1, 복잡도의급격한증가 학습과스펙구현의어려움 EJB 의정체성과목표에관련된혼란 EJB 는컴포넌트모델인가? 리모팅모델인가? EJB 는컴포넌트인가? 오브젝인가? EntityBean 은 persistent object 이어야하는게아닌가? Spring 프레임워크등장배경 EJB 의단점 잘못설계된기술 EntityBean Persistent/OR-Mapping 기술은 EJB 와분리되야했다. 복잡한설계구조 / 아키텍처 과도한기술 (over engineering) 의적용 성능저하, 학습비용증가 객체지향적인설계와구현의장애 환경, 툴, 스펙에종속적인개발 복잡한설정파일 (Deployment Descriptor Hell) 테스트의어려움 불필요한복잡도의증가를불러옴 5
Spring 프레임워크등장배경 EJB 의장점 EJB 는여러가지장점도가지고있다 선언적트랜잭션관리 CMT(Container-managed Transactions) EJB 의가장성공적인기술 Remoting RMI/IIOP 를이용한 remoting 을손쉽게작성할수있다 Thread Management/Instance Pooling Resource Pooling Security 선언적인방식에의한 Role 기반의보안설정 Spring 프레임워크등장배경 EJB 없는자바엔터프라이즈개발은가능한가? EJB 는 J(2)EE 가아니다! EJB!= JavaEnterpriseEdition J(2)EE = EJB + Serlvet + JSP + Java WebService + JSF + JCA + JAF + JavaMail + JMS + JTA +.. 6
Spring 프레임워크등장배경 EJB 를대치할만한대안기술의필요 EJB 의불필요한복잡도제거 EJB 의엔터프라이즈개발과관련된장점은유지 객체지향기술을살린설계와구현이가능 특정환경, 서버에종속되지않는기술 빠르고손쉬운테스트가가능 J(2)EE Development without EJB! POJO 기술등장의배경 Interface 21 에서 Spring 프레임워크로 2004 년 6 월 -> 2005 년 6 월 14 7
POJO 프로그래밍의필요성 POJO 의시대 인기있는오픈소스또는상용자바프레임워크는 POJO 기반임을강조한다 SpringFramework Hibernate JBoss 최신자바엔터프라이즈기술인 JEE5/EJB3 역시 POJO 를주요한특징으로내세운다 POJO 를주제로다루는많은자바서적의등장 POJOs in Action Beginning POJOs POJO 프로그래밍의필요성 POJO 란무엇인가? Plain Old(Ordinary) Java Object Martin Folwer (2000), Rebecca Parsons, Josh MacKenzie EJB Bean 에대응되는개념으로시작 비즈니스로직을 EJB 가아닌일반자바오브젝트 (Regulary) 에사용하지않는이유는폼나는이름이없기때문이다 그런데 Enterprise Bean 도자바오브젝트가아닌가? 8
POJO 프로그래밍의필요성 POJO 의특징 특정규약 (contract) 에의존적이지않는다 EJB Home/Remote Interface 환경 (environment) 에의존적이지않는다 특정환경에제한을받는 API 를사용하지않는다 특정 Lookup 방식을사용하지않는다 (ex. JNDI) POJO 프로그래밍의필요성 POJO 가아닌것 특정클래스를상속하는것 public class Foo extends javax.servlet.http.httpservlet{... 특정인터페이스를구현한것 public class Bar implements javax.ejb.entitybean{... 특정환경에종속적인어노테이션을사용한것 @javax.ejb.entity public class Bar { 9
POJO 프로그래밍의필요성 POJO 방식의장점 코드가간결해진다 높은유연성을가진다 재사용에유리하다 이해가쉽다 코드가특정환경에의존적이지않다 개발자가기술과 Infrastructure 가아닌비즈니스로직에집중할수있다 고립된상태에서테스트 (isolation test) 하는것이가능하다 POJO 프로그래밍의필요성 POJO 방식의장점 개발자들이특정기술에대한관심보다객체지향 (OO) 디자인원칙에집중할수있도록해준다 생산성과품질을향상시킬수있다 10
POJO 프로그래밍의필요성 IArticleInfoServices registerarticle(article : Article) : boolean ArticleManager ArticleManager() registerarticle(article : Article) : boolean -author -article -article Author name : Logical View::java::lang::String email : Logical View::java::lang::String blog : Logical View::java::lang::String Author() Article title : Logical View::java::lang::String url : Logical View::java::lang::String published : Logical View::java::util::Date description : Logical View::java::lang::String publisher : Logical View::java::lang::String validate() : boolean Article() POJO 프로그래밍의필요성 11
POJO 프로그래밍의필요성 POJO 를이용한도메인설계 POJO 프로그래밍의필요성 POJO의장점이있지만 EJB가제공하는많은엔터프라이즈서비스는어떻게할것인가? 1. POJO를포기하고적당히타협한다 (EJB) 2. POJO에서엔터프라이즈서비스가가능한기술과방법을찾는다 POJO기반프레임워크의등장이유 EJB가제공하는엔터프라이즈서비스의장점을 POJO를이용해서도그대로사용할수있게도와주는프레임워크가필요하다 12
POJO 프로그래밍의필요성 Declarative Service( 선언적서비스 ) EJB 가가지는 트랜잭션 보안 리모팅 등을 POJO 를이용해서 선언적 인방법으로사용할수있게해준다 Programmatic 하게사용해야한다면 POJO 라고볼수없다 POJO 프로그래밍의필요성 Declarative Service를이용하면 POJO를수정하지않고 그대로유지한채로 JTA트랜잭션에서 JDBC 트랜잭션으로 RMI endpoint에서 SOAP endpoint로바꾸는것등이가능하다 POJO 기반의선언적서비스를지원하는프레임워크가필요하다 13
Spring 프레임워크소개 SpringFramework 란? 경량급풀스택 JSE/JEE 애플리케이션프레임워크 경량급 (Lightweight) 비침략적 (Non-invasive) 규모가작고기술이가볍다는의미가아니다 Full Stack HelloWorld, JSE, JEE 모든레이어 (UI, Service, Domain, Data) 애플리케이션프레임워크 애플리케이션개발을쉽고견고하게 Spring 프레임워크소개 SpringFramework의역사 2002년 : J2EE Design and Development의책에제시된 J2EE 개발철학과예제코드에서출발 2003년 : Juegen Hoeller와 Rod Johnson에의해서 Open Source Project로시작 2004년 : Spring 1.0 2006년 : Spring 2.0 2007년 : Spring 2.5 사실상 (de facto) 의자바엔터프라이즈표준프레임워크 Eclipse와같은기술생태계 14
Spring 프레임워크소개 Spring 을이해하는가장좋은방법은 Spring 이지향하는목표를이해하는것이다 Spring 의목표 POJO 를이용한애플리케이션개발 엔터프라이즈서비스를선언적 (declarative), 비침략적 (non-invasive) 인방법으로 POJO 에적용 자바코드에수정을주지않고트랜잭션을적용 POJO 를그대로 WebService, RMI 서비스 endpoint 로사용 Spring 프레임워크소개 SpringFramework 의전략 15
Spring 프레임워크소개 Spring 의가능기술 (Enabling technologies) Spring 프레임워크소개 프레임워크구성 32 16
Spring 프레임워크소개 vs 전통적인 J2EE 기술구성 33 2. Spring 포트폴리오소개 Spring 포트폴리오소개 Spring Extensions The SpringSource Application Platform 34 2 17
Spring 포트폴리오소개 Spring Portfolio 스프링을중심으로한서브, 호환프로젝트, 제품기술 Data Access Layer JDBC, ibatis, JDO, Hibernate, TopLink 지원 JPA 지원 (Hibernate, OpenJPA, Toplink essentials) Enterprise system: CICS, JMS, JCA CCI Spring LDAP Service Layer Scheduling:JDK Timer, Quartz Asychronous task: TaskExecutor (ThreadPool, CommonJ WorkManager) Messaging JMS 기반의 Message Driven POJO Spring Web Services: (Castor, JAXB) ESB Integration: Mule Batch Application: Spring Batch EJB 3.0-style: Pitchfork Spring 포트폴리오소개 Spring Portfolio Clustering Coherences DataGrid for Spring Terracotta Gigaspace for Spring Security Acegi Security (Spring Security) Presentation Layer Spring Rich Client Spring Web MVC Spring Web Flow Spring Faces Spring JavaScript SpringIDE Ajax: DWR for Spring Channel Spring Integration 18
Spring 포트폴리오소개 Spring Portfolio Web Services Spring Web Services AOP SpringAOP AspectJ OSGi Spring Dynamic Modules for the OSGi Service Platform (Spring-OSGi) IDE Spring IDE 다이나믹스크립트언어통합 / 다른플랫폼포팅 JRuby Groovy Beanshell Grails Spring.NET Spring Security (formerly Acegi) 선언적보안이가능하도록 HTTP BASIC authentication headers (an IEFT RFC-based standard) HTTP Digest authentication headers (an IEFT RFC-based standard) HTTP X.509 client certificate exchange (an IEFT RFC-based standard) LDAP (a very common approach to cross-platform authentication needs, especially in large environments) Form-based authentication (for simple user interface needs) Computer Associates Siteminder JA-SIG Central Authentication Service (otherwise known as CAS, which is a popular open source single sign on system) Transparent authentication context propagation for Remote Method Invocation (RMI) and HttpInvoker (a Spring remoting protocol) Automatic "remember-me" authentication (so you can tick a box to avoid re-authentication for a predetermined period of time) Anonymous authentication (allowing every call to automatically assume a particular security identity) Run-as authentication (which is useful if one call should proceed with a different security identity) Java Authentication and Authorization Service (JAAS) Container integration with JBoss, Jetty, Resin and Tomcat (so you can still use Container Manager Authentication if desired) Your own authentication systems (see below) 38 19
Spring Web Flow Spring Web MVC (Spring 프레임워크에포함된웹 MVC 모듈 ) 기반에서 JSF(Java Server Faces) 및 AJAX 활용 39 Spring Web Services Spring 기반을활용하여 SOAP 서비스개발할수있도록 JAXP(DOM, SAX,StAX) 및 JAXB 지원 40 20
Spring Dynamic Modules for the OSGi Service Platform Spring 애플리케이션을 OSGi 플랫폼에서구동하도록 41 Spring Batch 배치애플리케이션을위한프레임워크로 Accenture 와공동개발 42 21
Pitchfork/ AspectJ/ Spring IDE/ Spring LDAP/ Spring RCP Pitchfork Spring 애플리케이션에 EJB 3.0 스타일개발을가능하도록 SpringSource 와 BEA 가공동개발 AspectJ 가장강력한 AOP 프레임워크 Adrian Colyer, Andy Clement 등 SpringSource 인원들이주요 Committer Spring IDE Spring 및 SWF 애플리케이션개발을지원하는이클립스플러그인 Spring LDAP LDAP 프로그래밍라이브러리 Spring RCP Swing 애플리케이션개발프레임워크 43 Spring.NET Spring 프레임워크를.NET 에포팅 44 22
Spring Integration EIP 구현을통해 Spring 애플리케이션에 Integration 레이어제공 45 Spring Extensions 커뮤니티가주도하는스프링포트폴리오지원프로그램 개발환경 (CI와포럼포함 ) 과내부후원자지원 Proposal > Incubation > Live > Join Spring Projects/Archived Live Spring Python Incubator Spring db4o SQLJ for Spring Spring Workflow Spring Integration Adapters Spring db40 for.net (.NET) Spring Actionscript (Actionscript) 46 23
The SpringSource Application Platform Spring Embedded Runtimes SpringSource T ool Suite SpringSource A MS Performanc e Analyzer Spring- Powered Application SpringSource AMS Application Instrumentation SpringSource A MS Performanc e Monitor Spring Enterprise WLS, WAS JBo ss SpringSource dm Server SpringSource tc Server Openview, Patr ol, Tivoli, Unice nter Advanced Database Packs Database 47 The SpringSource Application Platform SpringSource dm Server 48 24
The SpringSource Application Platform SpringSource tc Server 49 The SpringSource Application Platform SpringSource 의 Covalent 인수 50 25
3. Spring One Americas 2008 2 Spring One Americas 소개 Weapons for the War on Java Complexity SpringSource의 2008년성과 S1A 기조연설을통해본 2009년전망 Spring 포트폴리오의발전방향 51 Spring One Americas 소개 Spring One은 2006년이래로매년 2차례열리는 Spring 최대의 Conference 하계에는유럽에서, 동계에는미국플로리다에서개최플로리다에서열리는 Spring One Americas(The Spring Experience) 는유럽에서열리는 Spring One Euro에비해세션이나참여인원등에서규모가큼 이번 Spring One Americas 2008 에서는 3 개의 keynote 와 6 개의트랙에걸쳐서총 65 개의세션이열렸다. 52 26
Weapons for the War on Java Complexity 자바엔터프라이즈영역의지상과제에도전하는 SpringSource 의새로운태그라인 Complexity SpringSource 의 2008 년성과 Spring Web Flow 2.0 출시 flow가있는업무화면개발지원프레임워크 Spring Batch 출시 Accenture 주도의대용량배치 runtime 솔루션 Spring Integration 프로젝트개시 Message 기반채널연계솔루션 Spring 3.0 개발 2009년 1/4 분기출시예정 SpringSource dm Server 출시 OSGi 기반차세대서버제품 Covalent Technologies 인수 (2008.1) Apache 웹서버및 Tomcat 개발및기술지원업체 G2One 인수 (2008.11) 오픈소스프로젝트Groovy/Grails 개발및기술지원업체상용제품출시 SpringSource Tool Suite SpringSource Application Management Suite SpringSource Advanced Pack for Oracle. 54 27
S1A 기조연설을통해본 2009 년전망 Rod Johnson (SpringSource CEO) 2008년불어닥친세계경기악화가 IT 예산에대한압박으로라이선스비용에대해서는보다엄격해질것이고, 복잡도에서유발하는비용을줄이기위한투자는늘어날것으로전망 복잡도를줄이기위한새로운제품출시계획 : tc Sever, SpringSource Application Platform Configurator John Rymer: Forrester Research의 principle analyst (AA 전문 ) Lean Software를화두로제시 Antidote to bloated vendors products/applications 개발자커뮤니티가주도하고벤더가공조 애자일방법론대세를이룰것으로전망 Lean Software specialists will thrive 벤더에대한전망 MS will beat IBM and Oracle to PaaS SAP 플랫폼영향력감소 SUN shrinks by killing products, may not survive Adrian Coyler (SpringSource CTO) Spring Integration 과 Grails 를이용하여단숨에웹애플리케이션과채널연계애플리케이션을개발하고연동하는시연 Adobe 와제휴소개 Blaze DS 지원프로젝트 Adobe LiveCycle Data Services ES for Adobe Flex 연계를지원 서버가상화선두업체인 VMWare 와의제휴 55 Spring 포트폴리오의발전방향 Spring 3.0 XML 보다는 Annotations 위주의설정강화 Java 5+ foundation compatible with J2EE 1.4 and Java EE 5 Spring Expression Language Spring Web MVC 기반의 REST 지원 vs. JAX-RS Portlet 2.0 지원 선언적모델검증 (validation) Hibernate Validator JSR 303 Early support for Java EE 6 JSF 2.0, JPA 2.0 등 웹개발편의성강화 JavaScript 라이브러리 dojo 결합 Spring Web MVC 기반을유지한복잡한 Page Navigation, JSF, Ajax, REST 지원 56 28
다운로드 Spring 포트폴리오의발전방향 Grails 의가능성 80,000 70,000 60,000 50,000 40,000 30,000 20,000 10,000 0 Groovy & Grails 다운로드 8 월 9 월 10 월 11 월 Groovy 36,000 27,000 39,000 70,000 Grails 37,000 27,000 40,000 74,000 57 Spring 포트폴리오의발전방향 Without WAS? 58 29