SlideShare a Scribd company logo
No part of this document may be circulated, quoted, or reproduced for distribution outside the client organization without prior written approval from UWS
Eureka Moment for Digital Transformation
- 엔터프라이즈 어플리케이션 아키텍처
2017. 11. 16
이 현 주 대표이사
- 1 -
- 2 -
1. 엔터프라이즈 어플리케이션 Enterprise Application
“엔터프라이즈 어플리케이션은 막대한 규모의 복잡한 데이터를 표시, 관리,
저장하고, 이러한 데이터를 이용한 비즈니스 프로세스를 지원하거나 자동화하는
애플리케이션을 말한다.”
- Martin Fowler, Patterns of Enterprise Application Architecture
이 슈
 각 시스템은 각기 다른 시기에 다른 기술을
바탕으로 구축되며, 공동 작업 메커니즘 (데이터
포맷, 메세징 시스템 등)이 상이하 경우가 많음
 동시에 여러 다른 통합 체계가 존재함
 비즈니스 프로세스의 차이와 데이터에 대한
개념 불일치로 인한 문제
 비즈니스 논리가 예외적인 상황이 많음
특 징
 지속적 데이터 처리
 막대한 양의 데이터 처리
 여러 사람이 동시에 데이터를 처리함
 많은 데이터를 처리하기 위한 사용자
인터페이스 화면의 수가 많음
 단독으로 운영되는 경우가 없음
- 3 -
2. 아키텍처 Enterprise Application
“아키텍처는 프로젝트에 참여하는 전문 개발자의 시스템 설계에 대한 공유된
이해를 반영하는 주관적 개념이다. 이 공유된 이해는 일반적으로 시스템의 중요
컴포넌트, 그리고 이러한 컴포넌트 간의 상호작용 방법에 대한 것이다.”
- Ralph Johnson
이 슈
 계층형 아키텍처 (프레젠테이션, 도메인, 데이터
원본)
 파이프 아키텍처
 필터 아키텍처
 모놀리식 아키텍처
 마이크로 서비스 아키텍처
 서버리스 아키텍처
특 징
 공유된 이해를 반영하는 주관적 개념
 시스템의 중요한 컴포넌트 그리고 컴포넌트
간의 상호작용 방법
 올바른 의사결정에 대한 것이며 여전히 주관적
- 4 -
1. Java 플랫폼 모듈 시스템 Java 9 updated
Jigsaw(직소) 프로젝트 기반하에 개발된 Java9 Module 시스템은 안정적인 구성과 유연한 캡슐화를 제공하여
개발자(라이브러리, 응용, Java SE)는 확장 가능한 플랫폼을 만들고 무결성을 높이며 성능을 향상 시킬 수 있습니다.
Java 9
 모듈을 만들고 모듈에 명시적으로 외부에서 호출할 수
있는 API와 연계할 다른 모듈을 선언, API 캡슐화 구성
이 슈
 기존 Java 패키징 매커니즘의 문제
 캡슐화 지원 부족
 가시성 한정자 (visibility modifier)가 클래스까지만
유화하고 패키징에서 부족함
 JAR로 제공된 패키지의 클래스를 보면 어느 클래스를
써야하는지 알 수 없으므로 API 설계자가 의도하지 않은
호출이 발생할 수 있음
 유연한 런타임 이미지를 만들 수 있도록 Java 플랫폼을
모듈화
 필요한 모듈만으로 경량화된 이미지를 만들 수 있음
 어플리케이션이 사용하는 런타임 환경(이미지)를 만들
수 있음
 Java에서 사용하는 표준 API뿐만 아니라 3rd party
라이브러리도 필요한 것만 배포 가능
 소형 디바이스 – IoT
 서버 아키텍처 – 애플리케이션의 컨테이너화(도커),
마이크로 서비스, 클라우드
 스타트업의 시간과 성능 – 필요한 모듈만 구동
- 5 -
2. 대화식 REPL 도구 제공 Java 9 updated
Java 9는 테스트 프로젝트 없이 코드 셋을 신속하게 테스트할 수 있는 대화식 REPL(Read-Eval-Print-Loop) 도구
제공하여 Java 기능을 쉽게 배우거나 평가할 수 있습니다.
 파이썬과 같은 Intepretor 언어 만큼은 아니지만 이제 codecademy 와 같은 코드 학습 웹 서비스에서
