• 발표자 : 박용권 , 변정훈


• 발표주제 : Server-Side와 Client-Side 사이의 연결을 유지한 실시간 웹 개발.

• 발표내용 : Server Push 기술을 Comet과 WebSocket을 이용하여 구현하는 방법..이랄까?
• Server Push -> Mobile Service Push

• What is Realtime Web?
∘ http://springsprout.org:10000/


client-side : Polling : 브라우저 에서 요청 -> 서버에서 응답 , 서버에서 이벤트 발생시, 브라우저가 요청하면 이벤트 내용을 바로 전달
∘ Ajax를 이용해서 polling 을 전달, 서버에서 변경사항 발생시 클라이언트의 지연시간 여부에 따라서 부하가 발생할 수가 있다.
∘ Server push라고 보기는 어렵다.


• Comet & Web Socket
Comet(http://en.wikipedia.org/wiki/Comet_%28programming%29)
web application model in which a long-held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it.
웹서버와 클라이언트가 HTTP request로 긴 접속을 유지하면서, 웹서버에서 클라이언트로 데이터를 보내는 모델.
: Ajax처럼 특정기술이 아닌 패턴 : realtime 을 구현하기 위한 패턴
∘ Long lived Http connection : http 연결 상태 장기 지속
∘ Long Polling
∘ 브라우저가 서버에 요청 -> 서버는 대기(서버 이벤트 발생시까지 대기) -> 응답 -> 연결끊김 반복
∘ Json polling : JSONP :
‣ 스크립트 태그로 호출,
‣ 서버에서 콜백함수로 JSON 객체로 리턴
‣ 필요한 이유 : 동일출처정책 : Same origin Policy
‣ 브라우저에서 도메인당 커넥션 2개 제한
∘ Streaming : 일반적인 Server Push에 가깝다.
‣ 브라우저에서 요청 -> 서버에서 대기하다가 이벤트 발생할때마다 응답해줌(Connection이 지속됨)
‣ Chunked : Transfer-Encoding : 전체 데이트는 알 수 없지만 Chunked 단위로만 받을 수 있음.
∘ IE는 Chunked 를 지원하지 않습니다. -> Forever IFrame
‣ 웹페이지에서 hidden iFrame 을 두고서  서버에 요청 -> 서버에서 Chunked Data<script>데이터></scipt>
‣ iFrame 에서 Script가 계속 발생하는 문제가 발생
‣ 클릭소리, 로딩바 문제 등의 다양한 문제가 발생한다.
‣ AcitveXObject("htmlFile")
∘ WebSocket
‣ HTML5
‣ W3C/IETF 표준
‣ WebSocket 프로토콜 사용
‣ 진정한 양방향 통신
‣ HTTP를 업그레이드해서 Socket연결
‣ http 호환 handshake 80/443 으로 동작 : web socked protocol handshake
∘ Adobe flash socket


server-side
∘ 클라이언트와의 지속적인 연결(persistent connection)이 유지되어야 한다.
∘ 자바 서버의 문제 : Thread or Request : Request 가 thread가 발생된다. 접속을 유지하게되면 thread가 누적되면서 서버 부하가 발생하게 된다.
∘ Thread 에서 발생하는 문제가 발생하기 시작 : Servlet Container CometServlet
∘ Resin 3.1+  에서 CometServlet 을 통해서 지원(service, resume[지속적인 커넥션 유지] : boolean 타입)
∘ jetty(suspend, resume)
∘ Tomcat 6.0+ : CometProcessor(http://tomcat.apache.org/tomcat-6.0-doc/aio.html)
∘ Servlet
‣ <async-suspend>true</async-suspend> 처리를 하여 비동기 처리를 하겠다는 설정
‣ AsyncContext startAsync();
‣ HttpServletRequest
‣ Servlet 3.0
‣ 비동기 처리....
∘ WebS

• Realtime Web application  의 중점
접속(Connection)의 지속적인 유지(Long Connection)를 위한 기술들이 필요하다.
∘ Client Side
∘ Server Side


  발표자들이 생각했던 것보다 많은 청중이 몰려와 자리가 없어서, 발표장 앞쪽에 앉아서 발표를 경청했습니다. 꽤 많은 준비를 했고, 청중들이 모바일 접속을 하여 함께 참여할 수 있는 기회를 제공함으로 해서, 청중들의 관심을 불러일으키는데 성공한 좋은 발표였습니다.
  Server Push와는 다른 형태로, 클라이언트가 서버에 접속을 유지할 수 있도록 Comet이라고 하는 모델을 활용한 웹 애플리케이션을 구동하여 보여주고 소스를 보여주며 개발자들의 흥미를 끌기도 했습니다.



발표자 : 김민재, 이경진
발표내용 : 소프트웨어 중심에 존재하는 복잡성에 도전장을 내밀다
DDD : Domain Driven Developemnet - 회사에서 새롭게 진행하는 프로젝트에서 사용하게되는 JPA와 Hibernate 를 이용하면서 DDD를 활용하게 되다.
∘ The String, Entertainer

∘ 목적(Objectives)


‣ Modeling in out
‣ 강사 -> Ubiquitous language <- 청중
발표자와 청중이 만나서 메시지를 주고받으면서 그에 대한 호응이 있어야 한다고 말함. 하지만, 발표자분은 본인이 말한 부분을 제대로 달성하지 못한 아쉬움이 있다.
‣ 멘토스 <-> 멘토,
‣ DDD 에릭 에반스 : http://artofsoftwaredev.tistory.com/94 강연
‣ 켄트 백 : Four Strategies : leap(건너뛰기) -> parallel(병렬화) -> stepping stone(가뿐하게 건너뛰기) -> simplification
‣ 질서유지
‣ 일관성
‣ 저장이 아니라 소화(지식을 단순히 보관하는 것이 아니라, 그것을 이해하고 활용(소화)하여 자신의 것으로 만드는 작업이 중요하다).
• 소화에서는 질문이 일어난다.
‣ 연계(Alignment)
• 계획(Plan)  vs. 일(Work)
• Plan to work, Work By plan
• 방향, 거리
• 머릿돌(capStone)과 건축(construction) : 머릿돌이 움직이는대로 몸체가 움직인다?
• 목적 vs 활동
∘ 1. Set Objectives
∘ 2. Compare
∘ 3. provide Direction
∘ 4. IT Activities

∘ 활동(Activies)
‣ 디자인(Design) vs. 프로세스(Process) : DDD는 디자인 책인가? 프로세스 책인가? DDD에서는 방법론에 대한 이야기를 많이 한다. XP, Agile
‣ 질문
• 애자일을 하면 모델이 필요없나요?
∘ 모델을 강조한다. Red -> Green, Refactoring
∘ 코딩의 생산성
∘ 고객의 필요에 대한 만족
‣ 해결책 :  DDD -> 디자인 & 프로세스 패턴 모음집
• Entitiy -> Relation -> Entitiy
• Boundary Context
‣ 어떤 문제가 있는가?
‣ 소통, 언어 : Ubiqutous Language Pattern
‣ 모델은 생각을 반영한다. 모델을 통해서 구현부분에서 작성자를 떠올릴 수 있다.
‣ 소통, Deep & Supple : 언어 + 모델
‣ 모델 -> Paradigm -> Design : Deep Model & Supple Design
‣ 통일성

• DDD 적용 사례(Reference) : 11번가
∘ CBD : DDD도 CBD와 유사한 Architect 구조를 유지하고 있다.
∘ A -> B -> C -> D : D에 대한
∘ 식별성




※ 발표... 들은 시간이 왜이리 아쉽냐....
  DDD에 관심을 가지는 이유는, 개발을 조금 더 객체지향적으로 할 수 있기를 바라는 개발자들의 바람 때문이다. 아직 우리나라에는 ORM을 바탕으로 하는 서비스나 애플리케이션들이 많지는 않다. 그래서 DDD에 대한 참고자료나 글이 적은 듯 하다. 나도 최근에 업무차원에서 JPA를 이용해서 ORM을 활용하게 될 것으로 보인다. 그래서 기대하고 트랙에 참가해서 들었는데 기대에 못미치는 아쉬운 점들이 많다.
  개인적으로 DDD에 대해 공부하고 이를 정리하는 글을 적어보는 것이 좋겠다.
  DDD와 ORM에 대한 이해가 필요하다. 객체에 대해서 정리한 개념도 필요하고...

참고 사이트 : http://aeternum.egloos.com/category/Domain-Driven%20Design
허니몬의 참가 트랙 및 현장 스케치
2011/06/20 - [Tech Trend(기술동향)] - [JCO] 2번째 Track : 도메인주도 개발(DDD)
2011/06/20 - [Tech Trend(기술동향)] - [JCO] 3번째 Track : Realtime Web application with Java
2011/06/20 - [Tech Trend(기술동향)] - [JCO] 4번째 Track : Framework Enginering
2011/06/20 - [Tech Trend(기술동향)] - [JCO] 5번째 Track : MongoDB with Play!

  지난 6월 19일, 삼성동 COEX에서 11번째 한국자바개발자컨퍼런스(http://kjdc.org/) 열렸습니다. KT가 주관사로 참여하고, 행사주관을 위한 이벤트기업과 계약하면서 행사진행이 이전의 컨퍼런스에 비해서 매끄러워졌다고 이야기들을 하시더군요. ^^

  원래는 MS에서 팝콘부스를 마련하여 맥주와 팝콘을 제공하려고 했었는데, COEX측에서 이를 거부하면서 팝콘돌이가 기운이 빠져있는지 계단에 널부러져 있습니다. 팝콘돌이가 열심히 돌아다니면서 개발자들과 어울려보려고 했지만, 우리나라 개발자들의 특성 중 하나인 '조용하고 내성적임'으로 인해 호응이 없자 기운빠져하는 모습이 역력했습니다.

  우리나라 개발자들도 잘 놀면 참 좋을텐데 말이죠. ^^;

  참고로, 저는 잘 못 놉니다. >ㅅ<);;;;

  계단 한구석에 앉아 넷북을 꺼내들고 뚜닥거리고 있는 사이에, 저와 비슷하게 도착한 이들이 들어가지 못하고, 행사장 입구에 있는 계단에 앉아서 트랙이 끝나기를 기다리고 있습니다. 가끔 해외 컨퍼런스에 참여한 개발자들이 보내오는 미국이나 해외컨퍼런스의 모습을 보면, 개발자들이 삼삼오오 모여 편안한 의자나 바닥에 앉아서 개발에 대한 이런저런 이야기를 나누면서 맥주한잔 하는 모습이 정말 부러웠는데, 그런 분위기를 연출할 기회가 잠시 주워졌었습니다. 하지만, 고품격(?) 전시회장인 코엑스에서는 행사관람객들이 아무곳에나 널부러져있는 것을 용납하지 않는 시설구조를 갖추고 있습니다. ㅡ_-); 어디 쪼구려앉아 있으면 시설물과의 부조화에 의한 위화감이 참 대단합니다.

이번 컨퍼런스는 크게 3개 주제로 진행이 되었습니다. 자바, 클라우드 컴퓨팅, 실습 의 주제로 7곳에서 50분씩 5개, 총 35개의 발표가 진행이 되었습니다. 오픈소스인 NoSQL에 속하는 MongoDB 쪽에 대한 많은 관심이 있었습니다. 아마도 클라우드 컴퓨팅, SNS의 대용량 데이터 처리에 대한 다양한 사례들이 나오면서 큰 유행을 일으키는 중이고, 앞으로도 NoSQL DB를 바탕으로 하는 다양한 서비스들이 출시될 것입니다.

  1500여 명의 개발자들이 참여한 이번 컨퍼런스는 제법 사람들로 북적였습니다. ^^; 저 사람들과 얼굴을 익히고 알게된다면 얼마나 좋을까요? 저에게는 살짝 무리일지도 모르겠습니다. 3개월동안 얼굴을 안보면, 얼굴과 이름을 까먹는 캐쉬메모리 기억력의 소유자거든요.... 헙...

한빛미디어에서 저자사인회를 주최하였습니다. 책을 구매하거나 가져온 책에 사인을 받으면 고급의 머그컵을 사은품으로 주는 사인회였습니다. 다만 아쉬운 점이라면, 한빛미디어가 행사장 안쪽에 부스를 개설하면서, 사인회도 구석에 마련되어 쉽게 발견할 수 없었다는 겁니다.  아는 분들이 모여 있어서 찾아가보니 저자분들의 사인회가 진행되고 있었습니다. 이렇게 구석에 마련된 사인회를 보고'헐~'하고 한탄이 절로 나오더군요.

  이왕 사인회를 할거면, 행사장을 향해서 자리를 잡았으면 더 많은 사람들이 찾아오고 저자분들도 많은 독자들과 만날 기회가 있었을텐데...


아마, 이날 코엑스에서 검은 백팩을 메고서 조용한 성격을 가졌을 것으로 보이는 사람들을 보셨다면,
99.99% 개발자였을 겁니다.


  많은 개발자들과 '우리나라 개발자' 들에 대한 이야기를 나누다보면 공통적으로 나오는 이야기가 있다.
'우리나라 개발자들은 조용하고 즐길 줄을 모른다.'
  오늘 JCO에서는 이례적으로 여성 아이돌그룹 '달샤벳'의 공연이 있었다.
http://yfrog.com/6fkhxz
  일반 대학 축제나 공연에서였다면 달샤벳은 열광적인 사람들의 환호성을 받으면서 공연을 마쳤을지 모른다.
기조연설이나 공연은 건너뛰고 와서, 사람들의 반응이 궁금해 물어보니, "팔짱을 끼고 조용히 경청했어요."라고 이야기해주는 이야기를 들으며 피식 웃음을 지을 수밖에 없었다. 그 아이돌 그룹은 얼마나 어색했을까?
  모두 팔짱을 켜고 조용히 그들의 춤사위에 집중하고 있었던걸까? ^^;;
  그나마 내가 만나는 많은 개발자들은 자신의 이야기를 상대에게 전하는 것에 어색해하지 않는다. 자연스럽게 자신의 생각과 기술에 대한 이야기들을 털어놓을 수 있는 흔하지 않은 개발자들이다. 한창 많은 것을 듣고 보고 배워야할 지금 내 입장에서, 그런 개발자들이 주변에 많다는 것은 너무나 이로운 일이다. ^^
   개발자는 자신이 배우고 알게된 것을 누군가에게 전하는 것을 즐길 수 있을 때 비로소 진정한 고수의 반열에 들어서게된다.
자신만 잘 아는 것은 결코 고수라 할 수 없다.
나도 내년에는 저 앞에 서서 발표를 하고 싶어졌다.

오랜만에 JCO가 열립니다. ^^ 자바 개발자분들이 오셔서 많은 이야기들을 듣고 느낄 수 있는 기회가 되었으면 합니다. ^^


+ Recent posts