SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
주니어 개발자도 이해 할 수 있는
코어 J2EE 패턴
- 학급반장편 -
2014. 12

Darion 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
Dispatcher
Model
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)
Webservice

Consumer
Serivce

Dispatcher
WebService
Provider
ESB (Enterprise Servie Bus)
XML(SOAP)
XML(SOAP)
XML(SOAP)
MSA(Micro Services Architecture)
환경에서 API Gateway 구현 기술
에도 사용되어집니다.
Controller
Business
Process
(DSL)
HTTP Client
Serivce

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


처음 시작하는 분들에게 개념을 쉽게 이해
하게 하고 접근하게 하기 위해 만든 문서임
을 알려드립니다. ^^
이상 율이아빠였습니다.

Weitere ähnliche Inhalte

Andere mochten auch

주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편Darion Kim
 
[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)Young-Ho Cho
 
사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다.
사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다.사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다.
사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다.flashscope
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기flashscope
 
LogicalDOC White Paper
LogicalDOC White PaperLogicalDOC White Paper
LogicalDOC White PaperLogicalDOC
 
10 steps to implement edms
10 steps to implement edms10 steps to implement edms
10 steps to implement edmsLogicalDOC
 
Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2Tommy Lee
 
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형Minchul Jung
 
LogicalDOC Ecosystem
LogicalDOC EcosystemLogicalDOC Ecosystem
LogicalDOC EcosystemLogicalDOC
 
Ksug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpaKsug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpaYounghan Kim
 
HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안SangJin Kang
 
Go revel 컨셉_정리
Go revel 컨셉_정리Go revel 컨셉_정리
Go revel 컨셉_정리라한사 아
 
Go revel 구성_루팅_정리
Go revel 구성_루팅_정리Go revel 구성_루팅_정리
Go revel 구성_루팅_정리라한사 아
 
프로그래밍 go투어 정리
프로그래밍 go투어 정리프로그래밍 go투어 정리
프로그래밍 go투어 정리라한사 아
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)상욱 송
 
Go 1.설치와 세팅
Go 1.설치와 세팅Go 1.설치와 세팅
Go 1.설치와 세팅재봉 이
 
SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프Younghan Kim
 
HeadFisrt Servlet&JSP Chapter 6
HeadFisrt Servlet&JSP Chapter 6HeadFisrt Servlet&JSP Chapter 6
HeadFisrt Servlet&JSP Chapter 6J B
 
HeadFisrt Servlet&JSP Chapter 5
HeadFisrt Servlet&JSP Chapter 5HeadFisrt Servlet&JSP Chapter 5
HeadFisrt Servlet&JSP Chapter 5J B
 

Andere mochten auch (20)

주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편
 
[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)
 
사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다.
사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다.사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다.
사용자가 업로드한 사진의 마커를 이용해 OpenCV + aruco로 일정한 형태로 만들고 영상으로 만들어 보았다.
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
 
LogicalDOC White Paper
LogicalDOC White PaperLogicalDOC White Paper
LogicalDOC White Paper
 
10 steps to implement edms
10 steps to implement edms10 steps to implement edms
10 steps to implement edms
 
Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2
 
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
 
LogicalDOC Ecosystem
LogicalDOC EcosystemLogicalDOC Ecosystem
LogicalDOC Ecosystem
 
Ksug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpaKsug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpa
 
HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안HTTP/2와 웹 성능 최적화 방안
HTTP/2와 웹 성능 최적화 방안
 
Go revel 컨셉_정리
Go revel 컨셉_정리Go revel 컨셉_정리
Go revel 컨셉_정리
 
Go revel 구성_루팅_정리
Go revel 구성_루팅_정리Go revel 구성_루팅_정리
Go revel 구성_루팅_정리
 
프로그래밍 go투어 정리
프로그래밍 go투어 정리프로그래밍 go투어 정리
프로그래밍 go투어 정리
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)
 
Go 1.설치와 세팅
Go 1.설치와 세팅Go 1.설치와 세팅
Go 1.설치와 세팅
 
SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프
 
HeadFisrt Servlet&JSP Chapter 6
HeadFisrt Servlet&JSP Chapter 6HeadFisrt Servlet&JSP Chapter 6
HeadFisrt Servlet&JSP Chapter 6
 
자바기초에서 JSP, 스프링, MyBatis까지_ 자바개발자를 꿈꾸는 당신에게..
자바기초에서 JSP, 스프링, MyBatis까지_ 자바개발자를 꿈꾸는 당신에게..자바기초에서 JSP, 스프링, MyBatis까지_ 자바개발자를 꿈꾸는 당신에게..
자바기초에서 JSP, 스프링, MyBatis까지_ 자바개발자를 꿈꾸는 당신에게..
 
HeadFisrt Servlet&JSP Chapter 5
HeadFisrt Servlet&JSP Chapter 5HeadFisrt Servlet&JSP Chapter 5
HeadFisrt Servlet&JSP Chapter 5
 

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

개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님NAVER D2
 