Java를 배울 수 있을지도…..곧….
- 6 -
3. HTML5 Javadoc Java 9 updated
Javadoc은 HTML형식의 API문서를 생성할 수 있는 도구이며 이전 JDK에서는 HTML 4.01 형식을 사용했지만 JDK9
Javadoc은 HTML5 markup을 생성하고 검색 기능 및 Doclint를 향상시켰습니다.
 HTML5를 지원하는 JDK9에서는 -html5 parameter를 추가함
- 7 -
4. 기타 Java 9 updated
 try-with-resources 향상 – 코드를 깔끔하게 유지할 수 있음
 Private 인터페이스 메소드 – 중복 코드를 피하고 인터페이스를 캡슐화할 수 있음
 다이아몬드 연산자 – 익명클래스에 대한 <> 추가
구 분 내 용
Languate update
 프로세스 API – 모든 프로세스, 현재/하위/종료된 프로세스 정보 확인할 수 있음
 플랫폼 로깅 API 및 서비스 – 로깅 API 메시지 사용자를 위한 서비스 인터페이스
 CompletableFuture API 강화 – 지연 시간 초과 지원하는 부분 개선함
 Reactive Streams – Flow API
New code Libraries
“우여 곡절끝에 공식 릴리즈된 Java9에 대해 빠르게 훑어 보았다. 개인적으로 Java9에 신규로 도입되어진
직소(Jigsaw)에 대해 공식 릴리즈 이전부터 관심을 가지고 있었고 Java9에서 가장 관심갖고 지켜봐야할
부분이 아닌가 생각한다. 직소를 보면 Java 라는 언어가 전통적으로 강세를 보여왔던 Enterprise
Application에서 좀 더 Small size Application 지원을 위한 또 하나의 초석을 닦았다는 생각이 든다.
혹자들은 Java는 죽었다고들 하지만 본인은 직소같은 메커니즘의 도입이 Java의 생명을 계속해서
연장해줄거라고 판단한다. ”
- 8 -
1. 개념 마이크로 서비스 아키텍처
- 9 -
2. 컨셉 마이크로 서비스 아키텍처
- 10 -
3. SOA, MSA? 마이크로 서비스 아키텍처
- 11 -
4. Why MSA? 마이크로 서비스 아키텍처
- 12 -
5. 마이크로 서비스 아키텍처! 마이크로 서비스 아키텍처
- 13 -
6. 단점 마이크로 서비스 아키텍처
- 14 -
7. 사례 마이크로 서비스 아키텍처
- 15 -
1. 배경 Spring
“EJB를 사용하면 어플리케이션 작성을 쉽게 할 수 있다. 저수즌의 트랜잭션이나 상태관리, 멀티 쓰레딩,
리소스 풀링과 같은 복잡한 저수준의 API 를 이해하지 못하더라도 아무 문제없이 어플리케이션을 개발할
수 있다.”
- Enterprise JavaBean 1.0 Specification, Chater 2 Goals
자바 엔터프라이즈 어플리케이션 개발 표준 EJB
EJB의 대안, 스프링 프레임워크
그러나 현실은 너무 어려웠다.
 Rod Johnson은 자신의 저서에서 EJB를 사용하지 않고 엔터프라이즈 어플리케이션을 개발하는 방법을
소개하였고, 이것이 스프링 프레임워크의 모태가 되었다.
 2003년 Juergen Hoeller의 팀이 스프링 프레임워크를 만듬  EJB는 겨울 같아서
스프링이라 명칭 정함
- 16 -
2. POJO+Framework Spring
점차 POJO + 경량 프레임워크를 사용하기 시작
POJO (Plain Old Java Object)
- 특정 프레임워크나 기술에 의존적이지 않은 자바 개체
- 특정 기술에 얽매이지 않기 때문에 생산성, 이식성 향상
경량 프레임워크
- EJB가 제공하는 서비스를 지원해 줄 수 있는 프레임워크 등장
- Hibernate, JDO, iBatis, Spring
- 17 -
3. 스프링 프레임워크 Spring
스프링프레임워크란?
- 자바로 엔터프라이즈 어플리케이션을 만들 때 사용할 수 있는 Programming 및 Configuration 모델을
제공해주는 프레임워크
- 주로 하는 일이 바로 어플리케이션 수준에 인프라스트럭처를 제공하는 일이고…
- 쉽게 말하면, 개발자가 비즈니스 로직 개발에만 전념할 수 있게 해준다.
2003년 6월 아파치 2.0 라이선스로 공개
- 1.0 : 2004년 4월
- 3.0 : 2009년 12월
- 4.0.1 : 2014년 1월
- 5.0 : 2017년 10월
- 현재 Java 9 지원
- 18 -
전자정부프레임워크 & AXBoot Framework
전자정부프레임워크 소개
P4, 16, 18 19
AXBoot Fullstack Framework 소개
우리는 다른 방식으로 시장을 바라보고 파괴적인 혁신을 준비하고 있습니다.

