Rev. 2.73

cloud_logo_large_0.png

웹기반 서비스들이 날로 발전하면서 웹 개발 환경 역시 진화하고 있습니다. 근래(5월) 발표한 앱테나 클라우드(Aptana Cloud)는 개발과정을 더욱 간소화하여 시간과 비용을 절약할 수 있는 웹개발 솔루션입니다. 스크린케스트를 보고 놀라지 않을 수 없었는데요. 이 서비스는 IDE와 맞물린 웹호스팅의 크라우드화로 볼 수 있겠습니다. 앱테나 클라우드의 특징들을 보면, 최대 8개의 독립적으로 실생되는 Apache, MySQL, PHP 플랫폼 위에 Aptana Jaxer루비 온 레일스(추가예정) 개발환경이 갖추어진 호스팅 서비스를 지원하며, 프로젝트 파일관리와 DB 탐색기, 시스템 상태 알림 장치, 구글 Analytics, 원클릭 백업, 통계 및 로그 모니터 등 원격 프로젝트 관리환경 그리고 팀간 협업 시스템을 제공합니다. 정말 놀라운 것은 온라인 프로젝트 싱크(SmartSync)를 통해 SVN 리파지토리 서비스를 통합 제공하여 클라우드 IDE를 가능케 합니다. 앱테나는 서버 호스팅으로까지 사업을 확장하려는 음모를 꾸미고 있는 것입니다. 아무레도 그들이 만든 Jaxer 서버의 보급율을 가속화시키고자 웹 호스팅 시장에 직접 뛰어든 것으로 생각됩니다.

attachment
변경된 앱테나 웰컴 페이지

베타 서비스 기간동안은 공짜로 사용해 볼 수 있어서 직접 사용해 보기로 했습니다. 우선 클라우드 기능이 포함되어있는 앱테나 베타버전으로 업데이트 해야합니다. 아쉽게도 앱테나의 베타버전은 정품(라이센스가 있는) 사용자만 다운로드할 수 있습니다. 업데이트를 마치면 클라우드 서비스가 포함된 웰컴페이지를 볼 수 있습니다. 위 화면은 DAM이라는 이름의 프로젝트를 클라우드하는 과정을 담고 있는데요. 애플 스타일의 위저드 팝업에서 진행되는 클라우드 생성 과정 중에 결제화면이 나타나는데 이 때 실제 자신의 신용카드 정보를 입력하지 않아야 하며, 경고 표시줄에 명시되어있는 임의의 신용카드 번호를 사용하여 가상으로 결제를 마칠 수 있습니다. 파일 싱크를 마친 후 자체 제공하는 phpMyAdmin을 통해 DB를 물려 무사히 성공할 수 있었습니다.

독립된 프로세스가 할당된 Apache, MySQL 등의 서버 제공과 동시에 각종 관리도구와 연계하한 플러그인, 모듈들의 설치를 자동화 및 온라인화하고, 호스팅과 함께 소스 리파지토리까지 제공하는 매우 품격높은 호스팅 서비스는 높이 살만하지만, 응답속도가 매우 느리다는 점, 호스팅 서버의 파일 시스템이 한글을 지원하지 못하는 점, 그리고 파일 수가 많은 경우 SmartSync가 지나치게 버벅된다는 점은 시급히 해결해야 할 과제로 보입니다. 서버 세팅을 일일이 사람이하는 한국의 실정과는 매우 상반된 모습이군요. 앞으로 지향해야할 차세대 웹 호스팅 서비스인듯한 인상을 받았습니다.

Comments

jaxer.png

Aptana 개발팀은 신개념 서버인 Jaxer가 리눅스를 드디어 공식으로 지원하기 시작한다고 알려왔다. 지금부터 리눅스용 스탠드얼론 Jaxer 페키지를 다운로드 할 수 있다. 현재 API 문서화와 활용서인 Book of Jaxer작성에 총력을 기울이고 있으며, 사용자의 피드백 공간을 활짝 열어놓고 문제가 발생하면 언제든지 질타해 줄 것을 요구하고 있다. 발견된 문제들은 가능한 빨리 해결하고 응답하겠다고 말했다. 참으로 멋진 친구들이다. Jaxer로 구축된 서비스가 등장할 날도 멀지 않았구나! 성능만 입증된다면 즉시 프로젝트에 적용해 보고싶다.

Comments

Jaxer 서버를 가지고 노느라 정신없습니다. 스크린케스트도 따라해 보고 셈플코드도 열어보고 하면서, 과연 어떠한 방식으로 서버-사이드 자바스크립트 함수가 클라이언트-사이드의 자바스크립트 함수를 호출할 수 있는지를 이해하게 되었습니다. 아래의 두 코드를 잘 비교해 보세요. 흥미롭습니다.

서버단 코드

<html>
  <head>
    <title>Index</title>
    <link type="text/css" rel="stylesheet" href="css/index.css" />

    <!-- 서버와 클라이언트 모두 작동하는 자바스크립트 코드 -->
    <script type="text/javascript" runat="both">
      function $(id) {
        return document.getElementById(id);
      }
    </script>
  </head>
  <body onserverload="initContents()" onload="getContents()">

    <!-- 컨텐츠가 삽입될 영역 -->
    <div id="contents"></div>

    <!-- 서버에서만 작동하는 자바스크립트 코드 -->
    <script type="text/javascript" runat="server">
      function initContents() {
        $('contents').innerHTML = "내용물"; 
      }
    </script>

    <!-- 클라이언트에서만 작동하는 자바스크립트 코드 -->
    <script type="text/javascript">
      function getContents() {
        alert($('contents').innerHTML);
      }
    </script>

  </body>
</html>

파싱된 클라이언트단 코드

<html>
  <head>
    <title>Index</title>
    <link type="text/css" rel="stylesheet" href="css/index.css" />

    <!-- 서버와 클라이언트 모두 작동하는 자바스크립트 코드 -->
    <script type="text/javascript">
      function $(id) {
        return document.getElementById(id);
      }
    </script>
  </head>
  <body onload="getContents()">

    <!-- 컨텐츠가 삽입될 영역 -->
    <div id="contents">내용물</div>

    <!-- 서버에서만 작동하는 자바스크립트 코드 -->

    <!-- 클라이언트에서만 작동하는 자바스크립트 코드 -->
    <script type="text/javascript">
      function getContents() {
        alert($('contents').innerHTML);
      }
    </script>

  </body>
</html>

함수명 '$'는 서버와 클라이언트가 공유하여 사용하고 있고 "runat" 속성을 가진 script 태그는 클라이언트에 넘어와서 자취를 감춥니다. body태그에 삽입된 "onserverload" 속성또한 마찬가지이죠. 아~ 행복해 지려고 해요.

Comments