Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

4,893 views

Published on

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

Published in: Software
  • Be the first to comment

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

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

×