루비온레일즈의 성능은 과연 문제인가?

레일즈를 회사 개발 프레임웍으로 선택하면서 가장 고민스러운 부분은 크게 두가지 였다. 첫번째가 운영환경에서의 성능상의 문제에 대한 문제와 둘째가 한글 지원에 관련된 문제이다. 다음글은 이중에서 레일즈 성능 테스트를 수행한 결과로서 상당한 도움이 된 글이므로 많은 참고가 되었다.

레일스 최적의 배포 환경

Agile Web Developmnet with Rails에 나온 환경은 2005년의 지나간 시대의 환경이므로, 자료를 찾던 중에 가뭄속의 단비와 같은 내용이었다. 루비가 스크립 언어이므로 실제 환경에서 자바보다는 느리다는 것이 정설이지만, 여러가지 성능테스트 결과와 사이트 사례(Basecamp, 43Things, Mortgae processing engine ) 를 볼 때 이제는 그와 같은 걱정을 버려야 할 때로 생각한다. 10년 전만해도 자바가 느리다는 것 때문에 많은 고민을 했고, 적용을 하면서도 불안감을 느끼던 시절이 있었는 데, 그런 자바가 지금 메인스트림이 되어있음을 보면 그런 자바하고 실행 속도를 비교 당해야 하다니.^^
레일즈의 철학 자체가 비용이 제로에 접근하는 하드웨어와 네트웍 비용 보다는 개발자의 시간과 가치를 중요시하는 것이므로 쉽게 얘기하자면 조금 모자라면 얼마간의 비용으로 때우면 된다는 것이다. 위에 언급한 베이스캠프만 해도 하루 400,000 응답을 처리하는 데, 2대의 웹/애플리케이션 서버(각 2.4GHz 듀얼 CPU와 2G 램)와 별도의 DB서버 1대로 운영해도 남아돈다고 하니, 이 정도면 호스팅 비용이 매월 수십만원 정도면 구성이 가능하므로 사이트 운영상의 문제는 되지 않는다. 개발자(초급)의 SI개발에 산정되는 정통부 단가가 월 500만원선임을 감안해본다면 레일즈를 왜 해야 하는 지를 알 수 있을 것이다.


이제 성능에 대한 의구심은 풀렸으니, 한글에 대한 문제에  대해 고민을 해 보아야 할 것 같다.

by 미래e | 2006/12/12 16:15 | agile 방법론 | 트랙백(4) | 덧글(3)

루비 온 레일즈 서적

요즘 루비온레일즈(Ruby on Rails)는 참 많은 곳에서 회자되고 있다. Web2.0의 개발툴로 언급이 되고 있고, Ajax와 Framework 관련 서적에도 논글자색 지정하기의되고 있으며, XP와도 관계가 있다. 그런 이유로 루비 온 레일즈에 흥미를 가지고 자료 조사를 하던 중, 본격적으로 학습이 필요해서 인터넷에서 책 한 권을 구입했다. 체계적인 지식을 쌓기 위해서는 인터넷 자료보다 역시, 책이 제격이다. ruby.org에서 제공하고 있는 동영상과 국내 세미나 동영상을 보고 레일즈에 대한 기대감이 한층 높아졌기 때문에 마음이 바빠진다. 그들의 말대로, 빠른 개발(RAD)이 가능하고 유지보수에 혁명적인 툴이고, 높은 생산성과 함께 개발자를 행복하게 할 수 있다면 무엇을 못할까.  책을 대충 훝어보니, 이 한권이면 루비스트가 될 수 있을 것 같다.

구입 : 강컴
다른 분들은 지금 구입하지 마시고 12월 1일 이후에 세컨드 에디션을 구매하세요.
이책은 레일즈 1.0 기준입니다. 세컨드 에디션에는 migrations, RJS templates, respond_to, integration tests 그리고 새로운 ActiveRecord 기능 (polymorphic associations, join models,eager loading 포함)이 포함되어 있습니다.

다음은 참고할 만한 예비서적들이다. 책이라는 것이 옆에 두고 냄새를 맡아야 좋지만, 해외 서적과 가격을 감안할 때 온라인으로 보는 것도 괜찮을 것 같다. 이중에서 CookBook은 하나 더 보면 좋지 않을까. 국내에서도 년말 아니면 내년 초 정도에 번역서가 나올 예정이다.







by 미래e | 2006/11/23 11:17 | agile 방법론 | 트랙백(3) | 덧글(0)

[Ajax] 오픈 소스 프레임웍 Rico

1. 목적

  • 컴포넌트의 안정성과 품질을 높이면서 코딩해야 할 작업량을 줄임.
  • http://openrico.org


