'루비'에 해당되는 글 4건

  1. 2008.07.24 Phusion Passenger (mod_rails)
  2. 2008.01.29 RailsConf2007 키노트 동영상
  3. 2007.12.06 제5회 루비세미나 - 발표 동영상 (2)
  4. 2007.10.01 RubyCocoa

Phusion Passenger (mod_rails)

2008.07.24 19:38 from ruby
퓨전 패신저(Phusion Passenger)는 아파치 웹서버에서 레일스 애플리케이션을 비롯한 루비 웹서비스를 연결하는 아파치 모듈이다. 다른 아파치 모듈 스타일들과 비슷한 이름형식으로는 mod_rails로도 불렸던것 같다. 나는 아파치 대신 nginx를 사용하기 때문에, 이 모듈에 대해 큰 관심을 두지 않았다. 단지, 아파치와 레일스 애플리케이션을 연결해서 쓰기에 아주 좋을 것 같다는 생각만 했을뿐.

그런데, 마침 내가 다른사람과 공동으로 사용하는 호스팅 서버에 설치해 볼 기회가 생겼다. 어차피 공동 호스팅이라서,

Apache - Nginx - mongrel_cluster

의 구조로 사용했었다. 웹서버레이어가 두겹인게 마음에 들지 않았지만, 나만 사용하는 웹서버레이어를 하나 더 두고 마음껏 사용했던 것이지. 오늘 해당 서버에서 nginx를 거치지 않고, 바로 아파치에서 퓨전 패신저 모듈로 레일스 애플리케이션을 연결해 보았다.

모듈 설치도 아주 간단하고 친절했으며, 설정값을 어떻게 지정해야하는지도 자세히 안내되어, 빠르게 연결해 볼 수 있었다. 너무도 간단하게 레일스 애플리케이션을 연결했고, 몽그렐 클러스터를 띄우거나 재시작하는 별도의 작업 없이, 퓨전패신저 모듈이 알아서 관리해주는 점이 마음에 들었다.

이 모듈의 구조를 간단히 설명하는 문서를 읽어보았는데, 아주 잘 만든거 같아 호감이 더해졌다. PHP가 FastCGI모듈로 사용되는 방식으로 구현했다고 한다. 설치/운영이 간단하다는 점과, 레일스 프로세스와 아파치의 워커 프로세스가 별도의 메모리 주소공간을 사용한다는 점이 매우 마음에 든다. 아파치 웹서버와 레일스(또는 Rack기반의 루비 웹서비스)애플리케이션을 구동한다면 아주 매력적인 솔루션이라고 생각한다.

누가, nginx용 모듈로도 만들어 주면 안되겠니? ^^;
Posted by hatemogi 트랙백 0 : 댓글 0
작년에 참석했던 RailsConf2007의 키노트의 동영상들이 올라왔다.

http://railsconf.blip.tv/

처음으로 해외컨퍼런스에 참석한거였는데, 정말 오길 잘했다는 생각이 들었었지. 올해는 아쉽게도 못갈거 같고, 대신 RubyConf2008에 도전해볼까 생각중.
Posted by hatemogi 트랙백 0 : 댓글 0
제5회 한국 루비사용자 세미나에서 우리 서비스를 기술적으로 소개하는 시간이 있었다. 매번 다른 분들의 발표를 듣기만 하다가, 우리의 서비스를 소개할 수 있는 뜻깊은 자리였다. 개발자 3명이 시간을 나누어 모두 발표해볼까 했으나, 산만할 것 같아서, 우리의 완소 개발자 성진님이 발표하시게 되었다.

난, 이날 얼떨결에 진행을 맡았는데, 동영상에 잠시 등장하여 질문과 답변시간을 몸빵했지.



또 발표할 수 있는 기회가 있으면 좋겠구나.
(아! 난 12분경에 등장 ^^)








Q&A

질문과 답변 내용을 가감및 보충해서 짤막히 다시 적습니다.

