주의 : 본 내용은 지극히 개인적인 의견과 잘못 알아들은 부분도 있을 수 있으므로, 실제 제대로 된 내용은 PT 자료를 통해서 확인하셔야만 합니다요.

회사를 옮긴 이후에 운이 좋아서 작년에 이어 여차저차해서  ApacheCon이라는 해외 컨퍼런스에 참석하게 되었다. 

올해는 밴쿠버에서 열렸고, Westin Bayshore라는 호텔(다운타운에서 20분은 걸어야 하는… 하지만 전망은 좋은)에서 진행했다.

벤쿠버에 4~5년전에 와이프랑 왔었기 때문에 여기저기 여행은 하지 않았다. 


전반적인 분위기 :
전반적으로 그들만의 리그라는 생각이 많이 들었다. 
여기서 그들은 Committer들과 영어 잘하는 (?) 사람들을 말한다.
컨퍼런스에 두번째이지만, 보통 동양사람들에게는 안면이 트이지 않는한 말을 잘 걸지 않고,
엄청나게 적극적이지 않으면 많은 대화를 하지 못한다는 것.
하지만, Meet up 이라는 야간 행사(20시~22시)에 관심사가 있는 사람들 및 커미터들과 이야기 할 기회가 있으니 적극 활용해야만 한다.

그리고, 한가지 더 중요한것은 매우 조촐했다는 것이다.
한 300명 정도밖에 안온것 같았고, 그 중 100명은 커미터라고 보면 될 듯 하다.

같은 기간에 하둡월드인가 뭔가가 있어 많은 사람들이 그 곳으로 간 것으로 보이며,
하둡과 클라우드 관련 세션은 3일 내내 진행되었기 때문에 클라우드가 전 세계적(?)으로 얼마나 인기가 많은지 알 것이다.


개략적인 진행 순서 : 참고로 각 기술에 대한 내용은 아래에 따로 정리하겠다.

D-1 : 컨퍼런스는 총 3일이지만,
그 전날에 University라고 해서 거진 70~100 만원을 내고 수업을 듣는게 있는데,
거의 신청한 사람이 없는듯 했다. (나도 물론 신청은 안했다.)
하지만 barCamp라는 것이 있고, 각 분야의 전문가들과 이야기할 수 있는 기회가 있다.
만약 앞서 이야기한대로 매우 적극적으로 뭔가 알아가려면, 하루 더 전에 와서 이 행사에 참여하는 게 좋을 듯 하다.
(스케줄에도 나와 있지 않다.)
예전에 같이 일하다가 다른 회사로 옮긴 X구라라는 선배를 우연찮게 만났고,
검색엔진인 Lucene을 만든 커미터도 잠깐 얼굴을 봤다.
(오며가며 보면 가장 인기가 많은 듯 해 보인다.)


Day 1 : 
주제별로 Track이 있고 거기서 필요한 내용들을 찾아 들으면 된다.
보통의 우리나라 세미나와 다를게 거의 없다.
이날은 Tomcat 위주의 내용을 들었으며 TomEE와 죽어가는 Geronimo에 대해서 들었다. 
첫날 저녁에는 식사를 제공하고 Meet up 이 있는데
나는 Callback이라는 PhoneGap의 오픈소스 버전에 대한 설명을 듣다가 Rave라는 것에 대해서 듣다가 나와서 잤다. 


Day 2 : 

첫째날과 동일하며 대부분 Httpd와 관련된 내용을 들었다.

Httpd 2.4와 Apache Traffic 서버가 인상 깊었고, 특히 Apache Traffic 서버 만든 아저씨는 오덕중에 오덕이었다. 이렇게 쌀쌀한 날씨에 반바지 입고 모자쓰고 발표했다. 게다가 유머 감감도 최고 였다. 누군가 올해 내로 정식 릴리즈가 되냐고 앞에서 조그맣게 이야기 했는데, "Go the hell"이라고 말하고 넘어가버렸다는... 

저녁에는 앞에 나와서 아무런 주제로 한사람당 5분간 이야기하는게 있는데,

이건 뭐 슬라이드도 없어서 이해하기가 매우 어려워 듣다가 Tomcat Meet up 을 위해서 7-11에 가서 과자 부스러기를 갖고 와서 Tomcat Meet up 에 참석했다.

이 Meet up 의 결과에 대해서도 아래에 정리하겠다. 


Day 3: 

마지막 날에는 약간 어수선한 분위기와 함께 좀 흥미가 떨어지는 내용들이 많았다.
하지만 Kafka라는 것을 알게되어서 이날의 일정은 아깝지가 않았다.
마지막날은 5시에 땡~ 하고 끝나서 다운타운 가서 뭐 살거 없나 두리번 거리다가,
그냥 방에 와서 짐 정리하고 이 글을 쓰는 중이다.