More Related Content

PPTX
서비스 지향 아키텍쳐 (SOA)
PPTX
Jbug 발표 msa탐방기_공유자료
PPTX
모바일 개발 트랜드
PPTX
마이크로 서비스 아키텍쳐 소개 및 구현 방법
PPTX
Micro Service Architecture(MSA) 탐방기
PPTX
JBoss EAP
PDF
SLiPP 스터디 - MSA
PPTX
1. 아키텍쳐 설계 프로세스
서비스 지향 아키텍쳐 (SOA)
Jbug 발표 msa탐방기_공유자료
모바일 개발 트랜드
마이크로 서비스 아키텍쳐 소개 및 구현 방법
Micro Service Architecture(MSA) 탐방기
JBoss EAP
SLiPP 스터디 - MSA
1. 아키텍쳐 설계 프로세스

What's hot (20)

PDF
JBUG Korea 소개
PPTX
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
PPTX
Os gi 기술교육
PPTX
ESB의 이해와 기술 동향
PPTX
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
PPTX
Micro Service Architecture의 이해
PDF
Sencha ExtJS 5 와 Sencha Architect 3 를 활용한 엔터프라이즈 솔루션 개발사례
PPTX
빠르게훓어보는 Node.js와 Vert.x
PPTX
3. 마이크로 서비스 아키텍쳐
PPTX
4. 대용량 아키텍쳐 설계 패턴
PPTX
01.WEB SYSTEM BASED ON DOCKER
PPTX
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
PPTX
제13회컨퍼런스 조대협 서버사이드개발
PPTX
MSA를 이용해 구현하는 고가용/고확장성 서비스
PPTX
Wso2 api manager 특징 slide share
PPTX
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
PPTX
제품소개서 (Pastel editor)
PDF
hexa core
PPTX
기술적 변화를 이끌어가기
PDF
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
JBUG Korea 소개
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
Os gi 기술교육
ESB의 이해와 기술 동향
02.JBOSS EAP7(FOR CONTAINER/CLOUD)
Micro Service Architecture의 이해
Sencha ExtJS 5 와 Sencha Architect 3 를 활용한 엔터프라이즈 솔루션 개발사례
빠르게훓어보는 Node.js와 Vert.x
3. 마이크로 서비스 아키텍쳐
4. 대용량 아키텍쳐 설계 패턴
01.WEB SYSTEM BASED ON DOCKER
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
제13회컨퍼런스 조대협 서버사이드개발
MSA를 이용해 구현하는 고가용/고확장성 서비스
Wso2 api manager 특징 slide share
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
제품소개서 (Pastel editor)
hexa core
기술적 변화를 이끌어가기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
Ad

Similar to [Uws] enterprise application architecture, msa, java9, spring 소개 (20)

PDF
2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외
PPTX
java_1장.pptx
PPTX
자바9 특징 (Java9 Features)
PPTX
개발 방식을 바꾸는 15가지 기술
PPTX
java_1장
PDF
[Part1] Welcome To the Java World
PDF
Java9 특징 훑어보기
PPTX
java_1장.pptx
PDF
클린 코드 part2
PPTX
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
PDF
11장 시스템
PDF
프로그래밍 방식의 변천 과정
PPTX
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
PPTX
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
PDF
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
PDF
(OkdevTV) 2025년 1월 8일 개발 이야기
PDF
[오픈소스컨설팅]Spring 3.1 Core
PDF
Java 8 & Beyond
PDF
Java the good parts
PPTX
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
2024년 5월 27일 개발자 이야기 - 2024년 자바 생태계 정리(by 뉴 렐릭) 외
java_1장.pptx
자바9 특징 (Java9 Features)
개발 방식을 바꾸는 15가지 기술
java_1장
[Part1] Welcome To the Java World
Java9 특징 훑어보기
java_1장.pptx
클린 코드 part2
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
11장 시스템
프로그래밍 방식의 변천 과정
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
(OkdevTV) 2025년 1월 8일 개발 이야기
[오픈소스컨설팅]Spring 3.1 Core
Java 8 & Beyond
Java the good parts
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
Ad

