스프링 웨비나: Building Twitter with Grails in 40 Minutes

내일 모래 목요일 한국 시간으로 밤 11시에 시작합니다.
https://www1.gotomeeting.com/register/844031096

스프링소스에서 Grails 개발을 담당하고 있는 Graeme Rocher가 직접 40분 안에 Grails를 사용해서 Twitter와 비슷한 애플리케이션을 만드는 데모를 보여준다고 합니다. +_+ 상상만해도 멋지네요.

스프링, JMS, Java Persistence 기술을 사용할 예정이며, Grails 애플리케이션을 Java EE 플랫폼에 배포하는 것과 관련된 고급 팁과 기술을 선보일 예정이라고 합니다.

  • 스프링-기반 도메인 객체를 사용하여 기본적인 Grails 프로젝트를 어떻게 구성하는지
  • Grails 애플리케이션에서 메시징과 영속성을 어떻게 다루는지
  • 애플리케이션에 필요한 기본 설정을 어떻게 하는지

살펴볼 수 있다고 합니다. 목요일은 오랜만에 웨비나에 참석해야겠습니다.

스프링소스 새 웨비나 일정: SpringSource tc 서버 소개

참조: http://www.springsource.org/node/849

12월 11일에 합니다. 아.. 내일이군요. 미국에 있어서 낮에 봐야하는대 녹녹치 않을 듯 합니다. 이건 나중에 녹화된 걸로 봐야겠습니다.

다루는 내용은 다음과 같습니다.

  • 대규모 개발 관리하기
  • 분산된 톰캣 인스턴스 그룹 제어하기
  • 제품 시스템에 엔터프라이즈 애플리케이션 잘(reliably) 배포하기

tc 서버 데모를 S1A 키노트 떄 잠깐 봤었는데 이번 웨비나를 통해 더 자세히 살펴볼 수 있겠네요. 기존의 톰캣은 운영이나 관리 측면이 빈약했는데 tc 서버는 그 부분을 어떻게 보완했는지.. 사용은 편한지.. 등등..

스프링소스 웨비나: 프로들의 아파치 톰캣 팁과 트릭

마크 토마스 랑 …
– 톰캣 커비터로 5년 넘게 일해왔다.
– 아파치 멤버
– 시니어 소프트웨어 엔지니어 이자 컨선턴트
– 스프링소스 Covalent 부서
– 성능, 트러블슈팅, 보안 전문가

톰캣 버전 얘기
– 6.0.x가 최신 버전
– 7.x가 슬슬 수면위로 들어나고 있다.(서블릿 3.0 스펙, ..)

주요 안건
– 대규모 개발에서 톰캣
– 톰캣 & JVM 업그레이드
– …

setenv.sh – 여기서 커스텀 옵션
– JAVA_HOME
– JAVA_OPTS
– CATALINA_OPTS
– …
– 이 파일은 톰캣이 기본으로 제공하는게 아니니깐 복사해서 가지고 다니면서 수정하라.
– 여기서 자바 버전 설정하면 톰캣 스트립트 수정하지 않아도 된다.
– 인스턴스 데이터를 분리해낼 수 있다.(별도의 톰캣 서버 인스턴스)
– 톰캣이나 JVM을 변경할 때 이 파일을 이용하면 편하다.
– RPM을 사용하면 롤백 과정이 복잡하다.

Production 세팅

server.xml
– <Server port=”8005″ shutdown=”SHUTDOWN” > : will allow unauthorized shut-down of Tomcat instance
– <Server port=”-1″ shutdown=”SHUTDOWN” > : 셧다운 포트 disable.
– 톰캣 멈추기: kill <pid>

애플리케이션 제거하기
– ROOT – 제공할 애플리케이션으로 대체하기
– 다음 폴더는 제거하는게 보안 최선책(security best practice)이다.
– /examples
– /docs
– /manager(원격 배포를 할 수 없게 된다.)
– /host-manager(원격 호스트 관리를 할 수 없게 된다.)

로깅
– conf/loggin.properties: 핸들러 등록
.handlers = \1catalina.org.apache.juli.FileHandler
– 파일에만 로깅한다.
– 개발할 때 가끔은 stdou/stderr가 더 쉬울때도 있다.

Rotating catalina.out(모르는 거)
– http://www.cronolog.org – 예제 도구
>> “$CATALINA_BASE” /logs/catalina.out 2>&1 &
–  하루 주기로 로테이트
2>&1 | /bin/cronlog/ …

접근 로깅(이것도 모르는거..)
– valve를 사용해서 접근 로깅을 할 수 있다.

글로벌 기본값
– ex) 커넥션 풀
– 모든 기본 값은 conf/context.xml 또는 conf/web.xml 에 설정할 수 있다.
– 기본값은 애프리케이션에서 설정한 값이 재정의할 수 있다.