그럼 이제 기술적인 이야기를 해보자.

Tomcat :
Tomcat Comet에 대해서 설명을 들었는데, 2001년부터 커미터로 있는 스페인 아저씨가 진행했다.
그냥 헬로월드 찍고 끝났다. 뭐 그 이하도 그 이상도 아니였다. 
둘째날 저녁에 참석한 Meet up 은 조촐하게 10명 남짓이 모였으며, 그 중에서 5명 정도가 커미터였고 Comet 설명한 아저씨 옆에 앉았다. 사람이 적으니 각자 자기 소개를 하라고 했는데, 커미터들 소개를 하더니 모든사람에게 자기 소개를 하라고 했다. 
내가 가장 마지막에 소개를 했고, 내가 어떤 회사에 일한다고 하니 다 알지 못했다.(뭐 당연하지…)
Tomcat 이 설치된 서버가 X대 정도 있다고 하니 모두 놀랐는데, 지금 생각해보면 한 두배 이상(세배가 될수도...)은 뻥튀기 한거 같다. ㅎㅎㅎ - -;
여하튼 내가 몇가지 궁금한 것과 Tomcat의 고칠점들에 대해서 이야기했는데, 대부분 잘 들어 주고 답변들도 잘 해줬다. 
근데, 첨에 이야기한 항목은 고칠 생각이 없는듯 했다. 그냥 방법만 다들 알고 있는 알려주었을 뿐.(이건 사내 보안상 이야기 하긴 어렵고…) 5분이면 된다면서…

두번째 이야기한건 Web Socket 을 사내에 구현한게 있는데 연결당 메모리가 높아서 다른 웹서버로 갈까 하고 있다고 하니까 그건 들여다 봐야겠다고 했다.

그리고, 마지막 질문은 Tomcat 8은 언제 나오냐고 물어봤는데, 모두 일단 웃고 시작했다. 