[Uws] enterprise application architecture, msa, java9, spring 소개

  • 1. No part of this document may be circulated, quoted, or reproduced for distribution outside the client organization without prior written approval from UWS Eureka Moment for Digital Transformation - 엔터프라이즈 어플리케이션 아키텍처 2017. 11. 16 이 현 주 대표이사
  • 3. - 2 - 1. 엔터프라이즈 어플리케이션 Enterprise Application “엔터프라이즈 어플리케이션은 막대한 규모의 복잡한 데이터를 표시, 관리, 저장하고, 이러한 데이터를 이용한 비즈니스 프로세스를 지원하거나 자동화하는 애플리케이션을 말한다.” - Martin Fowler, Patterns of Enterprise Application Architecture 이 슈  각 시스템은 각기 다른 시기에 다른 기술을 바탕으로 구축되며, 공동 작업 메커니즘 (데이터 포맷, 메세징 시스템 등)이 상이하 경우가 많음  동시에 여러 다른 통합 체계가 존재함  비즈니스 프로세스의 차이와 데이터에 대한 개념 불일치로 인한 문제  비즈니스 논리가 예외적인 상황이 많음 특 징  지속적 데이터 처리  막대한 양의 데이터 처리  여러 사람이 동시에 데이터를 처리함  많은 데이터를 처리하기 위한 사용자 인터페이스 화면의 수가 많음  단독으로 운영되는 경우가 없음
  • 4. - 3 - 2. 아키텍처 Enterprise Application “아키텍처는 프로젝트에 참여하는 전문 개발자의 시스템 설계에 대한 공유된 이해를 반영하는 주관적 개념이다. 이 공유된 이해는 일반적으로 시스템의 중요 컴포넌트, 그리고 이러한 컴포넌트 간의 상호작용 방법에 대한 것이다.” - Ralph Johnson 이 슈  계층형 아키텍처 (프레젠테이션, 도메인, 데이터 원본)  파이프 아키텍처  필터 아키텍처  모놀리식 아키텍처  마이크로 서비스 아키텍처  서버리스 아키텍처 특 징  공유된 이해를 반영하는 주관적 개념  시스템의 중요한 컴포넌트 그리고 컴포넌트 간의 상호작용 방법  올바른 의사결정에 대한 것이며 여전히 주관적
  • 5. - 4 - 1. Java 플랫폼 모듈 시스템 Java 9 updated Jigsaw(직소) 프로젝트 기반하에 개발된 Java9 Module 시스템은 안정적인 구성과 유연한 캡슐화를 제공하여 개발자(라이브러리, 응용, Java SE)는 확장 가능한 플랫폼을 만들고 무결성을 높이며 성능을 향상 시킬 수 있습니다. Java 9  모듈을 만들고 모듈에 명시적으로 외부에서 호출할 수 있는 API와 연계할 다른 모듈을 선언, API 캡슐화 구성 이 슈  기존 Java 패키징 매커니즘의 문제  캡슐화 지원 부족  가시성 한정자 (visibility modifier)가 클래스까지만 유화하고 패키징에서 부족함  JAR로 제공된 패키지의 클래스를 보면 어느 클래스를 써야하는지 알 수 없으므로 API 설계자가 의도하지 않은 호출이 발생할 수 있음  유연한 런타임 이미지를 만들 수 있도록 Java 플랫폼을 모듈화  필요한 모듈만으로 경량화된 이미지를 만들 수 있음  어플리케이션이 사용하는 런타임 환경(이미지)를 만들 수 있음  Java에서 사용하는 표준 API뿐만 아니라 3rd party 라이브러리도 필요한 것만 배포 가능  소형 디바이스 – IoT  서버 아키텍처 – 애플리케이션의 컨테이너화(도커), 마이크로 서비스, 클라우드  스타트업의 시간과 성능 – 필요한 모듈만 구동
  • 6. - 5 - 2. 대화식 REPL 도구 제공 Java 9 updated Java 9는 테스트 프로젝트 없이 코드 셋을 신속하게 테스트할 수 있는 대화식 REPL(Read-Eval-Print-Loop) 도구 제공하여 Java 기능을 쉽게 배우거나 평가할 수 있습니다.  파이썬과 같은 Intepretor 언어 만큼은 아니지만 이제 codecademy 와 같은 코드 학습 웹 서비스에서 Java를 배울 수 있을지도…..곧….
  • 7. - 6 - 3. HTML5 Javadoc Java 9 updated Javadoc은 HTML형식의 API문서를 생성할 수 있는 도구이며 이전 JDK에서는 HTML 4.01 형식을 사용했지만 JDK9 Javadoc은 HTML5 markup을 생성하고 검색 기능 및 Doclint를 향상시켰습니다.  HTML5를 지원하는 JDK9에서는 -html5 parameter를 추가함
  • 8. - 7 - 4. 기타 Java 9 updated  try-with-resources 향상 – 코드를 깔끔하게 유지할 수 있음  Private 인터페이스 메소드 – 중복 코드를 피하고 인터페이스를 캡슐화할 수 있음  다이아몬드 연산자 – 익명클래스에 대한 <> 추가 구 분 내 용 Languate update  프로세스 API – 모든 프로세스, 현재/하위/종료된 프로세스 정보 확인할 수 있음  플랫폼 로깅 API 및 서비스 – 로깅 API 메시지 사용자를 위한 서비스 인터페이스  CompletableFuture API 강화 – 지연 시간 초과 지원하는 부분 개선함  Reactive Streams – Flow API New code Libraries “우여 곡절끝에 공식 릴리즈된 Java9에 대해 빠르게 훑어 보았다. 개인적으로 Java9에 신규로 도입되어진 직소(Jigsaw)에 대해 공식 릴리즈 이전부터 관심을 가지고 있었고 Java9에서 가장 관심갖고 지켜봐야할 부분이 아닌가 생각한다. 직소를 보면 Java 라는 언어가 전통적으로 강세를 보여왔던 Enterprise Application에서 좀 더 Small size Application 지원을 위한 또 하나의 초석을 닦았다는 생각이 든다. 혹자들은 Java는 죽었다고들 하지만 본인은 직소같은 메커니즘의 도입이 Java의 생명을 계속해서 연장해줄거라고 판단한다. ”
  • 9. - 8 - 1. 개념 마이크로 서비스 아키텍처
  • 10. - 9 - 2. 컨셉 마이크로 서비스 아키텍처
  • 11. - 10 - 3. SOA, MSA? 마이크로 서비스 아키텍처
  • 12. - 11 - 4. Why MSA? 마이크로 서비스 아키텍처
  • 13. - 12 - 5. 마이크로 서비스 아키텍처! 마이크로 서비스 아키텍처
  • 14. - 13 - 6. 단점 마이크로 서비스 아키텍처
  • 15. - 14 - 7. 사례 마이크로 서비스 아키텍처
  • 16. - 15 - 1. 배경 Spring “EJB를 사용하면 어플리케이션 작성을 쉽게 할 수 있다. 저수즌의 트랜잭션이나 상태관리, 멀티 쓰레딩, 리소스 풀링과 같은 복잡한 저수준의 API 를 이해하지 못하더라도 아무 문제없이 어플리케이션을 개발할 수 있다.” - Enterprise JavaBean 1.0 Specification, Chater 2 Goals 자바 엔터프라이즈 어플리케이션 개발 표준 EJB EJB의 대안, 스프링 프레임워크 그러나 현실은 너무 어려웠다.  Rod Johnson은 자신의 저서에서 EJB를 사용하지 않고 엔터프라이즈 어플리케이션을 개발하는 방법을 소개하였고, 이것이 스프링 프레임워크의 모태가 되었다.  2003년 Juergen Hoeller의 팀이 스프링 프레임워크를 만듬  EJB는 겨울 같아서 스프링이라 명칭 정함
  • 17. - 16 - 2. POJO+Framework Spring 점차 POJO + 경량 프레임워크를 사용하기 시작 POJO (Plain Old Java Object) - 특정 프레임워크나 기술에 의존적이지 않은 자바 개체 - 특정 기술에 얽매이지 않기 때문에 생산성, 이식성 향상 경량 프레임워크 - EJB가 제공하는 서비스를 지원해 줄 수 있는 프레임워크 등장 - Hibernate, JDO, iBatis, Spring
  • 18. - 17 - 3. 스프링 프레임워크 Spring 스프링프레임워크란? - 자바로 엔터프라이즈 어플리케이션을 만들 때 사용할 수 있는 Programming 및 Configuration 모델을 제공해주는 프레임워크 - 주로 하는 일이 바로 어플리케이션 수준에 인프라스트럭처를 제공하는 일이고… - 쉽게 말하면, 개발자가 비즈니스 로직 개발에만 전념할 수 있게 해준다. 2003년 6월 아파치 2.0 라이선스로 공개 - 1.0 : 2004년 4월 - 3.0 : 2009년 12월 - 4.0.1 : 2014년 1월 - 5.0 : 2017년 10월 - 현재 Java 9 지원
  • 19. - 18 - 전자정부프레임워크 & AXBoot Framework 전자정부프레임워크 소개 P4, 16, 18 19 AXBoot Fullstack Framework 소개
  • 20. 우리는 다른 방식으로 시장을 바라보고 파괴적인 혁신을 준비하고 있습니다.