Templating
– catalina.properties의 값을 server.xml에서 사용할 수 있다.

배포 방법
– server.xm에서 <Context> 엘리먼트 사용하기
– WAR 파일 자동 배포
– 디렉토리 자동 배포
– XML 파일 자동 배포
– 원격 배포
– Best Practice는 한 가지 선호하는 방법을 사용하는 것이다. 여러 방법을 혼용하면 얘상치 못한 상황을 보게 될지도 모른다.

Building Tomcat Native(이것도 모르는 거)
– OpenSSL 소스 distro 압축 풀기
– APR 소스 distro 압출 풀기
– APR Util 소스 disto 압축 풀기
– tomcat-nartive.tar.gz distro 압축 풀기
– setenv.sh (64비트로 컴파일 했으면 64 비트 JVM 사용하도록 설정해야 한다.)

커넥터 선택하기(아파치 커넥터 얘기하는건가?)
– BIO(Blocking IO)
– NIO(None-blocking IO)
– 왜 NIO 커넥터를 사용하려는가?
– 네이티브(APR) 커넥터는 솔라시스에서 안정적이지 않다.
– NIO는 순수 자바 솔루션이다.
– SSL로 NIO와 BIO를 교환하는 건 간단하다.

버추얼 호스팅은 무엇인가?
– 단일 톰캣 인스턴스에 여러 호스트 이름 주는거
– http://a.foo.com
– http://b.foo.com

호스트 정의
– server.xml에 호스트 설정
– 자신만의 appBase 필요함
– …

버추어 호스팅 컨텍스트 정의
– 표준 방법 적용 http://apache.org/tomcat-6.0-doc/config/context.html

버추어 호스팅 사용이 적당한 경우
– DNS 가 설정되어 있지 않을 때
– docBase == appBase
– ROOT.war 사용하지 않을 때
– …

문서화되어 있지 않은 옵션
– W3C Extended 로그 파일 포맷
– 캐싱 – private chaching을 권장한다.

스프링소스에서 아파치 톰캣 지원

질문 답변

Q: mod_jk vs mod_proxy_ajp ? Which is preferred for Apache2.2 to Tomcat6.0.x?
A: We recommend them in the following order
 mod_proxy_http, mod_jk, mod_proxy_ajp
 we prefer the HTTP protocol, if you want AJP, mod_jk is more stable than mod_proxy_ajp (which is the newest addition)

Q: mysql-connector: why not shared/lib?
A: since connection pool library doesn’t have access to shared/lib
 if you want mysql jars in the webapp, you can add a connection pool library in your webapp and configure it there. Tomcat has to follow the class loader rules

Q: Currently we see that with 3 apache servers having each 100 clients (prefork + mod_jk) each tomcat server (10) has also 100 threads. Which doesn’t look logical. Is there a mod_jk config option which could change this behaviour?
A: in httpd.conf –
 JkOptions +DisableReuse
 this will turn of AJP keep alive, and you no longer have to balance threads

Q: Is Log Valves a tomcat6 feature?
A: AccessLogValves have been around in Tomcat since Tomcat 5 (possible 4) Can be found under the Valves section of the Tomcat Configuration Reference

Q: does the connector preference also apply to AJP connections (using mod_jk)?
A: Yes, with the exception of SSL. No SSL support on AJP, but you can keep more connections than threads using APR/AJP, so you no longer have to carefully balance maxThreads(Tomcat) with MaxClients(httpd)

Q: Is there a way to solve the problem of “PermGen memory error” that usually arises after many reloads of the contexts?
A: PermGen error, are very hard to resolve, as they are very subtle bugs in the web applications
 If the bug can’t be fixed, increase -XX:MaxPermSize large enough to be able to reload applications during the day and then do a restart of tomcat at night

Q: If you are passing .jsp pages to Tomcat from Apache , do the Tomcat docBase and the Apache Document root need to be the same for the given Virtual Server ?
A: For security reasons, you don’t want httpd to have access to the Tomcat file system (webapps), as one can exploit your configuration to download your code

ps: 큰일이네;; PPT에 집중하니까 귀는 하나도 안 들리네;;

새로운 스프링소스 웨비나 일정

참조: http://www.springsource.org/node/828

일시: 한국 시간으로 11월 25일 밤 11시~12시
주제: Apache Tomcat Tips and Tricks from the Pros
내용: 아파치 톰캣을 보다 빠르고, 쉽고, 생산적으로 관리하는 방법
세부내용
    * Setting up your Apache Tomcat infrastructure for large scale deployments
    * How to upgrade and easily rollback different Apache Tomcat and JVM versions
    * How to migrate your Apache Tomcat configurations during upgrades
    * Apache Tomcat connector configurations
    * Best practices around virtual host configurations in Apache Tomcat
    * Undocumented configurations options