Search

'2010/08'에 해당되는 글 2건

  1. 2010/08/26 픽사 이야기
  2. 2010/08/18 Java에서 keep-alive를 이용한 HTTP Persistent Connection

픽사 이야기

책/IT 2010/08/26 00:23 Posted by kkundi
픽사 이야기 - 8점
데이비드 A. 프라이스 지음, 이경식 옮김/흐름출판


전 보통 영화를 보기전에 기대를 많이 안하려고 합니다. 너무 기대를 하고 영화를 보면 영화가 기대치에 못미쳐서 실망을 하는 경우가 많았기 때문입니다. '픽사'에서 만드는 애니메이션들은 그래도 항상 기대를 하고 보러 갑니다. 보고나면 언제나 기대 이상의 이야기를 들려주고, 보여줬으니까요. 

'픽사 이야기'라는 책의 광고를 인터넷에서 보자마자 바로 질렀습니다. 영화를 만들다보면 한번은 삐끗하기도 할텐데, 이제까지 나온 모든 장편 애니메이션을 흥행과 비평(<Cars>는 평이 안좋았다라곤 하지만 '픽사' 라는 타이틀을 빼고 본다면 괜찮은 작품이였습니다.)면에서 항상 성공을 하는 그들의 비법이 궁금하기도 했고, 어떻게 이런 회사가 탄생하게 됐는지 그 비화도 궁금했었거든요.
책에서 이런 제 궁금증을 만족시켜 줬습니다. 처음 회사를 만들게 된 배경부터 애플의 경영자인 스티브 잡스가 어쩌다 픽사를 맡게 됐는지. 그리고 영화의 성공을 통해서 결국 디즈니에게 엄청난 금액으로 팔리게 된 과정도 상세하게 기술되어 있습니다. 뿐만 아니라 픽사의 영화를 좋아하는 사람(저같은 사람!)은 이제까지 봤던 그들의 작품을 연대순으로 만들어지게 된 배경과 여러 에피소드를 읽어나가면서 장면들을 떠올릴 수 있는 기회도 제공합니다. 책 속에 이미지로 제공한다는 말이 아니라, 에피소드와 함께 특정 장면에 대한 묘사를 통해서 보여주지요.
또 하나 이책에서 마음에 들었던 부분은 20년동안 자신들의 꿈을 이루기 위해서 준비해 오는 픽사의 주역들의 얘기입니다. 자서전이나 평전을 읽으면서 '나도 저런 사람이 되야지!' 와 비슷하게 그들처럼 하고 싶은 일을, 이루고자 하는 꿈을 좇아 가는 삶을 살고 싶다란 생각마저 들게 해주는 흥미있는 일화가 많이 있습니다.

예전에 제가 작성했던 <라따뚜이>의 리뷰<월E>의 리뷰에서 알 수 있듯이 전 픽사의 왕팬(?)입니다. 픽사의 팬이시라면 이 책을 꼭 읽어 보라고 권합니다. 픽사라는 회사가 아니라 3D컴퓨터 애니메이션에 관심이 있는 분들도 읽어 보셔도 좋을 것 같습니다.

PS. 책에서 다루고 있는 픽사의 영화는 그들의 첫 작품에서부터 2007년 작품인 <라따뚜이>까지입니다. 2008년에 나온책이라서 그런지 그 이후의 작품에 대해서는 2~3페이지 정도만 할애해서 간단하게 정리를 해놨더군요.

' > IT' 카테고리의 다른 글

픽사 이야기  (0) 2010/08/26
웹 진화론  (0) 2010/07/16
객체지향적으로 생각하라!  (0) 2010/05/14
당신은 웹2.0 개발자입니까?  (1) 2007/08/02

HTTP의 커넥션은 기본적으로 stateless입니다. 즉, 하나의 request/response에 대해서 하나의 TCP 커넥션을 맺고 난 이후에 커넥션을 재사용하지 않고 끊어버립니다. 이는 새로운 request가 있을 때마다 계속해서 새로운 커넥션을 맺어야 하기 때문에 HTTP/1.1에서는 다수개의 request/response에 대해서도 기존에 맺은 TCP 커넥션을 재사용할 수 있도록 protocol이 추가되었습니다. 이러한 커넥션 재사용을 HTTP Persistent Connection 이라고 합니다.

HTTP/1.1부터 Persistent Connection을 위해서 keep-alive를 지원합니다. 일부 HTTP/1.0 이용하는 웹서버 구현에서 keep-alive가 사용가능하지만 공식적인 스펙으로는 1.0에서는 지원하지 않습니다. Keep-alive를 사용하는 방법은 Connection 속성값에 사용을 명시하면 됩니다.


  • Connection: keep-alive   = Persistent Connection 사용
  • Connection: close           = Persistent Connection 사용 안함

물론 웹서버에서 keep-alive를 지원해야지만 이용가능합니다. 웹서버가 Persistent Connection을 지원하지 않는다면 헤더에 keep-alive를 사용하더라도 Persistent Connection을 사용할 수 없습니다. 따라서 Persistent Connection의 전제 조건은 "웹서버에서 지원해줘야 한다" 입니다.

이 Persistent Connection을 Java에서 사용할 때는 단순히 keep-alive 설정만으로는 사용할 수 없습니다.

Java가 지원하는 HttpURLConnection 객체를 사용시에는 다음의 내용을 만족해야만 Persistent Connection을 사용합니다. 다음의 내용을 만족하지 않으면 커넥션을 재사용할 수 없습니다.

  1. 커넥션에서 얻은 inputstream을 끝까지 다 읽어야 함. 끝까지 읽지 않으면 HttpURLConnection이 해당 커넥션에 clean 작업을 시행하지 않기 때문에 커넥션을 재사용 불가.
  2. getInputStream을 하다가 IOException이 발생한 경우, catch에서 커넥션에 getErrorStream 메소드를 호출하지 않으면 clean 작업을 시행하지 않기 때문에 커넥션을 재사용 불가.

따라서 컨텐츠의 내용을 직접 사용하는 경우가 아니라면 HEAD 메소드만을 사용하는게 좋습니다. GET이나 POST를 사용한다면 불필요한 컨텐츠임에도 불구하고 inputStream을 끝까지 읽어야 하기 때문이죠.


Keep-alive 사용 예시

    URL realUrl = new URL("http://www.diquest.com/);
    uCon = (HttpURLConnection)realUrl.openConnection();
    uCon.setRequestMethod("GET");
    uCon.setUseCaches(false);
    uCon.addRequestProperty("Connection", "keep-alive");    
    is = uCon.getInputStream();
    br = new BufferedReader(new InputStreamReader(is, "utf-8"));
    String line = null;
    while((line = br.readLine()) != null) {
//    끝까지 읽어야 함

    }
   } catch (IOException e) {
    uCon.getErrorStream();
   } finally {
//      close 작업 수행
   }

좀 더 효율적으로 사용하기 위해서는 재사용할 커넥션의 수를 시스템 프로퍼티인 http.maxConnections를 설정하면 됩니다. 이 프로퍼티는 default로 5로 설정되어있습니다.


참고 URL
http://download.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html
http://imhoratiu.wordpress.com/2010/03/22/httpurlconnection-over-https/


'컴퓨터 > 개발' 카테고리의 다른 글

Java에서 keep-alive를 이용한 HTTP Persistent Connection  (0) 2010/08/18