1. 레일스(rails)캠핑(camping)을 혼용해 썼다고 했는데, 그 비율은?
대부분의 주요 서비스는 레일스가 담당하고 있고, 주요서비스와는 조금 구분되는 간단하고 작은 별도의 업무에 대해, 별도 서버에 캠핑을 쓰고 있다. 캠핑의 비율은 매우 적다.
2. 캠핑 디플로이(deploy)는 어떻게 해서 쓰고 있는지?
엔진엑스(nginx) -> 몽그렐(mongrel) -> 캠핑으로 구성되어있다. 앞단에 엔진엑스가 요청을 받아주며, 캠핑은 몽그렐 프로세스안에서 실행된다.  
3. 캠핑의 앞단에 몽그렐이 있다는건, 몽그렐이 로드된 다음에 캠핑이 실행되는 것인가? 리퀘스트 하나에 대해서 몽그렐이 하나씩 뜨는 것인가?
몽그렐은 자바 서블릿 엔진처럼, 프로세스가 하나 떠있는 상태에서 매 리퀘스트마다 처리 쓰레드가 실행된다. 즉, 몽그렐 프로세스는 하나만이 실행된다.
4. 캠핑과 mod_ruby를 비교해서 어떤지?
캠핑은 가벼운 웹프레임웍이고, mod_ruby는 웹서버에서 루비로 처리할 수 있는 하나의 수단이라 비교 대상은 아닐 수 있지만, mod_ruby는 아파치(apache) 프로세스 안에서 돌아가기 때문에 단점이 될 수 있다고 생각한다. 캠핑자체는 단순한 업무를 구조적으로 해결하기에 꽤 재밌는 해결책이다.

5. 앞단에 L4 로드밸런서가 있는데, 왜 nginx를 써야하는가? L4에서 몽그렐로 바로 연결해도 되지 않는지?
첫번째로, Layer 4 로드밸런서로는 사용자 요청을 여러대로 나누어 처리하는 것은 가능하지만 Layer 7수준의 처리를 할 수 없다는 문제가 있다. http access log를 남기는 작업을 비롯해 http 프로토콜 수준의 url_rewrite등의 작업이나, 정적(static) 파일을 신속히 서비스하기 위해서는 중간에 L7수준의 작업을 간편하고 쉽게 처리할 수 있는 레이어나 웹서버가 하나 더 필요하다.

두번째는, 정책적인 사항인데, L4스위치를 관리운영해주는 본부가 따로 있기때문에, 개발자가 직접 제어하는 것이 바람직하지 않다는 이유이다. 중간에 개발자가 운영상황에 따라 손쉽게 제어할 수 있는 레이어가 하나 더 있는 것이 좋다는 판단이다. 
6. 개발인원은 몇명인가?
레일스개발자는 세 명이 자바스크립트 개발도 함께 하고 있으며, UI개발자분이 한분 더 있다.
7. 서비스를 살펴보니 RESTful하게 개발했는데, 오픈API에대한 고려가 있는것인가?
꼭 오픈API를 위해서가 아니더라도, RESTful 서비스 방식은 꽤 매력적인 개념이라고 생각한다. 내부적으로 RESTful 방식으로 개발되어있고, 캘린더 미니 역시 같은 방식으로 접근해 xml 데이터를 가져가서 사용한다. 우선은 다음내의 플랫폼 연동에 주력하고, 추후에 오픈API를 고려하고있다.

8. 자바개발자로써 루비를 써보니 어떤가?
코딩하는 재미가 있고, 코드 분량이 상당히 줄어든다. 처음엔 낯설고, 자바에 비해 참고문서가 적다는 점이 불편하기도 하지만, 그외에는 꽤 만족하고 쓰고 있다.

Posted by hatemogi 트랙백 0 : 댓글 2

RubyCocoa

2007.10.01 15:10 from 분류없음
사용자 삽입 이미지


맥오에스에서의 애플리케이션 개발 프레임워크인 코코아(Cocoa)는 Objective-C 코드로 개발해서 사용하는데, 이 Objective-C API를 루비로도 그대로 불러 쓸 수가 있다. 이름하여 루비코코아(RubyCocoa)인데, 제 4회 루비세미나에서 간략한 데모를 보고, 또, 곧 출시되는 MacOS X 10.5 Leopard에 기본 탑재된다는 얘기에, 이걸로 맥에서의 개발방향을 굳혔다.


오래동안 잠자고 있던 코보도 이걸로 하기로. 새 코보의 이름은 rkobo가 될듯 하다. ^^

간만에 색다른 분야, 그것도 non-'웹' 애플리케이션을 개발하려고 하니 흥미롭구나.

Posted by hatemogi 트랙백 1 : 댓글 0

티스토리 툴바