레일스 애플리케이션 개발은 10분만에 블로그를 만들 정도로 쉽지만, 이렇게 만든 애플리케이션을 서비스하기 위해 배포하고, 운영하는 일은 생각만큼 만만치않다. 가장 큰 문제는 레일스 배포 환경을 설명한 자료나 경험을 가진 사람이 부족하다는 점이다. 이런 현실을 조금이나마 극복하기 위해 스프링노트를 개발/운영해본 경험을 공유하고자 한다.
배포 환경
현재 추천할만한 배포 스택은 아래 두가지다.
- Apache 2.2 + Phusion Passenger
- Nginx + Evented Mongrel + Monit
- 레일스 최적의 배포 환경 (outdated)
- monit을 이용한 몽그렐 프로세스 모니터링
- 몽그렐 클러스터가 필요한 이유
- 이벤트 기반 몽그렐의 성능
- Apache2 vs. Nginx
- 스프링노트 배포 환경 Before & After: Capistrano, God, HAProxy, Seesaw!
- 변하지 않는 것은 없다. 이제 대세는 Passenger(aka. mod_rails)
- 몽그렐 사용자를 위한 몇가지 팁
- HAProxy
- Capistrano
- Memcached
- Swiftplied Mongrel
- Vlad the Developer
- 레일스 로거 성능 테스트
성능 테스트
- 웹 프레임워크 성능 비교 - 레일스는 생각보다 느리지 않다
- 레일스 로그를 활용한 성능 분석
- 레일스 2.3은 이전 버전보다 빨라졌을까요?
- RailsBench 사용법 (draft)
- Erubis는 레일스 성능에 도움이 될까? (draft)
Tips
- 몽그렐을 우아하게 재시작하는 법
- 몽그렐이 말을 듣지 않으면 Kill -9
- JS/CSS를 한 파일로 합쳐 요청 수를 줄이자
- 010 nginx를 위한 똑똑한 로드 밸런서
- 쿼리 최적화: include vs. preload
- monit을 모니터링 하자 (draft)
- Logger rotate를 쓰지 마세요
- 세션 스토어를 선택하세요
유용한 플러그인
- 예외 알림 플러그인 (Exception Notifier Plugin)
- 쿼리 분석 플러그인 (Query Analyzer / Query Trace)
- 레일스에서 특정 작업 비동기로 처리하기- Delayed Job 플러그인
참고