주니어 개발자도 이해하는 코어 j2ee 패턴 - 학급반장편 -
TRANSCRIPT
![Page 1: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/1.jpg)
주니어 개발자도 이해 할 수 있는 코어 J2EE 패턴 - 학급반장편 -
2014. 12Darion Kim
![Page 2: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/2.jpg)
나는 누구?Darion Kim (김헌기)
디에스멘토링 연구소 수석보
자칭 통신(통합의 신, God of Integration)
https://www.facebook.com/groups/serverside (율이아빠)
![Page 3: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/3.jpg)
이 문서를 모든 Freshman에게 바칩니다.
(for YMS, JHJ)
![Page 4: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/4.jpg)
약속드립니다. ^^절대 어렵게 얘기하지 않겠습니다.
![Page 5: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/5.jpg)
대신 좀 유치하더라도 제 눈높이에 맞춰
공감해주셨으면 합니다.
![Page 6: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/6.jpg)
자~ 이제 들어가 보도록 하겠습니다.
저와 눈높이를 맞춰주세요.아니시면 여기까지…^^
![Page 7: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/7.jpg)
한 교실에 20명의 학생들이 있습니다.
![Page 8: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/8.jpg)
어느날 새로운 담임선생님이 오셨습니다.
![Page 9: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/9.jpg)
선생님은 미화부장인 개똥이란 학생을 찾아서 일을 부
탁하려 합니다.
![Page 10: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/10.jpg)
그래서 학생 한명 한명씩 개똥이냐고 물어봐야 겠다
고 생각했습니다.
![Page 11: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/11.jpg)
자~~~ 여기서 첫번째 질문입니다.
선생님은 몇번을 물어봐야 개똥이를 찾을수 있을까요?
![Page 12: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/12.jpg)
운이 좋으면 1번만에 물어보고 운이 나쁘면 20번이나 물어봐
야 찾을 수 있습니다.
![Page 13: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/13.jpg)
선생님
학생1
학생2
학생3
학생4
학생5
학생6
학생7
학생8
학생9
학생10
학생11 학생16
학생12
학생13
학생14
학생15
학생18
학생19
학생20
학생17
![Page 14: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/14.jpg)
하지만 선생님은 생각을 달리먹고 단 2번만에 개똥이 학생을 찾았습니다.
![Page 15: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/15.jpg)
다시 두번째 질문입니다.
선생님은 어떻게 하셨길래 2번만에 개똥이 학생을 찾게 되었을 까요?
![Page 16: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/16.jpg)
정답은 바로 반장입니다.
![Page 17: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/17.jpg)
반장에게 물어보고 반장이 다시 개똥이 학생을 알려주어서 단 2번만에 찾을 수 있었습니다.
선생님 반장
학생1
개똥이
학생2
![Page 18: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/18.jpg)
선생님은 반장에게만 물어보면 단 2번만에 모든일을 할 수가 있었습니다.
![Page 19: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/19.jpg)
저는 이것을 학급반장패턴 이라고 이름을 지었습니다.
우리는 어떤일을 할때면 학급반장 같은 사람이 필요합니다.
![Page 20: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/20.jpg)
좀 유식한 말로 커맨드 패턴(Command Pattern)
이라고 합니다.
![Page 21: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/21.jpg)
원래 얘기하려고 했던 Java 기반의 웹 환경으로 다시 말
씀드리겠습니다.
![Page 22: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/22.jpg)
초기의 웹개발은 Servlet 기술로 View를 출력하였지만 구현에 대한 어려움이 있었기 때문에 이보다 구현이 훨씬 용이한 JSP 기술을 사용하
게 되었습니다.
![Page 23: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/23.jpg)
JSP 기술에 힘입어 사람들은 윤전기에서 신문을 찍어내듯이 화면을 대량으로 만들어 내기 시작했습니다.
![Page 24: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/24.jpg)
웹서비스는 계절별로 화면디자인을 바꾸거나 호기심이 가는 기능 추가로 고객만족을 추구해야
했습니다.
![Page 25: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/25.jpg)
하지만 JSP로는 기존 로직의 변경과 확장에 대해 어려움이 있었습니다.
만들기가 쉬워 대량으로 만들었지만 변경과 재사용은 어려웠습니다.
![Page 26: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/26.jpg)
웹브라우저
/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 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/27.jpg)
이에 똑똑한 사람들은 고민을 하기 시작했습니다.
무수히 많은 JSP들을 어떻게 하면 쉽게 제어 할 수 있을까요?
![Page 28: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/28.jpg)
정답을 말씀드리면 공통으로 발생하는 요청처리를 Servlet에 맡기고 다음
JSP에 위임했습니다.
Client Servlet
JSP1
JSP2
JSP3
![Page 29: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/29.jpg)
Client Servlet
JSP1
JSP2
JSP3
선생님 반장
학생1
개똥이
학생2
![Page 30: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/30.jpg)
Dispatcher(Servlet)가 요청처리를 한곳으로 받아드리면서 Controller(Business Logic)가 View(JSP)와 섞이지 않고 여러
View(JSP)들의 공통역할을 하게 됩니다.
Controller
View
Client
DispatcherModel
HTML
![Page 31: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/31.jpg)
다시 말해 요청코드와 HTML이 분리되기 때문에 유지보수가
쉬워집니다.
![Page 32: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/32.jpg)
Controller = 학급반장 View = 학생(개똥이)
![Page 33: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/33.jpg)
제일 앞단에 다양한 요청을 제어하는 Controller를 두어 단일 진입을 하게 한다고 해서 프런트 컨트롤러 패턴(Front Controller Pattern)이라 불리우게 되고 Core J2EE Design
Pattern에 포함되어 있습니다.
![Page 34: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/34.jpg)
![Page 35: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/35.jpg)
2003년 Java진영의 히트상품이자 스트러츠(Struts)가 활성화되기 전까지 잘나가는 웹 프레임워크(Web
Framework) 개발자의 척도였습니다.
![Page 36: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/36.jpg)
프런트 컨트롤러 패턴은 매우 막강합니다.
결코 View(HTML)만을 관리하기 위해 사용하는 것이
아닙니다.
프런트 컨트롤러 패턴은 화면뿐만 아니라 데이터를 제공받는 서비스(Service)를 관리 할 수도 있습니다.
![Page 37: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/37.jpg)
기업 서비스도 관리가 안된 채로 운영되어지면 이렇게 스파게티면 같이 심
하게 꼬이게 됩니다.
당연히 학급반장이 필요합니다.
![Page 38: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/38.jpg)
SOA(Service Oriented Architecture) 환경에서 ESB(Enterprise Service Bus)구현 기
술에도 사용되어집니다.
![Page 39: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/39.jpg)
Controller
Business Process
(WS-BPEL)
WebserviceConsumer
SerivceDispatcher
WebService Provider
ESB (Enterprise Servie Bus)
XML(SOAP)
XML(SOAP)
XML(SOAP)
![Page 40: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/40.jpg)
MSA(Micro Services Architecture) 환경에서 API Gateway 구현 기술
에도 사용되어집니다.
![Page 41: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/41.jpg)
Controller
Business Process
(DSL)
HTTP Client
SerivceDispatcher
REST API
API Gateway
JSON(REST)
JSON(REST)
JSON(REST)
![Page 42: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/42.jpg)
참고로 이 문서는 기술적인 근거 자료로 사용하기 힘든 문서임을 알려드립니다.
처음 시작하는 분들에게 개념을 쉽게 이해하게 하고 접근하게 하기 위해 만든 문서임
을 알려드립니다. ^^
![Page 43: 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 -](https://reader038.vdocuments.pub/reader038/viewer/2022102618/55a77a1e1a28ab534e8b459c/html5/thumbnails/43.jpg)
이상 율이아빠였습니다.