제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

티스토리 툴바