Header

  1. View current page

    재선아빠님의 노트

Profile_image?t=1224119607&type=big
21

slide2

  1. 레일스 실전워크샵

    스프링노트(2)

    유지만

    오픈마루

  2. 테스트

    • 테스트로 안심하기 (rspec화면)
    • 테스트커버리지 (rcov화면)
    • 품질을 보장하는 안전벨트
    • 레일스는 최적의 테스트환경을 제공
  3. 완소 RSpec

    좋은 루비 코드는 짧고 함축적인 코드가 아니라 읽고 쉽게 이해할 수 있는 코드입니다. 확장이 쉽고, 문법이 유연한 루비의 장점을 살리면 약간의 노력으로 정말 읽기 편한 코드를 만들 수 있습니다.  이런 생각이 잘 표현된 것이 루비의 테스팅 프레임워크인 RSpec인데 이 프로젝트는 명세서(문서)의 역할을 할 수 있는 코드를 추구합니다 - deepblue  (bowling_spec.rb)

  4. 완소 RSpec

    • 가장 좋아하는 gem
    • Behavior Driven Development(BDD)
    • BDD란 테스트 주도 개발(TDD)과 유사하지만, 코드의 동작(behavior)과 명세(specification)로 설계과정을 좀더 잘나타냄
    • BDD는 테스트를 작성하는 과정이 스펙을 작성하는 과정과 유사
  5. RSpec 설치/사용

    • install
    • rspec_install.png
    • rspec integration / generate
    • rspec_integration.png
    • rake_run.png
  6. 캐시 - MemCached

    • install
    • memcached_install.png
  7. 캐시 - MemCached

    • configure
    • memcache_configure.png
  8. 캐시 - MemCached

    • 스프링노트 페이지관련부분 캐시 적용
    • write - read - expire (데이타와 캐시의 sync)
    • 모델을 해치지 않는 옵저버를 활용한 캐시 expire (page_sweeper)
    • 컨트롤을 해치지 않는 헬퍼를 활용한 캐시 write (page_list_helper)
    • (cache.rb)
  9. 배포 - 지속적인 통합환경

    • 배포용 루비 스크립트
    • 잦은 배포시에도 안정성 보장 (rspec + selenium)
    • staging 서버에서 지속적인 통합 (10분 마다)
    • 테스트 실패시 실서버에 배포 불가
  10. 배포 - 스프링노트의 선택

    • 환경구성 (staging, server1, server2, db, search, webdav)
    • apache (mod_proxy) + mongrel 20 x server 2
    • 24시간 모티터링툴 : 오픈마루의 전체 서비스를 모니터링 (spade project - django)
  11. 운영 - 중단없는 서비스

    • monit? (관리툴화면)
    • monit의 자동 관리 및 복구기능 이용으로 발뻗고 자기
    • ~/.monitrc 파일구성 (monitrc-sample.txt)
    • 유용한 monit 관리툴 - (프로세스 모니터링)
    • mongrel restart 기법
      • Apache + ProxyBalancer + Mongrel 구성에서의 문제 (mongrel restart)
      • mongrel_rails의 클러스터 기능 사용안함, balancer_manager 를 사용 함.
      • 예제 레이크 스크립트 (mongrel-restart-rake.rb)
  12. 기타이슈

    • (운영) 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)
  13. Questions?

  14. 참고자료

    http://jasonpa.springnote.com/pages/267193

  15.  

    감사합니다

  16.  

 

History

Last edited on 05/31/2007 01:35 by JasonPA

Comments (0)

You must log in to leave a comment. Please sign in.