2. 제공 기능
  • 다양한 형태의 Behavior, 드래그 앤 드롭 기능, 동영상에서 사용하던 화면 효과 제공
  • ajaxEngine이라는 전역 싱글톤 객체를 사용 - 요청 기능을 특정 이름으로 등록 가능하고, Ajax 요청에 대해 서버가 보내주는 응답을 처리할 객체 지정가능
            1) 이름 지정    :    ajaxEngine.registerRequest ( '요청 이름', '서버 URL');
          2) 핸들러 지정 :    ajaxEngine.registerAjaxObject ( '응답 이름', someObject );

          3) 서버 호출    :    ajaxEngline.sendRequest('요청 이름', request parameters....);

          4) 서버의 응답은 다음과 같은 형태로 작성

                 <ajax-response>라는 최상위 엘리먼트 아래에 <response>엘리먼트가 들어감.

                  <ajax-respons>
                        <response type="object" id="응답이름">
                              ....XML 응답의 내용이 들어감.
                         </response>
                   </ajax-response>

by 미래e | 2006/11/22 13:38 | RIA(Flex/Ajax/웹표준) | 트랙백(1) | 덧글(0)

[Ajax] 오픈 소스 프레임웍 Prototype

1. 목적
  • 컴포넌트의 안정성과 품질을 높이면서 코딩해야 할 작업량을 줄임.
  • 자바스크립트을 객체지향적으로 작성하는 방식이며, 라이브러리 제작시에도 많이 사용된다.
2. 개요
  • 자바스크립트 코드를 개발하는 효율을 높이면서 보기 좋게 다듬을 수 있는 문법 구문 제공
  • 자바스크립트 내장 기본객체를 확장해 사용할 수 있는 부분을 제공
  • http://prototype.conio.net
3. 기능

1) Class 객체
  • 자바스크립개발자가 '클래스'라고 생각하고 사용할 수 있는 결과를 생성
  • create() 메소드 제공 : 필요한 개수만큼의 메소드를 연결해 둘 수 있는 객체 인스턴스 생성
          var TextSuggest = Class.create();
              TextSuggest.prototype = {
                        initialize: function(p1,p2,p3){
                         },
                         .....
              };

  • 컴포넌트를 활용하려는 자바스크립트 코드에서
          var textSuggest = new TextSuggest(p1, p2, p3) 식으로 사용

2) extend() 메소드
  • 자바 스크립트의 기본 객체를 확장시켜 모든 객체에서 extend() 메소드 사용 가능  
  • 객체 두개를 인자로 함. 하나는 상위 객체를 의미하고, 두번째 객체는 상속받을 객체
  • extend() 객체를 통과하면 두번째 객체는 상위객체를 상속하게 됨.
  • 하위객체에 있는 속성을 모두 상위 객체에 옮겨둠
  • (활용) 인스턴스 단위로 객체 상속 개념을 활용.
3) bind/bindAsEventListener() 메소드
  • Fuction 객체에 bind()와 bindAsEventLisener() 두개의 함수가 추가됨
  • 새로운 코딩방법으로 함수를 간편하게 사용함.
       이전)

          oThis = this;
          this.onclick = function() { oThis.callSomeMethod() } ;

        bind 메소드 사용예)
          
          this.onclick = this.callSomeMethod.bind(this);

4) $메소드 - 조미료 같은 문법
  •     DHTML 개발시 getElementById() 함수를 $로 구현해 제공
       일반) var textField = document.getElementById('textField')
                    textField.value = aNewValue;

       프로토타입 적용시)
                $('textField').value = aNewValue;

by 미래e | 2006/11/22 12:36 | RIA(Flex/Ajax/웹표준) | 트랙백(3) | 덧글(0)

루비 온 레일즈 자료 디렉토리 ( Ruby On Rails : ROR 참조 자료)

루비 온 레일즈에 대한 자료집(지속 업데이트 12/13)

1. 루비온 레일즈




2. 동영상 자료

 

3. 블로그

4. 루비 언어

5. 툴

by 미래e | 2006/11/21 16:17 | agile 방법론 | 트랙백(15) | 핑백(1) | 덧글(0)

Ajax & Flex 연동 관련 자료

솔루션 및 SI 개발 환경에 따라서 Ajax와 Flex의 연동은 좋은 조합이 될 수 있다. Ajax와 Flex에 대한 개념이 잡혀 있다면, 이 기술을 효과적으로 사용할 수 있는 방법을 습득하는 것이 중요하다.

by 미래e | 2006/11/21 10:21 | RIA(Flex/Ajax/웹표준) | 트랙백(3) | 덧글(0)

Ajax 개발자의 필수 도구

< 출처 : Ajax in Action >

Ajax(웹) 개발자의 필수 도구