신입웹개발자교육
신입웹개발자교육신입웹개발자교육
신입웹개발자교육은숙 이
 
보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계Eb Styles
 
이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께지수 윤
 
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션Devrelationswoowahan
 
애자일 도입과 사례 공유
애자일 도입과 사례 공유애자일 도입과 사례 공유
애자일 도입과 사례 공유agilekorea
 
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점Wonha Ryu
 
ksh portfolio 02
ksh portfolio 02ksh portfolio 02
ksh portfolio 02SunhoKo2
 
Book report apprenticeship patterns
Book report  apprenticeship patternsBook report  apprenticeship patterns
Book report apprenticeship patternsMunsu Kim
 
주니어가 회사에서 기회를 얻는 방법 by 1호
주니어가 회사에서 기회를 얻는 방법 by 1호주니어가 회사에서 기회를 얻는 방법 by 1호
주니어가 회사에서 기회를 얻는 방법 by 1호Excelcon
 

Ähnlich wie 주니어 개발자도 이해하는 코어 J2EE 패턴 - 학급반장편 - (10)

개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님
 
신입웹개발자교육
신입웹개발자교육신입웹개발자교육
신입웹개발자교육
 
보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계보다 나은 웹 어플리케이션 설계
보다 나은 웹 어플리케이션 설계
 
이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께
 
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
 
애자일 도입과 사례 공유
애자일 도입과 사례 공유애자일 도입과 사례 공유
애자일 도입과 사례 공유
 
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
 
ksh portfolio 02
ksh portfolio 02ksh portfolio 02
ksh portfolio 02
 
Book report apprenticeship patterns
Book report  apprenticeship patternsBook report  apprenticeship patterns
Book report apprenticeship patterns
 
주니어가 회사에서 기회를 얻는 방법 by 1호
주니어가 회사에서 기회를 얻는 방법 by 1호주니어가 회사에서 기회를 얻는 방법 by 1호
주니어가 회사에서 기회를 얻는 방법 by 1호
 

Mehr von Darion Kim

지금… IT개발팀에서 일하는 방식 GS SHOP 고군분투기
지금… IT개발팀에서 일하는 방식 GS SHOP 고군분투기지금… IT개발팀에서 일하는 방식 GS SHOP 고군분투기
지금… IT개발팀에서 일하는 방식 GS SHOP 고군분투기Darion Kim
 
자발적 자기완결형 개발 문화를 위한 GSShop 고군분투기
자발적 자기완결형 개발 문화를 위한 GSShop 고군분투기자발적 자기완결형 개발 문화를 위한 GSShop 고군분투기
자발적 자기완결형 개발 문화를 위한 GSShop 고군분투기Darion Kim
 
디지털화 역량강화를 위한 GS SHOP 고군분투기
디지털화 역량강화를 위한 GS SHOP 고군분투기디지털화 역량강화를 위한 GS SHOP 고군분투기
디지털화 역량강화를 위한 GS SHOP 고군분투기Darion Kim
 
개발방식의 변화를 위한 GSShop 고군분투기
개발방식의 변화를 위한 GSShop 고군분투기개발방식의 변화를 위한 GSShop 고군분투기
개발방식의 변화를 위한 GSShop 고군분투기Darion Kim
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144Darion Kim
 
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기Darion Kim
 
Owasp top 10 2013 - 정다운 -
Owasp top 10   2013 - 정다운 -Owasp top 10   2013 - 정다운 -
Owasp top 10 2013 - 정다운 -Darion Kim
 

Mehr von Darion Kim (7)

지금… IT개발팀에서 일하는 방식 GS SHOP 고군분투기
지금… IT개발팀에서 일하는 방식 GS SHOP 고군분투기지금… IT개발팀에서 일하는 방식 GS SHOP 고군분투기
지금… IT개발팀에서 일하는 방식 GS SHOP 고군분투기
 
자발적 자기완결형 개발 문화를 위한 GSShop 고군분투기
자발적 자기완결형 개발 문화를 위한 GSShop 고군분투기자발적 자기완결형 개발 문화를 위한 GSShop 고군분투기
자발적 자기완결형 개발 문화를 위한 GSShop 고군분투기
 
디지털화 역량강화를 위한 GS SHOP 고군분투기
디지털화 역량강화를 위한 GS SHOP 고군분투기디지털화 역량강화를 위한 GS SHOP 고군분투기
디지털화 역량강화를 위한 GS SHOP 고군분투기
 
개발방식의 변화를 위한 GSShop 고군분투기
개발방식의 변화를 위한 GSShop 고군분투기개발방식의 변화를 위한 GSShop 고군분투기
개발방식의 변화를 위한 GSShop 고군분투기
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
 
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기
바가지 머리 시스템 구조 & 서비스 배포 삼대 패밀리 이야기
 
Owasp top 10 2013 - 정다운 -
Owasp top 10   2013 - 정다운 -Owasp top 10   2013 - 정다운 -
Owasp top 10 2013 - 정다운 -
 

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