'개발'에 해당되는 글 6건

  1. 2008.07.24 Phusion Passenger (mod_rails)
  2. 2008.01.29 RailsConf2007 키노트 동영상
  3. 2008.01.25 Nginx 시작하기
  4. 2007.12.06 제5회 루비세미나 - 발표 동영상 (2)
  5. 2007.10.01 RubyCocoa
  6. 2007.08.26 Programming with Quartz (3)

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

Nginx 시작하기

2008.01.25 14:36 from translation

왜 엔진엑스(Nginx)를?

엔진엑스는 고성능의 웹서버이자 프록시 서버이다. 많은 기능이 있지만 모든 사람을 위한 것은 아니다. 보통 엔진엑스를 다음의 방식으로 사용한다:

  • 수많은 동시 접속수를 안전하게 처리하기 위해 아파치(Apache)를 대신해 사용 : 엔진엑스는 웹 호스팅 제공업체들 사이에 특히 널리 알려져 있다. 엔진엑스가 epoll과 kqueue를 사용하는 덕분에, 50,000의 동시 접속 수도 보고된 적도 있다.
  • 부하분산 프록시 서버(load-balancing proxy server)로 사용: 엔진엑스는 레일즈(Rails)PHP 응용프로그램을 FastCGIHTTP를 통해서 처리하는 앞단(front-end)으로 널리 알려져있다. C로 작성했고, Perlbal을 쓸 때보다 약 1/4의 CPU만을 사용한다.
  • 메일 프록시 서버로 사용: 특정 분야에의 활용이긴 하지만, fastmail.fm이 큰 성공사례다.
  • 간단한 설치과정과, 깔끔한 설정파일, 그리고 적은 버그: 엔진엑스는 쉽게 구동할 수 있고, 재시작하는 일이 거의 필요 없고, 심지어는 전혀 정지시간 없이 새 바이너리로 업그레이드할 수 있다.

엔진엑스의 기능과 성능에 대해 더 알고 싶다면, 특징개요추천사를 참고하기 바란다.

필요사항

  • gzip 모듈을 쓰기 위해서 zlib라이브러리가 필요하다.
  • rewrite 모듈을 쓰기 위해서 pcre 라이브러리가 필요하다.
  • ssl을 지원하기 위해 openssl 라이브러리가 필요하다.

내려받기

공식 내려받기 페이지를 보자

설치

소스를 받아 압축을 풀고, 터미널에서 아래의 명령을 실행한다.

./configure
make
sudo make install

엔진엑스는 기본적으로 /usr/local/nginx에 설치된다. 컴파일 옵션(compile-time options)을 주어서 이 위치를 바꾸거나 다른 옵션을 선택할 수 있다.

플랫폼별 노트:
  1. 솔라리스(Solaris) x86/64용 빌드하기
  2. MacOSX에서 컴파일하는 방법

엔진엑스 실행하기

루트(root)권한으로 /usr/local/nginx/sbin/nginx를 실행한다. 설정파일 /usr/local/nginx/conf/nginx.conf를 원하는대로 편집하고 나서, 다음의 명령으로 설정값을 다시 읽어들일 수 있다:

kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

nginx.pid파일의 위치는 여러분의 시스템(machine)에 따라 다를 수 있다. 예를들어 우분투(Ubuntu)의 경우에는 다음과 같다:

/var/run/nginx.pid

더볼거리


고급 주제

- hatemogi 번역
원문: http://wiki.codemongers.com/NginxGettingStarted
@ 2008/01/25
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

Programming with Quartz

2007.08.26 03:17 from 분류없음
파워북G4를 구매한 뒤로, 맥OS용 애플리케이션을 개발해 보고 싶었다. 그러나, 다시 직접 메모리를 관리해야하는 Objective-C를 사용해야하는 점이 큰 걸림돌 중 하나다. 점점 하이레벨로 올라가서, Ruby같은 고급언어에 매료된 상태에서 다시 C수준으로 내려가는 것은 쉽지 않은 일!

모처럼, 나만을 위한 주말로 쉬고자 마음먹은 토요일. 책장에서 잠자고 있던 Programming with Quartz라는 책을 꺼내어 읽었다. 맥OS에서의 2D 그래픽을 담당하는 Quartz 프레임워크에 대한 책이다. 부제가 실제 내용을 말한다.

"2D and PDF Graphics in Mac OS X"

Mac OS X 10.4 Tiger에서 PDF처리가 어떻다며 홍보하더니, 이 얘기인가보다 2D그래픽 프레임워크에 PDF처리가 기본적으로 포함되어 있다.

현재 상태로는 내 마지막 개인작(?)이었던 wkobo를 맥버전으로 개발해보고 싶다. 사실 자바버전으로 해보던 jkobo가 중도 하차된 상태라, 실 구현물 공개까지 나아가게 될지 모르지만, 일단 한번 해보려고 한다.

차근차근 이거저거 공부해보려고 해. 재미삼아서.

TAG 개발,
Posted by hatemogi 트랙백 0 : 댓글 3

티스토리 툴바