링컨 - "나무 한 그루를 베는데 6시간을 준다면, 처음 1시간 동안은 우선 도끼를 제대로 매만져주는 데만 집중하겠다."

   (1) 프로그램 편집기,IDE 에서 필요한 부분
  • 다수의 파일 동시 편집
  • 문법 하일라이팅
  • 코드 구조 분석
  • 프로젝트 관리
  • 버전 콘트롤
  • 다양한 언어로 개발 : 클라이언트와 서버 연결
  • 이중 위지윅 디자인 도구
   (2)소프트웨어
  • 텍스트 편집기 - TextPad, Notepad2, EditPlus,Emacs,jEdit,Vim
  • 통합개발 환경 - 비주얼 인터뎁, 비주얼 웹 디벨로퍼(무료), 이클립스, 자바 스튜디오 크리에이터, 넷위버,코모토
  • 웹디자인 분야 - 드림위버, 프론트 페이지
  • 디버거 - 모질라: 뱅크만 디버거, 마이크로소프트 스크립트 디버거
  • 서버 프로그램 디버깅 - JBoss 서버 + 이클립스 플러그인
  • HTTP 디버거 - 모질라 확장모듈(LiveHTTPHeaders,Modify Headers), 피들러(Fiddler),찰스(Charles)
  • 자바스크립트 콘솔 - 모질라 확장모듈 또는 직접 개발
  • DOM 인스펙터 - 모질라기반 확장 모듈, IEDocMon(IE기반)

by 미래e | 2006/11/20 17:39 | RIA(Flex/Ajax/웹표준) | 트랙백(3) | 덧글(0)

웹개발 할때 페이지 검증을 어떻게 하십니까? 파이어폭스 플러그인?

웹 개발을 할 때 가장 힘든 부분은 JSP/ASP/PHP를 통해 동적으로 생성한 페이지가 제대로 동작을 하는 지를 확인하는 것이다. 툴이 없을 때는 웹브라우져에서 서버 페이지를 호출해서 정상 작동 유무를 확인하는 수 밖에 없기 때문에 개발 생산성이 떨어지고 개발자의 흥미를 잃게 하는 요인으로 작용한다. 이와 같은 문제를 해결하기 위한 좋은 방법중의 하나가 파이어폭스 브라우져의 개발자용 플러그인을 사용하는 방법이다. 디버그 및 프로토콜 등으로 각각 특화되어 있는 플러그인을 설치하여 효율적으로 프로그래밍 해보자. 이제는 울트라에디터와 브라우져만을 가지고 웹개발을 하는 용감함을 버려야 할 때이다. 이클립스, JUnit 플러그인을 포함하여, 이와 같은 효율적인 IDE 환경을 적용하는 길만이 프로그램을 재미있고 창조적으로 만드는 지름길이 될 것으로 생각한다. 지금 특별하게 익숙한 툴이 없다면 지체하지 말고 파이어폭스를 설치하고, 확장기능을 설치해서 테스트 하고 익숙해지자.

< 현재 설치된 플러그인 화면 >

[웹개발 관련]

  • FireBug
  • Web Developer
  • Live HTTP Headers
  • Dom Inspector

[테스팅]

  • TestGen4Web

[기타]

  • FireFTP
  • IE Tab

 


by 미래e | 2006/11/16 18:02 | agile 방법론 | 트랙백(3) | 덧글(0)

[Flex] 아도비 맥스 2006을 다녀와서

아도비 맥스 2006을 참관하면서 아도비 개발자들로부터 들은 유용한 정보를 간단하게 정리해 본다.


1. 플래시 9
  • 플랙스2의 SWF 파일은 플래시 9에서만 구동되므로, 일반 사용자 브라우져의 플레시9 설치율은 기획상에 중요한 통계 자료가 됨.
  • 11월 현재 Flash9 player의 설치율은 40% 정도이며, Flash8의 경우 9개월 동안 85% 이상의 설치율을 보임. 그렇다면 사용자에게 플레시9 설치를 요구하는 것을 꺼려한다면 한 6개월은 기다려야 한다는 추측이 가능하다. 엔터프라이즈 애플리케이션의 경우는 설치를 요청하는 것은 크게 문제가 되지 않지만, 일반 인터넷의 경우는 부담일 수 있다. 예를 들어 사이트 전체를 플렉스로 개발할 때 아직까지  접근성에서 자연스럽지 못하다는 것으로 생각해 볼 수 있다.  있
  • 플래시 9의 경우, 이전버젼에 비해 퍼포먼스가 몇십~몇백배 향상됨(그래픽 데모)
2. 플래시 라이트
  • 일본 모바일 핸셋의 70%는 플래시 플랫폼임.
  • 플래시 개발자는 모바일 플랫폼이 플래시로 일반화됨에 따라 돈 벌 수 있는 기회가 널렸다. 한국에서 개발한 컨텐츠를 일본이나 미국, 유럽에 수출할 수 있다.
  • 퀄컨도 BREW 플랫폼에 모바일 플래시를 장착하려고 하고 있다(제휴중)
  • 모바일 장비(플레이 스테이션3, IPTV, PMP, DVD, Navigator 등)에 플래시 라이트가 탑재되고 있음.
  • 모바일 핸드셋의 환경을 애뮬레이션 할 수 있는 기능을 툴에 삽입하고 있음 - 예를 들어 핸셋 시간,날짜,위치,배터리,위치 정보를 애뮬에서 인식하고 테스트 할 수 있는 환경을 제공.
