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

  • View
    3.090

  • Download
    5

  • Category

    Software

Preview:

Citation preview

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

2014. 12Darion Kim

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

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

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

hnki0104@me.com

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

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

(for YMS, JHJ)

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

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

공감해주셨으면 합니다.

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

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

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

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

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

탁하려 합니다.

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

고 생각했습니다.

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

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

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

야 찾을 수 있습니다.

선생님

학생1

학생2

학생3

학생4

학생5

학생6

학생7

학생8

학생9

학생10

학생11 학생16

학생12

학생13

학생14

학생15

학생18

학생19

학생20

학생17

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

다시 두번째 질문입니다.

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

정답은 바로 반장입니다.

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

선생님 반장

학생1

개똥이

학생2

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

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

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

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

이라고 합니다.

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

씀드리겠습니다.

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

게 되었습니다.

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

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

했습니다.

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

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

웹브라우저

/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

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

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

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

JSP에 위임했습니다.

Client Servlet

JSP1

JSP2

JSP3

Client Servlet

JSP1

JSP2

JSP3

선생님 반장

학생1

개똥이

학생2

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

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

Controller

View

Client

DispatcherModel

HTML

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

쉬워집니다.

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

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

Pattern에 포함되어 있습니다.

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

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

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

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

아닙니다.

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

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

하게 꼬이게 됩니다.

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

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

술에도 사용되어집니다.

Controller

Business Process

(WS-BPEL)

WebserviceConsumer

SerivceDispatcher

WebService Provider

ESB (Enterprise Servie Bus)

XML(SOAP)

XML(SOAP)

XML(SOAP)

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

에도 사용되어집니다.

Controller

Business Process

(DSL)

HTTP Client

SerivceDispatcher

REST API

API Gateway

JSON(REST)

JSON(REST)

JSON(REST)

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

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

을 알려드립니다. ^^

이상 율이아빠였습니다.

Recommended