Servlet Spec 3.1의 Spec인 JSR 340( http://jcp.org/en/jsr/detail?id=340 ) 기준으로 할 것이며, 다들 아직 구현할 준비는 되어 있지 않아 보이고, 2013년에나 나올까? 라는 답만 들었다. 그렇다는 이야기는 Tomcat 8은 JDK 7 기반으로 된 WAS이기 때문에 JDK  7 기반의 서비스를 뭔가 하려면 Tomcat을 쓰는 회사는 적어도 2년 뒤인 2013년까지 기다려야 하고, 2014년은 되어야 안정적인 버전을 쓸수 있지 않을까하는 개인적인 생각이다. 

추가로 25명 정도 되는 커미터중에 10명 남짓만 일하고 있으니, 참여하고 싶으면 언제든지 받아주겠다면서 Meet up이 끝났다. 그리고, Web Socket 관련된 이야기로 Meet up을 시작했었는데, 관련된 구현체가 없어서 일단 Apache Incubator 에 올리자고 결정이 되었다. 

참고로 커미터중에 일본 친구가 한명 있어서 하둡쪽에 있는 일본 커미터와 같이 일했던 선배 4명이서 같이 저녁 식사를 했다. 많은 이야기를 나누었는데, 그 중에 "니네들 언제 만나냐?"고 물어보니 "ApacheCon 에서만 만난다. ㅎㅎ"라고 대답했다. 특히 Tomcat은 다국적인 친구들이 일을 하고 있어서 대부분 이슈 관련 보드와 메일로 내용을 주고 받으며, 그 일본 친구가 커미터에 들어가기 위해서 50번이나 트라이했다고 들었다. 


TomEE(그냥 타미라고 발음하면 됨) :

J2EE 를 구현한 올해 초에 시작된 프로젝트로 OpenEJB와 OpenSSL등으로 구성되었다고 한다. 
그러면서 절대 J2EE 자체가 무거운 것은 아니라고 재차 강조하고, WAS를 embedded 버전으로 띄워서 자동으로 테스트 코드를 실행하고 프로세스를 shutdown까지 하는데 4초밖에 안걸리는 데모를 보여주었다. 그러면서, 방금 돌린건 첫번째라서 그렇고, 두번째는 더 빨라집니다 하면서 돌렸는데도 4초 걸렸다. ㅎㅎㅎ 뻘쭘해 하면서 그냥 4초 걸린다고 알아라하고 넘겼다. 


Geronimo :

그냥 죽은 WAS라고 생각하면 되며, 누군가 TomEE랑 뭐가 틀리냐고 물어보니 OSGi 적용이 가능하다고 이야기하면서 끝냈다. ㅋㅋ


Callback (PhoneGap) : 

Apache incubator 에 있는 것이며, PhoneGap과 동일한데 아파치라이센스를 준수한다고 보면 된다. 그런데, 여기서 Apache incubator가 뭔지 잠깐 설명하면, 정상적인 Apache 프로젝트가 되기 위해서는 이 과정을 거친다고 한다.

여하튼 Callback은 웹앱을 하나 만들면 모든 플랫폼에서 돌아갈 수 있도록 하는 것이라고 생각하면 된다. 안드로이드, 아이폰, 블랙베리, 심지어는 바다 폰에서도 돌아간다고 한다. 어도비에서 나온 사람이 발표했고, 어도비에서 후원한다는 이야기를 많이 했다.


Rave :

이건 사내 인프라나 어떤 사이트를 아주 빠른 속도로 만들 수 있도록 미리 많은 기능들을 포함해 놓은 일종의 플랫폼이라고 보면 된다. 나중에 커미터에게 다국어 지원하냐고 물어봤는데, 다 된다고 이야기는 했다. 되는지는 확인해 봐야겠지만…


HTTPD(흔히 이야기하는 아파치 웹서버)  v. 2.4 :
Jim이라는 백발이 성성한 Tomcat / Httpd 커미터 아저씨가 발표했다. 
이번달에 최종 버전이 나온다고 한다. (지금까지는 베타)
Async I/O를 제공하고, 실시간 설정값 변경이 가능하며, Load Balancer  관리화면에서 실시간으로 부하를 분산하는 설정을 변경하는 것을 보여줬다. 
참고로 Nginx가 가장 큰 경쟁자로 보였고, Nginx와의 성능 비교자료를 보여줬다. 


Apache Traffic 서버 :

1999년 부터 사용되었고, Yahoo 로 넘어갔다가 올해 Apache 로 제공하는 Traffic 서버다. 정적인 데이터를 캐시해 놓는 능력이 탁월한 서버라고 보면 된다. 여튼 성능 하나는 가장 상위 목록에 들어가는듯 하다. 


Apache Kafka :

이것도 인큐베이터에 있으며, Pub/Sub 서버(문서에서는 Broker라고 표현)라고 보면 된다. Producer가 대량의 데이터를 저장하고, 대량의 사용자에게 정보를 제공할 수 있는 서버다.
Linked In 에서 나온 인도 출신으로 보이는 여자 엔지니어가 발표했는데 매우 차분하게 말을 했는데도 불구하고 특유의 인도 억양이 좀 있어서 100 % 알아듣지는 못했다. (물론 다른 설명들도 100% 알아 들었다는건 절~대 아니다.)
여하튼 파일 기반의 데이터를 핸들링하며, 속도는 빠르지만 아직 해결해야 하는 항목들이 좀 남아있었다. 

관심있는 분들은 함 보시길…


컨퍼런스 자료는 아직 공유되지 않았으며,

http://na11.apachecon.com/ 를 눈이 빠지게 지켜보면 조만간 나올것이다. (누구나 다운로드 가능)

음성자료는 이미 있으니, PT 자료와 함께 보면 내가 얼마나 힘들었을지 알게 될 것이다. (그런데 확실히 음성만 들으면 잘들리긴 한다. ㅎㅎㅎㅎㅎ)

결론적으로 나는 가장 필요했던 것이 Tomcat과 Apache Httpd 서버와 관련된 부분이라 필요한것들은 어느 정도 얻었으니 큰 후회는 없다. 

하지만, 다시는 참석은 안(못) 할 것 같다는거~~~.

추가로 NexR에서 참가한 분중 한분의 후기는
http://pudidic.wordpress.com/ 
를 참고 하시면 될 듯 하다.
그리고 실황 중계를 하신 안XX 선배의 트위러는
https://twitter.com/#!/grazieash 
이니 참고하기 바란다. (사실 이분 트위러 좌표 확인하느라 좀 늦게 올린다.)

See you at Korea ~~~~~ 
 

신고
Posted by tuning-java Trackback 0 : Comment 1
내가 한, 두번 Tomcat 5.5와 6성능 비교를 해 본 결과
동일한 Application을 수행할 때 Tomcat 6에는 성능 문제가 존재한다.
아직 정확한 성능 저하의 원인을 밝히진 못했지만,
TPS 상으로 적어도 10~20% 정도 저하된다.

어느정도 Tomcat 6의 성능이 안정화 될 때까지는 쓰지 않는 것을 권장한다.

참고로 아래 링크를 활용하면, 어떻게 Tomcat의 성능을 최적화 할 수 있는지 알 수 있다.

http://www.solutionhacker.com/?p=147




신고
Posted by tuning-java Trackback 0 : Comment 0

리눅스 설치후 자바 개발용 세팅...

1. 자바 설치
   centos가 설치되면, 자바를 선택해서 설치할 수도 있는데, 버젼이 1.4다 - -;
   JDK 5.0이나 6.0 을 설치한 후 해당 경로를 프로파일에 등록한다.

   프로파일 수정은 계정 로그인 후 디렉토리에 존재하는 .bash_profile 파일을 변경하면 된다.
   유의사항 : jdkxxxx.bin파일을 수행한 위치에 jdk가 설치되므로, 압축이 해제될 위치에서 bin을 실행할 것.

2. eclipse 설치
   eclipse는 www.eclipse.org 사이트 들어가면, 자동으로 리눅스임을 인식하여 리눅스용을 다운 받을 수 있다
   이클립스 설치는 그리 어렵지 않으니(압축만 풀면 된다.

   그런데 만약 centos 5를 설치했다면 JVM exit code = -1 이 나타나면서 프로그램이 수행되지 않을 수도 있다. 그럴 경우 터미널에서 이클리브를 띄우면 다음과 같은 메시지가 나타날 수도 있다.

/jre/lib/i386/client/libjvm.so: reloc 후에 prot 세그먼트를 복구할 수 없습니다: 허가 거부됨

 이런 경우 SELinux 관련 옵션을 disable 해야 한다.

1. 다음 명령을 입력하여 로드한 라이브러리에 대한 기본 보안 컨텍스트를 변경
   이때 libjvm.so 가 있는 디렉토리로 이동해야함.
   chcon -t texrel_shlib_t *.so
2. /etc/selinux 의 config 파일에 다음 줄을 추가하여 SELinux를 비활성화.
   SELINUX=disabled


3. tomcat 설치
   tomcat도 다운로드해서 압축만 풀면 되므로, 그리 어렵지 않을 것이다.
   단지, catalina.sh에 JAVA_HOME 값을 지정하는 걸 잊지 말아야 한다.


신고
Posted by tuning-java Trackback 0 : Comment 0

울 회사 최모책임님이 블로그에 연동하는 글을 올리셔서...
허락받고 올립니다.

(제가 아직 확인은 못했지만 되것죠 ???)
---------------------------------------------------------------------------------------
현재 정확한 환경은 다음과같습니다.

JDK 1.6 + Apache 2.2 + Tomcat 6.0 + mod_jk 로 Windows XP에서 개발환경을 구성하였습니다.


향후 Spring framework, iBatis, MySQL로 개발작업을 진행하려 합니다.

우선 mod_jk를 이용한 연동방법이 필요하신 분들을 위해 올립니다.

참고로 mod_jk2는 더이상 개발을 진행하지 않는다고 합니다.

- 설치경로
Java: c:\java
Apache: c:\apache
Tomcat: c:\tomcat
App: c:\docs


1.Windows 환경변수에 추가
JAVA_HOME = c:\java

2. mod_jk.so파일을 c:\apache\modules 에 복사

3. c:\apache\conf\httpd.conf 변경
     LoadModule jk_module modules/mod_jk.so 추가
     include conf/mod_jk.conf 추가 (<IfModule .. 윗부분)

4. c:\apache\conf\mod_jk.conf 생성
     JkWorkersFile “c:/apache/conf/workers.properties”
     JkLogFile “c:/tomcat/logs/mod_jk.log”
     JkLogLevel error
     JkAutoAlias “c:/docs”
     JkMount /* ajp13
     JkUnmount /*.php ajp13
     <Directory “c:/docs”>
         Options Indexes FollowSymLinks
         allow from all
     </Directory>

5. c:\apache\conf\worksers.properties 생성(도메인명은 알맞게 변경)
    work.list=ajp1.3
    worker.ajp13.port=8009
    worker.ajp13.host=localhost
    worker.ajp13.domain=xxx.yyy.com
    worker.ajp13.type=ajp13

6. c:\tomcat\conf\server.xml 변경
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
     <Connector port="9999" protocol="HTTP/1.1" connectionTimeout="2000" redirectPort="8443" />
     <Engine name="Catalina" defaultHost="xxx.yyy.com">
         <Host name="xxx.yyy.com" appBase="c:/docs" unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
        </Host>
    </Engine>
    ...
    <Host name="localhost" appBase="c:/docs" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <Context path="" docBase="c:/docs" reloadable="true" />
         …
     </Host>

7. Apache, Tomcat 재기동

8. 확인: 아래 주소를 쳐서 Tomcat의 examples화면이 보이면 정상임

http://localhost/examples

신고
Posted by tuning-java Trackback 1 : Comment 2

Tomcat 5.5의 최신 버젼에서는 JConsole 모니터링이 안되도록 지정되어 있다.
이러한 문제를 해결하기 위해서,
Tomcat의 catalina.bat나 .sh 파일의 JAVA_OPTS에 다음과 같은 옵션을 추가해 주어야 한다.
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8086
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

물론 위의 옵션은 한줄에 추가해야만 한다.

신고
Posted by tuning-java Trackback 0 : Comment 0