3. PDF
  • 전세계 인터넷 컨텐츠의 10%는 PDF 포맷이다.
  • PDF의 경우 플랙스와 결합하여 동적인 리포트 툴로 확장이 가능하다.
4. 플렉스2
  • FDS의 메시징 서비스를 이용해서 협업 애플리케이션 또는 페이지 가능
  • 인터넷상에서 상담원을 화상 연결하고 상담원이 사용자를 도와서 작업을 대행, 교육 가능(화상 연결시는 FMS가 필요하고, 메시지 서비스는 FDS가 필요)
  • 빠른 개발을 위해서 ORM 매핑 솔루션인 Hibernate를 지원함.
  • 메시징 서비스를 위해서는 FDS 내부의 AS를 이용하는 방법과 JMS를 이용하는 방법 존재.- 플랙스 응용프로그램간에는 AS를 이용하고 다른 자바 클라이언트를 가지고 있는 경우에는 JMS 연동이 가능함.
  • FDS를 이용하면 그리드에 동적 바인딩을 이용할 수 있으며, 그리드에서 즉각적인 데이터 저장이 가능하며, 멀티유저 사이의 데이터 충돌을 방지할 수 있음.
  • 플렉스가 Ajax보다 대용량 데이터 처리의 퍼포먼스면에서 탁월함(FDS에서 압축 바이너리 전송 포맷인 AMF 포맷을 지원 17초대 3초)
  • 다운로드된 서버 도메인으로만 네트웍 연결이 가능하도록 한 Security Sand Box 모델을 우회할 수 있는 방법은 FDS에서 지원하는 Proxy 방식을 사용하면 됨
  • FDS는 대용량 데이터를 처리할 때 페이징을 지원함.
5. FMS
  • 웹캠을 통한 화상회의 솔루션을 제작하기 위해 필요.
  • 액션스크립트 하위 버젼을 사용하므로 혼란스러움.
  • 비디오 온라인 스트리밍을 위해서는 반드시 필요.
  • 프로그래시브 스캔에 비해 자유로운 방영 위치 이동이 가능하며, 컨텐츠가 사용자 컴퓨터에 저장되지 않음(중요)
6. 아폴로
  • 맥, 윈도우즈, 리눅스 등의 클로스 플랫폼을 지원하기 위한 데스크탑용 애플리케이션 툴로 아폴로를 개발중
  • HTML,Javascript,CSS,SWF 등을 모두 지원하고 로컬 자원에 대한 접근이 가능.
7. 매크로 미디어와의 통합에 대해
  • 디자이너와 개발자에게 환상적인 환경을 제공할 것이다.
  • 포토샵의 레이어 작업물을 플래시 스튜디오에서 바로 임포트
  • 일러스트레이터에서 작성한 스타일을 플렉스에서 바로 적용. 이 부분들은  모든 사람들에게 편의성을 줄 것임.
8. 기타
  • 아도비에서는 가능성있는 컨텐츠 개발에 투자하고 있음.
  • $100,000,000 재원 가지고 투자
  • NHN의 한게임은 플래시 기반으로 재설계되어 운영되고 있음.
  • NHN의 카페 및 블로그에 플래시 게임 아이템을 판매중.

by 미래e | 2006/11/15 18:35 | RIA(Flex/Ajax/웹표준) | 트랙백 | 덧글(0)

ORM(객체 관계 매핑:Object Relational Mapping)의 필요성

ORM(객체 관계 매핑, Object Relational Mapping)은 데이터베이스와 메모리상의 객체를 자동으로 연결해주기 때문에 SQL 질의를 직접 작성해야 하는 번거로운 작업을 줄여준다. MVC 개발 프레임웍에서 데이터베이스와 관련된 복잡한 부분은 ORM 도구에 맡길 수 있기 때문에 그 만큼 개발 작업이 쉬워진다. 개발언어별로 사용할 수 있는 라이브러리와 툴은 다음과 같다.

특히 Hibernate의 경우 Flex2의 FDS에서 지원하고 있으며, Ajax에서도 유용하게 사용할 수 있으므로 충분한 관심을 가져야 한다.

** 개발자의 하루 학습은 1년의 수고를 덜어 줄 수 있으며, 50만원의 교육 투자는 48배의 이익으로 돌아온다.

by 미래e | 2006/11/15 16:12 | agile 방법론 | 트랙백(3) | 덧글(3)

◀ 이전 페이지          다음 페이지 ▶