slide2
-
레일스 실전워크샵
스프링노트(2)
유지만
오픈마루
-
테스트
- 테스트로 안심하기 (rspec화면)
- 테스트커버리지 (rcov화면)
- 품질을 보장하는 안전벨트
- 레일스는 최적의 테스트환경을 제공
-
완소 RSpec
좋은 루비 코드는 짧고 함축적인 코드가 아니라 읽고 쉽게 이해할 수 있는 코드입니다. 확장이 쉽고, 문법이 유연한 루비의 장점을 살리면 약간의 노력으로 정말 읽기 편한 코드를 만들 수 있습니다. 이런 생각이 잘 표현된 것이 루비의 테스팅 프레임워크인 RSpec인데 이 프로젝트는 명세서(문서)의 역할을 할 수 있는 코드를 추구합니다 - deepblue (bowling_spec.rb)
-
완소 RSpec
- 가장 좋아하는 gem
- Behavior Driven Development(BDD)
- BDD란 테스트 주도 개발(TDD)과 유사하지만, 코드의 동작(behavior)과 명세(specification)로 설계과정을 좀더 잘나타냄
- BDD는 테스트를 작성하는 과정이 스펙을 작성하는 과정과 유사
-
RSpec 설치/사용
- install
- rspec integration / generate
-
캐시 - MemCached
- install
-
캐시 - MemCached
- configure
-
캐시 - MemCached
- 스프링노트 페이지관련부분 캐시 적용
- write - read - expire (데이타와 캐시의 sync)
- 모델을 해치지 않는 옵저버를 활용한 캐시 expire (page_sweeper)
- 컨트롤을 해치지 않는 헬퍼를 활용한 캐시 write (page_list_helper)
- (cache.rb)
-
배포 - 지속적인 통합환경
- 배포용 루비 스크립트
- 잦은 배포시에도 안정성 보장 (rspec + selenium)
- staging 서버에서 지속적인 통합 (10분 마다)
- 테스트 실패시 실서버에 배포 불가
-
배포 - 스프링노트의 선택
- 환경구성 (staging, server1, server2, db, search, webdav)
- apache (mod_proxy) + mongrel 20 x server 2
- 24시간 모티터링툴 : 오픈마루의 전체 서비스를 모니터링 (spade project - django)
-
운영 - 중단없는 서비스
- monit? (관리툴화면)
- monit의 자동 관리 및 복구기능 이용으로 발뻗고 자기
- ~/.monitrc 파일구성 (monitrc-sample.txt)
- 유용한 monit 관리툴 - (프로세스 모니터링)
- mongrel restart 기법
- Apache + ProxyBalancer + Mongrel 구성에서의 문제 (mongrel restart)
- mongrel_rails의 클러스터 기능 사용안함, balancer_manager 를 사용 함.
- 예제 레이크 스크립트 (mongrel-restart-rake.rb)
-
기타이슈
- (운영) script/console 의 활용(운영환경과동일)
- 쿼리 줄이기 : (User has_many Page) (Page has_many Revision)
- (방법1) 모델 인스턴스 활용
-
(방법2) Eager loading : fetching performance - 모델 관계(:include) 활용
- raise 와 친해지기 (stack을 볼 수 있다 - IDE로 추적하지않고)
- 로그 필터링시 JSON 객체 주의
- 레일스의 로그 로테이터는 사용하지 않음
- rescue Exception (error.c)
-
Questions?
-
참고자료
http://jasonpa.springnote.com/pages/267193
-
감사합니다
History
Last edited on 05/31/2007 01:35 by JasonPA
Comments (0)