43
주니어 개발자도 이해 있는 코어 J2EE 패턴 - 학급반장편 - 2014. 12 Darion Kim

주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

Embed Size (px)

Citation preview

Page 1: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

주니어 개발자도 이해 할 수 있는 코어 J2EE 패턴 - 학급반장편 -

2014. 12Darion Kim

Page 2: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

나는 누구?Darion Kim (김헌기)

디에스멘토링 연구소 수석보

자칭 통신(통합의 신, God of Integration)

[email protected]

https://www.facebook.com/groups/serverside (율이아빠)

Page 3: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

이 문서를 모든 Freshman에게 바칩니다.

(for YMS, JHJ)

Page 4: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

약속드립니다. ^^절대 어렵게 얘기하지 않겠습니다.

Page 5: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

대신 좀 유치하더라도 제 눈높이에 맞춰

공감해주셨으면 합니다.

Page 6: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

자~ 이제 들어가 보도록 하겠습니다.

저와 눈높이를 맞춰주세요.아니시면 여기까지…^^

Page 7: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

한 교실에 20명의 학생들이 있습니다.

Page 8: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

어느날 새로운 담임선생님이 오셨습니다.

Page 9: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

선생님은 미화부장인 개똥이란 학생을 찾아서 일을 부

탁하려 합니다.

Page 10: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

그래서 학생 한명 한명씩 개똥이냐고 물어봐야 겠다

고 생각했습니다.

Page 11: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

자~~~ 여기서 첫번째 질문입니다.

선생님은 몇번을 물어봐야 개똥이를 찾을수 있을까요?

Page 12: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

운이 좋으면 1번만에 물어보고 운이 나쁘면 20번이나 물어봐

야 찾을 수 있습니다.

Page 13: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

선생님

학생1

학생2

학생3

학생4

학생5

학생6

학생7

학생8

학생9

학생10

학생11 학생16

학생12

학생13

학생14

학생15

학생18

학생19

학생20

학생17

Page 14: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

하지만 선생님은 생각을 달리먹고 단 2번만에 개똥이 학생을 찾았습니다.

Page 15: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

다시 두번째 질문입니다.

선생님은 어떻게 하셨길래 2번만에 개똥이 학생을 찾게 되었을 까요?

Page 16: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

정답은 바로 반장입니다.

Page 17: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

반장에게 물어보고 반장이 다시 개똥이 학생을 알려주어서 단 2번만에 찾을 수 있었습니다.

선생님 반장

학생1

개똥이

학생2

Page 18: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

선생님은 반장에게만 물어보면 단 2번만에 모든일을 할 수가 있었습니다.

Page 19: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

저는 이것을 학급반장패턴 이라고 이름을 지었습니다.

우리는 어떤일을 할때면 학급반장 같은 사람이 필요합니다.

Page 20: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

좀 유식한 말로 커맨드 패턴(Command Pattern)

이라고 합니다.

Page 21: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

원래 얘기하려고 했던 Java 기반의 웹 환경으로 다시 말

씀드리겠습니다.

Page 22: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

초기의 웹개발은 Servlet 기술로 View를 출력하였지만 구현에 대한 어려움이 있었기 때문에 이보다 구현이 훨씬 용이한 JSP 기술을 사용하

게 되었습니다.

Page 23: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

JSP 기술에 힘입어 사람들은 윤전기에서 신문을 찍어내듯이 화면을 대량으로 만들어 내기 시작했습니다.

Page 24: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

웹서비스는 계절별로 화면디자인을 바꾸거나 호기심이 가는 기능 추가로 고객만족을 추구해야

했습니다.

Page 25: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

하지만 JSP로는 기존 로직의 변경과 확장에 대해 어려움이 있었습니다.

만들기가 쉬워 대량으로 만들었지만 변경과 재사용은 어려웠습니다.

Page 26: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

웹브라우저

/a/a.jsp

/a/b.html

/a/cServ

/a/d.html

/a/e.jsp

/b/a.jsp

/b/b.html

/b/cServ

/b/d.html

/b/eServ

Page 27: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

이에 똑똑한 사람들은 고민을 하기 시작했습니다.

무수히 많은 JSP들을 어떻게 하면 쉽게 제어 할 수 있을까요?

Page 28: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

정답을 말씀드리면 공통으로 발생하는 요청처리를 Servlet에 맡기고 다음

JSP에 위임했습니다.

Client Servlet

JSP1

JSP2

JSP3

Page 29: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

Client Servlet

JSP1

JSP2

JSP3

선생님 반장

학생1

개똥이

학생2

Page 30: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

Dispatcher(Servlet)가 요청처리를 한곳으로 받아드리면서 Controller(Business Logic)가 View(JSP)와 섞이지 않고 여러

View(JSP)들의 공통역할을 하게 됩니다.

Controller

View

Client

DispatcherModel

HTML

Page 31: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

다시 말해 요청코드와 HTML이 분리되기 때문에 유지보수가

쉬워집니다.

Page 32: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

Controller = 학급반장 View = 학생(개똥이)

Page 33: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

제일 앞단에 다양한 요청을 제어하는 Controller를 두어 단일 진입을 하게 한다고 해서 프런트 컨트롤러 패턴(Front Controller Pattern)이라 불리우게 되고 Core J2EE Design

Pattern에 포함되어 있습니다.

Page 34: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -
Page 35: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

2003년 Java진영의 히트상품이자 스트러츠(Struts)가 활성화되기 전까지 잘나가는 웹 프레임워크(Web

Framework) 개발자의 척도였습니다.

Page 36: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

프런트 컨트롤러 패턴은 매우 막강합니다.

결코 View(HTML)만을 관리하기 위해 사용하는 것이

아닙니다.

프런트 컨트롤러 패턴은 화면뿐만 아니라 데이터를 제공받는 서비스(Service)를 관리 할 수도 있습니다.

Page 37: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

기업 서비스도 관리가 안된 채로 운영되어지면 이렇게 스파게티면 같이 심

하게 꼬이게 됩니다.

당연히 학급반장이 필요합니다.

Page 38: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

SOA(Service Oriented Architecture) 환경에서 ESB(Enterprise Service Bus)구현 기

술에도 사용되어집니다.

Page 39: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

Controller

Business Process

(WS-BPEL)

WebserviceConsumer

SerivceDispatcher

WebService Provider

ESB (Enterprise Servie Bus)

XML(SOAP)

XML(SOAP)

XML(SOAP)

Page 40: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

MSA(Micro Services Architecture) 환경에서 API Gateway 구현 기술

에도 사용되어집니다.

Page 41: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

Controller

Business Process

(DSL)

HTTP Client

SerivceDispatcher

REST API

API Gateway

JSON(REST)

JSON(REST)

JSON(REST)

Page 42: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

참고로 이 문서는 기술적인 근거 자료로 사용하기 힘든 문서임을 알려드립니다.

처음 시작하는 분들에게 개념을 쉽게 이해하게 하고 접근하게 하기 위해 만든 문서임

을 알려드립니다. ^^

Page 43: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -

이상 율이아빠였습니다.