Korea Evangelist

Developer & Platform Evangelism, Microsoft Korea

April, 2010

  • Korea Evangelist

    [아키텍처 저널 번역] 19권 엔터프라이즈 소셜 컴퓨팅 #2/2

    • 0 Comments

    image엔터프라이즈 소셜 컴퓨팅에 관한 아키텍처 저널 19권의 두번째 번역물 리뷰를 마치고 여러분의 피드백을 기대하며 올린다.

    이 글은 크게 전반부와 후반부로 나누어 올렸으며 전반부는 아래에서 찾을 수 있다.

    엔터프라이즈 소셜 컴퓨팅 #1/2

    전반부와 후반부를 합치고 영어 원문과 근접한 형태의 문단 배치를 갖는 PDF 버전은 작업이 끝나는 대로 다운로드 받을 수 있도록 공개할 예정이다.

    두번째 번역물은 솔루션 프레임웍부터 시작된다.
    많은 피드백을 기원하며

    --------------------------------------------------------------------

    그림 2. 소셜 컴퓨팅 솔루션 프레임웍
    aa699425_art4fig2(en-us,MSDN_10)

    솔루션 프레임워크

    Microsoft Office SharePoint Server(MOSS) 2007에서는 위에서 간략히 설명한 소셜 컴퓨팅 비즈니스 요구를 충족할 수 있는 플랫폼 및 솔루션 프레임워크를 제공한다. 소비자 중심적인 솔루션 프레임워크에는 방화벽 외부에 있는 애플리케이션, 서비스 및 사용자도 물론 포함되지만 여기에서는 기업의 사무실 내에서 지원할 프레임워크에 대해서만 다루도록 한다. 다음 그림에서 간단히 살펴볼 수 있다(그림 2).

    LOB(업무용) 시스템
    기업 LOB(업무용) 시스템의 데이터를 MOSS 2007과 같은 엔터프라이즈 플랫폼에 제공해야 할 경우가 있는데, 이러한 데이터로는 고객 관리 정보(CRM), 재무 및 회계 데이터, 영업 정보 등을 들수 있다. SharePoint 플랫폼에 설계되어 있는 주요 비즈니스 프로세스 및 워크플로에서는 성공적인 수행을 위해 이러한 LOB 데이터에 의존한다.

    엔터프라이즈 생산성 서비스
    이러한 서비스는 약한 소셜 소프트웨어 및 강력한 소셜 소프트웨어 모두에 공통적으로 적용될 수 있는 많은 기능을 포함하고 있으며, 조직에서 소프트웨어에 대한 장단기 투자를 구체화할 수 있는 강력한 엔터프라이즈 플랫폼을 선택했을 경우에 핵심적인 장점으로 부각된다. MOSS 2007 서비스에는 다음과 같은 기능이 포함되어 있다.

    • EMM(엔터프라이즈 메타데이터 관리): 플랫폼의 다양한 기능에서 활용할 수 있는 회사의 메타데이터를 중앙에서 관리 및 유지
    • ECM(엔터프라이즈 컨텐츠 관리): 컨텐츠 및 자산 관리, EMM과의 통합으로 컨텐츠 설명 및 분류, 규정 준수 및 보존 정책 아키텍처, 컨텐츠 자산 및 메타데이터를 Microsoft Office 2007 제품군과 같은 생산성 애플리케이션에 통합
    • WCM(웹 컨텐츠 관리): 웹 기반 컨텐츠 관리, 재사용 가능하고 현지화된 컨텐츠 관리, 컨텐츠 준비 및 복제, 웹 기반 컨텐츠로 문서 변환, 주요 UI 및 브랜딩 자산 작성 및 유지 관리
    • BPM(비즈니스 프로세스 관리): SharePoint Designer 2007 워크플로 및 사용자가 개발한 WF(Windows Workflow Foundation) 솔루션을 통해 워크플로를 자동화하여 비즈니스 프로세스를 관리
    • BI(비즈니스 인텔리전스): Excel 서비스, Excel 웹 액세스, KPI(핵심 성과 지표) 등
    • LOB 통합: Excel 서비스에서 제공하는 비즈니스 인텔리전스 데이터를 표시하는 BDC(비즈니스 데이터 카탈로그)를 통해 LOB 시스템을 통합
    • 엔터프라이즈 검색: 플랫폼 외부의 파일 공유 및 데이터베이스에 저장된 컨텐츠, LOB 데이터, 프로필 및 검색 컨텐츠에 대한 검색 기능
    • 사용자 프로필: 프로필 데이터, 관계도 및 관계, 프로필과 연결된 개인 관리 자산, 통합 통신(UC), 현재 상태(Presence) 및 Active Directory 통합
    • 포털 프레임워크: 위의 기능에 대한 사용자 인터페이스를 오케스트레이션하고 제공하도록 설계된 핵심 서비스로, 전자 메일 알림, RSS 피드, Outlook 2007 및 Excel 2007과 같은 Microsoft Office 2007 제품에 대한 연결 등의 기능을 제공하고, 다양한 인증, 권한 부여 및 사용 권한 모델을 제공

    그림 3. 공동 작업 레코드 관리: 홈 페이지
    aa699425_art4fig3(en-us,MSDN_10)

    엔터프라이즈 소셜 컴퓨팅 기능
    MOSS 2007에서는 핵심 생산성 서비스 기반으로 구축되는, 즉시 사용 가능한 여러 소셜 컴퓨팅 기능을 제공하여 기업으로 하여금 다음과 같은 사항을 계획할 때 비교적 소규모 투자로 이러한 기능을 사용할 수 있도록 한다.

    • 블로그: 사용자는 즉시 사용 가능한 (out-of-the-box) 기능을 통해 블로그를 만들고, Microsoft Word 2007 및 Windows Live Writer와 같은 웹 인터페이스와 도구를 통해 글을 게시하고, 범주 및 메타데이터를 관리할 수 있다. 또한 게시물에 의견을 추가할 수도 있다. SharePoint의 블로그 기능 개선 사항으로는 Community Kit for SharePoint의 Enhanced Blog Edition을 들 수 있다.
    • 위키(Wikis): 사용자가 위키 페이지를 빠르게 작성하고 스텁 (stub) 페이지를 만들어 향후 추가 컨텐츠가 필요한 위치를 표시하고, 시간이 지남에 따라 컨텐츠를 편집 및 버전 관리하여 구조화되지 않은 풍부한 지식 저장소를 만들 수 있도록 한다. SharePoint의 위키 기능 개선 사항으로는 Community Kit for SharePoint의 Enhanced Wiki Edition이 있다.
    • 포럼 및 토론 게시판: 사용자가 온라인으로 토론 주제를 게시하고 답변할 수 있는 기능이다. Microsoft Exchange와 통합됨으로써 사용자가 전자 메일 기반의 토론 그룹을 계속해서 사용할 수 있고, 엔터프라이즈 검색 결과에 토론 내용을 인덱싱하고 표시할 수 있도록 토론 스레드의 사본을 온라인으로 저장할 수도 있다.
    • 소셜 코어(Social Core): 내 사이트 (MySite) 기능을 사용하면 사용자가 프로필 뿐만 아니라, 기업내 동료들의 사교적 관계 및 조직 측면에서의 계층도를 만들고 유지 관리할 수 있다. 또한 MOSS에서는 현재 상태(Presence) 외에도 소셜 네트워크에 속한 동료의 활동에 대한 알림 표시 기능을 제공한다.
    • 분석(Analytics): MOSS에서는 즉시 사용 가능한 사용 현황 분석과 이벤트 로깅 기능을 제공한다.

    엔터프라이즈 소셜 컴퓨팅 클라이언트
    MOSS는 주로 웹 브라우저 클라이언트를 통해 접근할 수 있지만 Microsoft Office 2007 생산성 제품군과 다양하게 통합되어 있어 모바일 인터페이스를 통해서도 접근할 수 있다. MOSS에는 웹 서비스도 포함되어 있어 다른 애플리케이션에서 이 웹 서비스를 호출하여 사용자에게 유용한 데이터를 통합, 처리 및 표시할 수 있다. 가장 좋은 예로는 MOSS 데이터를 사용자 지정한 형태로 보여주는 Vista 가젯을 들 수 있다.

    그림 4. 공동 작업 레코드 관리: Outlook 2007에 문서 라이브러리 연결
    aa699425_art4fig4(en-us,MSDN_10)

    기업내 소셜 컴퓨팅의 사례

    다음 사례는 기업내의 플랫폼 기능과 소셜 컴퓨팅 기능을 모두 보여준다. 처음 두 사례는 “약한” 소셜 소프트웨어 환경에 보다 적합한 솔루션을 보여주고 나머지 사례는 “강력한” 소셜 소프트웨어 환경에 적합한 솔루션을 보여 준다.

    그림 5. 공동 작업 레코드 관리: 오프라인으로 문서 편집
    aa699425_art4fig5(en-us,MSDN_10) 

    협업 레코드 관리
    이 솔루션은 각 분야 전문가들(subject matter experts)이 지리적으로 분산되어 있는 조직에서 MOSS의 협업 기능을 사용하여 여러 개의 브리핑 문서를 서로 보다 쉽게 공유하는 방법을 보여준다(그림 3, 4, 5). 이 사례에서는 소비자 사이트에서 제공되는 기능과 같은 것은 보여 주지 않지만, 사용자들이 이미 서로 잘 알고 긴밀하게 함께 작업을 수행하는 “약한” 소셜 시나리오 측면에서 MOSS와 같은 엔터프라이즈 플랫폼이 제공할 수 있는 강력한 기능을 보여 준다. 또한 이 사례는 작업자들이 특별한 비즈니스 요구를 충족하기 위해 신속하게 작성할 수 있는 “임시 애플리케이션(provisional application)”의 좋은 예이기도 하다. 특히 이 솔루션은 다음과 같은 기능을 수행한다.

    • 오프라인으로 탐색 및 편집할 수 있도록 SharePoint 문서 라이브러리를 Microsoft Outlook 2007에 연결한다.
    • 문서 라이브러리를 사용자 지정 뷰로 제공하므로 미리 정의된 기준에 따라 그룹화된 정보 또는 뷰를 빠르게 검색할 수 있다.
    • Groove 2007 작업 영역을 SharePoint 문서 라이브러리에 연결하여 사용자가 미리 선택한 인터페이스에서 관련 정보를 사용할 수 있다.
    • RSS 피드를 통해 주요 문서 메타데이터 및 설명을 사용할 수 있다.
    • SharePoint Designer 2007 워크플로를 활용하여 사용자가 프로젝트 Brief 서식 파일을 완전히 채우지 않아도 Brief에 대해 “빠른 제출 (Quick Submit)”을 수행할 수 있다. 사용자는 필요에 따라 모바일 인터페이스에서도 “빠른 제출” 기능을 사용할 수 있다.

    그림 6. 수직 산업 및 역할별로 필터링한 콜 센터 질문
    aa699425_art4fig6(en-us,MSDN_10)

    그림 7. 콜 센터 등급 드릴다운
    aa699425_art4fig7(en-us,MSDN_10)

    콜 센터 질문 관리
    이 솔루션은 내부의 영업 전문가로 구성된 소규모 팀에 제공되었는데, 이 팀의 영업 활동에는 회사의 최고위 임원(C-level executive)들이 포함되어 있다(그림 6, 7). 이 팀은 영업 관련 전화상담에 사용하는 질문 스크립트들을 Microsoft Word 및 Excel로 관리하고 있는데, MOSS 2007을 사용하여 팀 구성원이 질문의 효용성에 점수을 매기고 개인적인 의견을 제공할 수 있는 방법을 찾아 왔다. MOSS가 제공하는 나열 메커니즘은 가장 효용성이 높은 질문으로 점수가 매겨진 질문 항목이 질문 목록의 “맨 위에 위치”되도록 하여 질문 항목들이 보다 효과적으로 사용될 수 있도록 한다.

    그림 8. 소셜 검색: 결과 인터페이스
    aa699425_art4fig8(en-us,MSDN_10)

    그림 9. 소셜 검색: 검색 결과에 의견 추가
    aa699425_art4fig9(en-us,MSDN_10)

    소셜 검색: Silverlight 검색 애플리케이션
    이 소셜 검색 애플리케이션은 MOSS의 엔터프라이즈 검색 기능을 개선할 수 있는 방법을 보여 주기 위한 프로토타입으로 설계되었다(그림 8, 9). MOSS 엔터프라이즈 검색 카탈로그는 다른 검색 소스 및 소셜 검색 기능으로 보완되었다.

    • 애플리케이션 UI는 Silverlight의 풍부한 시각화 및 UI 기능을 사용할 수 있도록 Silverlight로 작성되었으며, Silverlight 플러그 인을 사용하지 않는 사용자를 위해 표준 ASP.NET 버전을 개발했다.
    • 이 솔루션에는 여러 개의 검색 카탈로그를 하나의 마스터 검색 인덱스로 통합한 웹 서비스를 사용하는데, 이 웹 서비스는 기본 제공이 아닌 별도로 개발되었다.
    • 이 솔루션에는 소비자 소셜 검색과 책갈피 기능 영역에 공통으로 사용되는 소셜 기능이 도입되었다. 사용자는 검색 결과에 등급을 매기고, 검색 결과에 의견을 추가하며, 즐겨 찾는 검색 및 링크를 저장하고, 자신의 링크를 사용자가 생성한 컨텐츠의 카탈로그로 전송할 수 있다.

    그림 10. PKS: 홈 페이지 기능
    aa699425_art4fig10(en-us,MSDN_10)

    그림 11. PKS 포드캐스트 다운로드 및 세부 정보 페이지
    aa699425_art4fig11(en-us,MSDN_10)

    엔터프라이즈 소셜 미디어: Podcasting Kit for SharePoint
    PKS(Podcasting Kit for SharePoint)는 SharePoint 플랫폼에서 사용할 수 있는 “강력한” 소셜 컴퓨팅 환경의 가장 좋은 예 중 하나다(그림 10, 11). 솔루션 액셀러레이터로 설계된 PKS를 사용하면 기업에서 포드캐스트 및 일반적인 소셜 컴퓨팅 기능(등급 매기기, 의견 추가, 즐겨찾기, 다운로드 통계, 사용자 프로필, 맞춤 탐색, 모바일 인터페이스, 분류/태깅)을 사용하여 조직 내에서 지식을 관리 및 통합할 수 있다. PKS는 Public License에 따라 소스 코드와 함께 배포되며 MOSS 2007을 이미 사용 중인 경우에는 무료로 사용할 수 있다.

    참조

    1 엔터프라이즈 요구에 대한 이 표현은 2007 Strategic Architect Forum에서 발표된 Scott Jamison의 프레젠테이션에서 차용했다. 이러한 요구는 지금도 여전히 유효하며 현재의 세계 경제를 고려할 때 보다 빠르게 나타날 가능성이 있다.
    2 Salkowitz, 2008년, pp. 85-88
    3 2008년 6월에 열린 Enterprise 2.0 Conference에서 발표자로 등장한 CIA의 Don Burke 및 Sean Dennehy는 CIA에서 Intellipedia를 배포 및 채택한 내용에 대해 발표했고, Shawn Dahlen 및 Christopher Keohane은 Lockheed Martin의 소셜 소프트웨어 플랫폼을 데모로 보여 주었다.
    4 군대의 호스트 컴퓨터에서 거의 30,000개에 달하는 맬웨어를 발견한 Jeffrey Sorenson 중장의 예를 참조하라.
    5 Facebook에서 엔터프라이즈에 대한 Mark Zuckerberg의 의견을 참조하라. Mark Zuckerberg는 Facebook은 엔터프라이즈 애플리케이션이 아니지만 누군가 엔터프라이즈 소셜 네트워크 애플리케이션을 개발하면 큰 돈을 벌 수 있을 거라고 말한다.
    6 Nikos Drakos, 2008년

    참고 문헌

    Nikos Drakos, A. B. (2008). Tutorial: Social Context, Not Technology, Definies
    Social Software. Gartner.
    Salkowitz, R. (2008). Generation Blend. Hoboken, New Jersey: John Wiley & Sons, Inc.
    Tapscott, D. (2008). Grown Up Digital. New York, New York: McGraw Hill.

    작성자 정보

    Kendrick Efta는 Allyis의 공동 창업자이자 수석 컨설턴트이다. 10년 이상 엔터프라이즈 솔루션을 개념화, 설계 및 구축한 경력이 있는 Ken은 Allyis의 혁신 및 사고의 리더십을 이끌고 있으며 고객에게 전략적 통찰 및 방향을 제공하는 업무를 담당하고 있다. Allyis를 공동 창업하기 전에는 시애틀 지역의 기업 다수를 대상으로 기술 컨설턴트로 활약했다. Ken은 Allyis의 공동 창업자인 Richard Law와 Ethan Yarbrough와 함께 Western Washington University로부터 첫 번째 “올해의 젊은 동문 상”(Young Alumnus of the Year)을 받았다.

    이 주제에 대한 내용 더 보기

    • Microsoft 제품을 통해 소셜 컴퓨팅을 비즈니스에 맞게 최대로 활용하는 방법(영문): http://www.microsoft.com/downloads/details.aspx?FamilyId=C5844123-7F31-49D4-811C-7B90E6217B1D&displaylang=en
    • Microsoft 플랫폼에서의 소셜 컴퓨팅(영문): http://www.microsoft.com/sharepoint/capabilities/collaboration/social.mspx

  • Korea Evangelist

    내 오픈소스에 날개를!-(2)WPI를 위한 패키지 제작

    • 0 Comments

    안녕하세요. 김대우 입니다. 이번에 소개해 드릴 내용은 지난 글에 이어 WPI 패키지를 실제 구성하는 과정을 진행해 보도록 하겠습니다.
    지난 포스트 : 오픈소스에 날개를! - (1)웹 플랫폼 설치 관리자(WPI)를 위한 나의 어플리케이션 패키지

    웹 앱 갤러리에 어플리케이션을 올리기 위해서는 반드시 조건에 맞도록 구성된 “패키지” 형태로 제공이 되어야 합니다. 그 전에 이미 실제로 서비스되는 패키지를 가지고 보시면 감이 오실 거에요. 저는 WPI에 올려져 있는 XpressEngine 패키지 파일을 예로 들어 설명을 드리도록 하겠습니다.

    샘플로 사용할 XpressEngine WPI Zip 패키지를 다운로드 받는 절차
    - “웹 플랫폼 설치 관리자”를 실행합니다. WPI 설치는 앞의 포스트를 참고 하세요.

    image
    - 웹 응용프로그램에서 XpressEngine을 선택 후 “설치”를 진행합니다.


    image
    - 맨 위의 다운로드 원본 위치의 패키지 파일을 클릭해 다운로드 합니다.(파일 이름이나 경로는 지속적인 업데이트에 의해 위 화면과 다를 수 있습니다.) 다운로드 하셨으면 해당 Zip 파일을 풀어서 확인해 보세요.

    WPI 패키지 파일 및 폴더 구성
    자~ 이렇게 해서 XpressEngine이 이용하는 Zip 패키지 Zip 파일을 풀면 이런 폴더 및 파일 구조를 확인 가능하실 거에요.
    (폴더)XE
    ---(파일)install.sql
    ---(파일)license.text
    ---(파일)manifest.xml
    ---(파일)parameters.xml

    이 파일들 중에서 WPI 패키지에 이용되는 주요한 설정 파일은 세 개 - install.sql, manifest.xml, parameters.xml 파일입니다. 이어서 폴더는 반드시 이름과 함께 하위 폴더에 넣어 두시면 됩니다. 그럼, 필수 파일들을 열고 봐 보도록 하겠습니다.

    참고로, 전체 패키지 파일 구성은 아래처럼 이루어져야 합니다.

    MyApp.zip
    \
    +--MyApp root folder
    +--Manifest.xml (필수)
    +--Parameters.xml (필수)
    +--Install.sql (DB를 이용하는 app일 경우 필수)
        \
         +--MyApp-admin sub folder
         |--MyApp-content sub folder
         |--MyApp-includes sub folder
         |--readme.txt
         |--license.text
         |--web.config (PHP app일 경우에도 IIS에서 기본 이용되기 때문에 필수 입니다.
         |--various other files




    manifest.xml 파일 구성

    <MSDeploy.iisApp>
           <iisApp path="xe"/>   기본 어플리케이션 이름입니다.
      <dbmysql
        path="install.sql"        mysql의 sql구문 정보가 처리된 sql 구문입니다. DB생성 및 DB에 대한 사용자 생성 구문이 위치합니다.
        commandDelimiter="//"
        removeCommandDelimiter="true"
        />
      
           <setAcl path="xe" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" />    폴더의 Permission을 구성합니다
    </MSDeploy.iisApp>


    이렇게 보시는 것처럼 구성 자체는 어렵지 않습니다. 라인별로 처리된 설명을 참조 하세요. 하나만 말씀 드릴 부분으로 “setACL”으로 권한을 부여하는 항목이 존재 하는데요. XE의 경우는 XE 설치 문서에서처럼 chmod 777 처리 = 즉, 전체 폴더에 대해서 익명 처리를 진행하게 됩니다. 따라서 XE의 경우는 이렇게 전체 퍼미션이 부여되나, 특정 폴더만 modify이고 다른 폴더는 read만 처리하고 싶을 경우에는 특정 폴더에만 대해서 처리 하는 것도 가능합니다. 참고 : Mambo의 manifest.xml 파일 예시 구성 정보  또는 Joomla의 manifest.xml 파일 예시 구성 정보

    참고자료 :
    Set ACLs Through the Manifest.xml File
    Database Notes for packaging applications for use with the Windows Web App Gallery


    install.sql 파일 구성

    USE PlaceholderForDbName;
     
    DROP PROCEDURE IF EXISTS add_user ;
     
    CREATE PROCEDURE add_user()
    BEGIN
    DECLARE EXIT HANDLER FOR 1044 BEGIN END;
    GRANT ALL PRIVILEGES ON PlaceholderForDbName.* to 'PlaceholderForDbUser'@'localhost' IDENTIFIED BY 'PlaceholderForDbPassword';
    FLUSH PRIVILEGES;
    END
    ;
     
    CALL add_user() ;
     
    DROP PROCEDURE IF EXISTS add_user ;

    install.sql 파일은 이러한 구조 입니다. 단순히, 해당 DB에 대해 사용자를 생성하고 권한을 부여 한다고 보시면 됩니다. 즉, WPI 설치 과정에 DB가 없으면 생성 해야 할 필요가 있는데요.(DB생성 및 계정 생성 과정도 일반 사용자를 위해 자동화 하기 때문입니다.)
    이 과정이 필요할 경우 자동화를 위한 스크립트로 보시면 됩니다.(기존 DB를 이용할 경우에는 필요 없겠지요.) 

    혹은 꼭 필요한 다른 WPI상에서 수행 되어야 할 DB 절차가 있다면 여기에 기록 하셔도 되겠지요.

    단순해 보이는 구문이지만 하나, 특이한 부분이 있는데요 바로, “PlaceholderForDbName”과 같은 녀석입니다. 보시면 “PlaceholderForXXX” 형태로 되어 있는데 눈치가 빠르신 분은 느끼셨겠지만, WPI 설치 도중에 받는 파라미터 값이 여기 파일의 “PlaceholderForXXX” 값과 치환된다고 보시면 됩니다. – 이게 사실 WPI 패키지 제작 과정 최대 비밀이 아닐까 합니다. ^_^;;;

    image
    이렇게 WPI 설치 화면에서 받는 파라미터가 parameter.xml 파일에 지정된 대로, 치환 됩니다. 그렇다면 parameter.xml 파일의 구조도 감이 잡히실 거에요. 전달받을 파라미터를 정의하고, 패키지의 특정 위치에 존재하는 파일의 문자열을 받은 파라미터로 치환하는 역할을 수행한다고 보시면 됩니다. 그럼 파라미터 파일도 까 보도록 하시지요.


    parameter.xml 파일 구성

    <?xml version="1.0" encoding="utf-8"?>
    <parameters>
      <parameter
        name="AppPath"     기본어플리케이션 경로를 의미합니다.
        defaultValue="Default Web Site/xe"     기본적으로 IIS의 가상디렉토리 이름을 XE로 생성 시킵니다.
        tags="iisapp"
        >
        <parameterEntry
          type="ProviderPath"
          scope="iisapp"
          match="xe"
          />
      </parameter>
      <parameter      권한 부여 처리를 진행합니다.(숨은처리)
        name="SetAcl1"
        defaultValue="{AppPath}"
        tags="Hidden"
        >
        <parameterEntry
          type="ProviderPath"
          scope="setAcl"
          match="xe"
          />
      </parameter>
     
     
      <!-- Database Parameters
      The tags provided here tells the UI being used what type of parameter
      this is.  The UI can then construct an appropriate dialog for the
      database parameters, or fill them in if the user doesn't need to
      provide them
      -->
     
      <!-- This parameter prompts the user for the database server name.  
      Note that this parameter has only one parameterEntry element.
      This parameter is used with the configuration file and the
      connection string.  It is not used within the SQL script itself
      like the other paramters are.
      -->
      <parameter
        name="dbServer"       접속할 DB서버의 기본 값이 localhost이며 mysql 입니다. 이 서버 경로가 xe\config\install.config.php 파일의 
        defaultValue="localhost"           PlaceHolderForDbServer 값을 치환합니다. – 직접 파일을 열고 확인해 보세요.
        tags="MySQL, dbServer"
        >
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"         
          match="PlaceHolderForDbServer"
          />
      </parameter>
     
     
      <!-- Prompts for the admin creds and uses it for the administrator
      connection string. This is used to create a login and assign
      permissions. The MySQL tag indicates it is a parameter required for
      MySQL.
      The DbAdminUsername tag indicates it should be used when the user
      is creating a new database. If they're not, it can be filled in
      with the DbUsername value.  The UI should be able to figure out
      whether or not the user needs to be prompted for this.
      -->
      <parameter
        name="dbAdminUsername"
        defaultValue="root"                     요건 좀 짧은데요. WPI에 미리 정의된 파라미터이기 때문입니다. admin user를 필요로 하는 경우에 처리됩니다.
        tags="MySQL, DbAdminUsername"
        >
      </parameter>
     
      <!-- Prompts for the admin password and uses it for the administrator
      connection string.
      -->
      <parameter
        name="dbAdminPassword"
        tags="Password, MySQL, DbAdminPassword"
        >
      </parameter>
     
      <!-- This parameter prompts the user for the database name.  
      -->
      <parameter
        name="dbName"          DB이름을 처리합니다. 기본값 XE이고, 문자열을 Regular Expresseion으로 일반 DB명이 가능한 문자만 처리 받습니다.
        defaultValue="xe"
        tags="MySQL, dbName"
        >
        <parameterValidation
          type="RegularExpression"
          validationString="^\w{1,16}$"
          />
        <parameterEntry
          type="TextFile"
          scope="install.sql"
          match="PlaceHolderForDbName"
          />
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"                   마찬가지로, install.sql 파일과 config 파일의 문자열과 치환됩니다.
          match="PlaceHolderForDbName"
          />
      </parameter>
     
     
      <parameter
        name="DbUser"
        defaultValue="xeuser"
        tags="MySQL,DbUsername"
        >
        <parameterValidation
          type="RegularExpression"
          validationString="^\w{1,16}$"
          />
        <parameterEntry
          type="TextFile"
          scope="install.sql"
          match="PlaceholderForDbUser"
          />
     
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"
          match="PlaceholderForDbUser"
          />
      </parameter>
     
      <parameter
        name="DbPassword"
        tags="Password,New,MySQL,DbUserPassword"
        >
        <parameterEntry
          type="TextFile"
          scope="install.sql"
          match="PlaceholderForDbPassword"
          />
     
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"
          match="PlaceholderForDbPassword"
          />
      </parameter>
     
      <!-- This is the hidden admin connection string used to run the
      database scripts.  Note that this connection string is just used
      here, and will probably be different from the connection string that
      is used by the application itself.
      -->
      <parameter
        name="Connection String"         여기가 약간 특이하실텐데요. install.sql 파일을 실행하기 위해 숨은 처리가 진행되는 영역입니다.
        defaultValue="Server={dbServer};Database={dbName};uid={dbAdminUsername};Pwd={dbAdminPassword};"
        tags="MySQL,MySQLConnectionString,Validate,Hidden"
        >                                   install.sql 파일을 실행하기 위해 필요한 처리이니 참고 하시길 바랍니다.
        <parameterEntry
          type="ProviderPath"
          scope="dbmysql"
          match="install.sql"
          />
      </parameter>
     
      <!-- table prefix -->
      <parameter                  위의 파라미터들은 WPI가 인식하는 파라미터들이기에 모두 자동 다국어처리 및 제목, 설명이 포함되나 아래 값들은
        name="Database Table Prefix"       XE가 독자적으로 사용하는 값들이기에 모두 제목과 설명, 다국어 처리를 직접 지정해야 합니다.
        description="Set the table prefix."         XE설치시 한DB에서 테이블 프리픽스만 바꿔서 설치를 가능하게 하는 루틴이 있으며 이 처리 입니다.
        defaultValue="xe"
        tags="MySQL,TableName,Prefix"
        >
     
        <description culture="en">Set the table prefix for XE</description>
        <description culture="ko">XE 테이블 머릿말을 설정합니다.</description>
        <description culture="jp">XEのテーブルの接頭辞を決めます。</description>
        <description culture="cn">定数据库表的前綴</description>
     
        <parameterValidation
          type="RegularExpression"
          validationString="^[a-z]{1,10}$"
          />
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"
          match="PlaceholderForDbTablePreFix"
          />
      </parameter>
     
      <!-- xe admin id -->
      <parameter
        name="Set XE Admin ID"
        description="Set the xe admin website manager id"
        defaultValue="admin"
        >
        <description culture="en">Set the ID for admin</description>
        <description culture="ko">XE 관리자의 아이디를 설정합니다.</description>
        <description culture="jp">管理者のIDを決めます。</description>
        <description culture="cn">丁管理者的帐号</description>
     
        <parameterValidation
          type="RegularExpression"
          validationString="^[a-z0-9_-]{2,40}$"
          />
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"
          match="PlaceholderForXEAdminId"
          />
      </parameter>
     
      <!-- xe admin nickname -->
      <parameter
        name="Set XE Admin Name"
        description="Set the xe admin website manager name"
        defaultValue="admin"
        >
     
        <description culture="ko">XE 관리자의 이름을 설정합니다.</description>
        <description culture="en">Set the name for admin</description>
        <description culture="jp">管理者のお名前を決めます。</description>
        <description culture="cn">丁管理者的姓名</description>
     
        <parameterValidation
          type="RegularExpression"
          validationString="^\w{2,40}$"
          />
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"
          match="PlaceholderForXEAdminUserName"
          />
      </parameter>
     
     
      <!-- xe admin nickname -->
      <parameter
        name="Set XE Admin Nickname"
        description="Set the xe admin website manager nickname"
        defaultValue="admin"
        >
     
        <description culture="ko">XE 관리자의 닉네임을 설정합니다.</description>
        <description culture="en">Set the nickname for admin</description>
        <description culture="jp">管理者のニックネームを決めます。</description>
        <description culture="cn">丁管理者的网名</description>
     
        <parameterValidation
          type="RegularExpression"
          validationString="^\w{2,40}$"
          />
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"
          match="PlaceholderForXEAdminNickName"
          />
      </parameter>
     
      <!-- xe admin password -->
      <parameter
        name="Set XE Admin Password"
        description="Set the xe admin website manager password"
        defaultValue=""
        tags="Password, New"
        >
     
        <description culture="ko">XE 관리자의 암호를 설정합니다.</description>
        <description culture="en">Set the password for admin</description>
        <description culture="jp">管理者のパスワードを入力します。</description>
        <description culture="cn">丁管理者的密码</description>
     
        <!-- description culture="ko">XE 관리자의 암호를 다시 입력합니다.</description>
        <description culture="en">Password for admin, once again</description>
        <description culture="jp">パスワードをまた一度入力します。</description>
        <description culture="cn">再次输入密码</description -->
     
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"
          match="PlaceholderForXEAdminPassword"
          />
      </parameter>
     
      <!-- xe admin emailaddress -->
      <parameter
        name="Set XE Admin Email address"
        description="Set the xe admin website manager email"
        defaultValue=""
        >
     
        <description culture="ko">XE 관리자의 이메일 주소를 설정합니다.</description>
        <description culture="en">Set the email for admin</description>
        <description culture="jp">管理者のメールを入力します。</description>
        <description culture="cn">丁管理者的邮箱</description>
     
        <!-- description culture="ko">XE 관리자의 이메일 주소를 다시 입력합니다.</description>
        <description culture="en">Email for admin, once again</description>
        <description culture="jp">メールをまた一度入力します。</description>
        <description culture="cn">再次输入邮箱</description -->
        <parameterValidation type="RegularExpression" validationString="^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$" />
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"
          match="PlaceholderForXEAdminEmailaddress"
          />
      </parameter>
     
      <!-- xe use rewrite Y/N -->
      <parameter
        name="Use URL Rewrite"
        description="Using URL rewrite?"
        defaultValue="N"
        >
     
        <description culture="ko">URL Rewrite를 설정합니다. (Windows XP의 경우 N을 선택하세요.)</description>
        <description culture="en">Do you want to use URL Rewrite? (Choose N if you’re running Windows XP.)</description>
        <description culture="jp">URL Rewriteを使用します。 (Windows XPの場合、Nを選んで下さい。)</description>
        <description culture="cn">用 URL Rewrite (如果您使用的Windows XP, 选择N。)</description>
     
        <parameterValidation
          type="Enumeration"
          validationString="N,Y" 
          />
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"
          match="PlaceholderForXEUseRewrite"
          />
      </parameter>
     
      <!-- xe time zone -->
      <parameter
        name="GMT Timezone"
        description="Set GMT timezone"
        defaultValue="+0900"
        >
     
        <description culture="ko">time zone을 설정합니다.</description>
        <description culture="en">Set the time zone</description>
        <description culture="jp">タイムゾーンを設定します。</description>
        <description culture="cn">定时区</description>
     
         <parameterValidation
          type="Enumeration"
          validationString="-1200,-1100,-1000,-0900,-0800,-0700,-0600,-0500,-0430,-0400,-0330,-0300,-0200,-0100,0000,+0100,+0200,+0300,+0330,+0400,+0430,+0500,+0530,+0545,+0600,+0630,+0700,+0800,+0900,+0930,+1000,+1100,+1200,+1300" 
          />
        <parameterEntry
          type="TextFile"
          scope="xe\\config\\install.config.php"
          match="PlaceholderForXETimeZone"
          />
      </parameter>
    </parameters>

    아마도 다른 필요 파일 중에 가장 긴 파일일 것 같습니다. 길이만 길다 뿐이지 사실 크게 복잡하거나 어렵지는 않습니다. 그럼 차근차근 살펴 보시지요. 이렇게 WPI에서 진행되는 XE화면과 매칭 시키며 진행하시면 어렵지 않게 파라미터 값들에 대해서도 감이 오실 거에요.

    패키지에 이용되는 파일들에 대한 상세한 레퍼런스 정보

    여기서 하나 주의사항을 말씀 드리자면…
    아파치의 mod_rewrite 기능처럼 Fancy URL을 수행하게 돕는 기능이 URL Rewrite 기능입니다. 보통 Blog 서비스에서 사용되지요. 이 URL Rewrite는 현재 Win7, Windows Server2008, Windows Vista에서만 이용 가능하니 주의 하시길 바랍니다. IIS7을 이용할 경우 얻을 수 있는 장점들이 IIS6에 비해 훨씬 더 많으니 가능하시면 꼭 Windows Server2008의 기본 웹서버인 IIS7을 이용하시길 바랍니다.


    패키지로 Zip 하는 방법
    주의 : Zip은 Winzip이나 알집으로 하지 마시고 반드시 “윈도우의 기본 Zip 압축기능”을 이용해야 합니다.
    XE의 경우라면 intall.sql, manifest.xml, parameter.xml 파일과 xe 폴더가 보이는 폴더에서 전체 파일과 폴더를 선택 후 마우스 우측 버튼을 클릭하고 “보내기” 선택 하신 후 “압축(ZIP) 폴더”를 선택해 압축 하시면 됩니다.


    만들어진 Zip 패키지를 테스트하는 방법

    테스트는 명령프롬프트에서 수행하는 방법과 UI를 이용하는 방법 두가지가 있습니다. 저는 UI를 이용하는 “Web Deployment Tool”을 기준으로 설명 드리도록 하겠습니다. Web Deployment Tool 다운로드 경로에서 우측 맨 아래쪽을 보시면 한글버전과 X86, X64용을 모두 보실 수 있습니다. (한글 Windows Server2008의 경우에 WPI를 통해 설치할 경우 문제가 있다는 피드백이 있습니다. 한글일 경우 직접 링크로 다운로드 후 설치 하세요.)

    설치하시고 관리도구-IIS(인터넷 정보 서비스) 관리자를 실행합니다. 기본 웹사이트를 이용하시거나 또는 아무 웹사이트나 생성 하시고 웹사이트를 선택 하신 후 우측 아래쪽의 “배포” 항목의 “응용프로그램 가져오기”를 선택합니다.
     
    image

    조금 전에 제작하신 패키지 Zip 파일을 선택 하시면 이런 화면이 뜨고 “다음”을 수행하면 파라미터를 받고 처리하게 됩니다.

    image 

    이렇게 수행하시면 파라미터들의 동작 여부를 테스트 할 수 있습니다.

     image
    파라미터를 모두 넣으면 설치가 진행되고, 설치가 완료되면 웹사이트 테스트를 통해 우리의 웹 어플리케이션이 바로 열리는 것을 확인 가능합니다. – 테스트 과정도 어렵지 않습니다. 그리고 느끼시는 것처럼 웹 배포 툴의 UI가 WPI와 비슷하지요? 넵! 둘다 같은 API를 이용하고 있기 때문입니다. ^_^

    Web Deployment Tool의 “명령프롬프트”를 이용해 테스트로 처리할 경우 아래의 방식으로 테스트가 가능하니 참고 하시길 바랍니다.

    "C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" ^
    erb:sync -source:Package="application.zip" ^
    est:auto ^
    etParam:dbAdminUsername="root" ^
    etParam:dbAdminPassword="<password>" ^
    etParam:dbUsername="appuser" ^
    etParam:dbUserPassword="<password>" ^
    etParam:dbServer="localhost" ^
    etParam:dbName="application"  ^
    etParam:AppPath="Default Web Site/application"

    명령프롬프트로 패키지를 테스트할 경우 참고 사항


    추가적으로 이건 옵션으로 파라미터 및 패키지 파일들에 대해서 테스트를 더 상세히 해 보실 수 있는데요. 이 과정을 아래 링크에서 확인 가능합니다.

    참고자료 : Sniffer.Installer.Reporter (SIR) for Application Gallery

    간단히, 명령프롬프트용 SIR command line tool을 받고 아래 명령을 수행하면 상세한 테스트가 진행 되며 패키지 검증을 진행해 주니 참고 하시길 바랍니다. – 상세한 파라미터 validation등에서 이용하면 유용합니다.(참고로, XP에서는 테스트 되지 않으며 Windows Server2008이나 Windows7에서만 정상 테스트 가능한 것으로 보고 되었습니다.)

    실행명령 예시
    C:\PFiles\SIR>SIRCommandLine.exe -s:C:\Temp\Test\SIR\XE_Test_Package\XE.1.4.0.5.WPI_2.zip -reportFileName:C:\Temp\Test\SIR\XE_Test_Package\report.xml > C:\Temp\Test\SIR\XE_Test_Package\output.txt

    실행하고 끝나면 “C:\Temp\Test\SIR\XE_Test_Package\output.txt” 파일을 열어 console 출력 메시지 정보를 보실 수 있으며 “C:\Temp\Test\SIR\XE_Test_Package\report.xml” 리포트 파일로 결과물을 확인 가능합니다.

    참고 사항 : 웹 앱 갤러리팀은 WPI 설치 과정에서 입력을 받으면 이후 웹 페이지에서 추가 설치 인터페이스 없이 설치가 완료 되는 것을 권장합니다.
    사용자 편의성을 위해 - 즉, 기존에 설치 루틴이 있다면, WPI에서 모든 입력을 받아 하나의 파일에 저장하고(XE의 경우 config.php 파일) 웹어플리케이션 실행을 위해 초기 파일이 최초 WPI 실행 후 수행되면 이때 config.php 파일등의 값을 조사해 WPI에서 받은 값이 있을 경우 바로 설치 루틴 값에 매핑시켜 설치 완료 후 실행된 화면을 제공해 주시는것이 최선의 방법입니다.

    경험적으로 볼때, WPI 외에서 추가로 값을 입력을 받는 것은 전혀 권장해 드리지 않습니다.(해당 웹 앱 갤러리 팀의 담당자가 웹 앱 갤러리에 등록을 반려 할 수도 있습니다.)


    파일 보안을 위해 Checksum 파일 처리
    이제 웹 앱 갤러리에 파일을 올릴 준비는 모두 마무리 되었습니다. 끝으로, 어플리케이션 패키지를 제출하기 전에 준비하셔야 하는 내용들이 있는데요. 그 중 첫번째가 파일 변조나 보안상의 문제를 막기 위해 SHA-1 해쉬 값으로 파일을 체크하는 값을 준비 해야 합니다.
    다운로드 : Microsoft® File Checksum Integrity Verifier.

    Checksum Integrity Verifier를 다운로드 하고 아래처럼 SHA-1 해쉬 값을 구합니다. 저는 c:\temp 폴더에서 테스트를 수행했습니다

    C:\Temp>fciv -sha1 XE.1.4.0.5.WPI_2.zip
    //
    // File Checksum Integrity Verifier version 2.05.
    //
    d68e260bb107f12bad89d80f87b5683d7ee1382a xe.1.4.0.5.wpi_2.zip

    이렇게 보시는 것처럼 SHA-1으로 구한 해쉬 값을 나중에 패키지를 제출(submit)할 때 이용해야 합니다.(당연하지만 위의 제 테스트 값을 쓰시면 안됩니다.^_^;;;)


    어플리케이션 패키지를 제출하는 방법
    http://www.microsoft.com/web/gallery/developer.aspx 경로의 내용을 참조 하셔서 3번 “Submit your app”을 수행합니다. Windows Live ID로 로그인을 수행하고 필요한 정보를 넣으시면 됩니다.

    간략히 넣으셔야 하는 정보들을 알려 드리자면
    - 응용프로그램 정보(이름, 버전, 오픈소스프로젝트 URL, 질문과 답변 서비스 제공 URL. 제출일, 어플리케이션 범주)
    -로고와 스크린샷(200*200크기의 로고와 스크린샷 5개 내외-가능한 잘 뽑은 스크린샷이 좋습니다.)
    - 각각 영문과 한글(또는 다국어 가능)로 제공(이름, 50자 내외의 짧은 설명, 200자 내외의 설명)
    - WPI 패키지 경로(Zip으로 위에서 묶은 파일을 직접 특정 경로에 올려 두셔야 하며 해쉬된 파일 Checksum 값만을 전달해 주셔야 합니다.)
    - 시작파일 경로(예를 들면, index.php)
    - SHA-1 해쉬 값(Checksum Integrity Verifier로 구한 값)
    - 제출자의 영문 성명 및 영문 주소 정보와 Windows Live ID 값이 필요합니다.
    참고로, 한번 App이 제출되어 승인되면 이후 수정(최신 버전으로 파일 수정) 있으실 경우에는 직접 Windows Live ID로 로그인 후 위의 Checksum Integrity Verifier로 SHA-1 값을 다시 구해 패키지 경로와 SHA-1 해쉬값 등만 업데이트 해 주시면 됩니다.
    제출 후 웹 앱 갤러리 팀이 테스트와 검사를 수행하게 되며 이 과정은 3일에서 일주 정도 걸릴 수 있습니다.


    이렇게 해서 어플리케이션 패키지를 구성하는 절차와 방법에 대해서 알아 보았습니다. 다음 포스트에서는 제가 생각하는 웹 앱 갤러리에 대해서 조금 더 풀어 보도록 하겠습니다.

    감사합니다.

    참고자료 :
    Package an Application for the Windows Web Application Gallery
    Reference for the Web Application Package
    Sniffer.Installer.Reporter (SIR) for Application Gallery
    Web App Gallery principles
    Set ACLs Through the Manifest.xml File
    Reference for the Web Application Package
    Database Notes for packaging applications for use with the Windows Web App Gallery

  • Korea Evangelist

    내 오픈소스에 날개를!-(1)웹 플랫폼 설치 관리자(WPI)를 위한 나의 어플리케이션 패키지 제작

    • 0 Comments

    안녕하세요. 김대우 입니다. 이번에 소개해 드리고 싶은 내용은 다락 서버 프로젝트에서 상세히 다뤄진 WPI를 이용해 손쉬운 어플리케이션 설치에 이어, 우리의 오픈소스 프로젝트를 이 웹 플랫폼 설치 관리자(이하 WPI-Web Platform Installer)에 등록하는 방법에 대해서 소개해 드릴 예정입니다. 
    darak01.jpg
    Q. 웹 플랫폼 설치 관리자가 무엇인가요? – KBench 링크를 참조하세요.
    Q. 다락 서버 프로젝트란 무엇인가요? – 꿈이 자라는 다락방 서버 웹사이트를 참조하세요. – 마이크로소프트와 NHN이 공동으로 주관합니다.
    Q. 웹 플랫폼 설치 관리자 다운로드는 어떻게 받나요? – 마이크로소프트 /web에서 다운로드 가능합니다.

    링크를 클릭하시면 바로 확인 가능합니다.
    그렇다면, 이곳 웹 플랫폼 설치 관리자에는 어떤 어플리케이션들이 등록되어 있을까요? 
    install2.jpg
    마이크로소프트 웹 앱 갤러리 에 등록되면 자동으로 WPI에 나타납니다.
    대한민국 대표 CMS인 XpressEngine과 블로그 엔진인 Textyle이 현재 등록되어 있습니다. 국내 다수 블로거 분들이 이용하시는 텍스트큐브 역시 등록되어 있었으나 여러 사정으로 잠시 보류된 상태입니다. “백견이 불여일타”라고, 직접 다운로드 하시고 설치를 진행해 보시면 “아하~ 이렇게 쉽구나” 하고 바로 감이 오실 거에요. ^_^

    WPI를 이용하면 어떤 장점이 있나요?

    여기서 중요한 점은? 설치를 진행하면, 그 동안 고민스러웠던 여러 종속된 어플리케이션이나 서비스 등을 고민할 필요 없이, 자동으로 WPI가 모든 종속된 웹 서버, 데이터베이스 등을 자동으로 구성해 설치하게 됩니다. 즉, 관리의 편의성이 극대화 되며 내가 패키징한 오픈소스 어플리케이션이 더 많은 사람에게 닿을 수 있다는 의미지요. 또한, WPI는 다국어를 지원하기 때문에 한번 등록하면 전세계의 WPI사용자 모두에게 우리의 어플리케이션을 무상으로 홍보할 수 있다는 장점도 있습니다. 특히, WPI는 개방 플랫폼을 지향하기 때문에 MySQL이나 MSSQL과의 연계도 가능하며, PHP 어플리케이션도 아무 문제 없이 등록 가능합니다.(XpressEngine Textyle 도 등록되어 있지요)

    그렇다면 WPI를 등록할 경우에 어떤 주의점, 제한 사항이 있나요?

    넵, 등록할 때 주의하실 사항을 Web App Gallery 팀에서 제공하는 "등록 원칙과 관련된 글 을 통해 확인 가능합니다. 뜬구름 잡는 이야기처럼 보일지 모르지만 운영 원칙이니 참고 하시길 바랍니다. XE팀과 제가 직접 관련 패키징 작업을 도움 드린 적이 있는데요. 진행하면서 느낀 점을 한번 더 정리해 보자면
    - 보안 제공
    WPI를 통해 설치되는 어플리케이션은 보안상의 제약으로 웹사이트 하위 폴더에 대해서만 권한이 부여됩니다. 즉, 윈도우의 system 폴더 등에 대한 권한이 없으며, PHP 어플리케이션일 경우 php.ini 파일에 대한 편집이 불가합니다. 또한, PHP의 확장 모듈 중에 mysql이나 mssql 등은 이용 가능하나, Zend와 같은 확장 기능은 이용할 수 없습니다.
    - 사용자 편의성 우선
    WPI는 사용자 편의성 우선 원칙에 의해 제작되었습니다. WPI에서 입력 받은 값을 통해 WPI로 설치 과정이 완료되면 반드시 완성된 웹사이트가 보여지도록 하는 것을 권장하고 있습니다. 즉, WPI 설치 후 기본 레이아웃이나 스킨이 적용된 즉시 사용 가능한 Welcome 화면이 나올 것을 권장해 드리고 있습니다.
    - 웹 서비스를 위한 어플리케이션 등록
    어플리케이션은 불특정 다수를 통해 서비스되는 어플리케이션을 등록할 수 있으며, 개인용 웹사이트 관리 솔루션 등은 상용을 권장해 드리지 않습니다.
    - 오픈소스 커뮤니티 지원
    WPI는 오픈소스 커뮤니티에 대한 공익적인 목적이 더 강한 서비스 입니다. 오픈소스로 제공되는 소프트웨어만을 등록이 가능합니다.(오픈소스이며 상업용 패키지인 쇼핑몰일 경우, 하위 기본 무료 오픈소스 버전을 WPI에 등록 하는 것은 가능합니다.-사례가 있습니다.)

    Web App Gallery 팀에서 제공하는 WPI를 등록하는 절차
    file.axd?i=1675
    웹앱갤러리 팀에서 제공하는 어플리케이션 등록 절차 등록을 위한 공식 절차 내용인데 조금 많이 단순 하지요? 이제 상세히 기술적인 측면도 설명 드리도록 하겠으니, 조금만 기다려 주시길 바랍니다.
    자, 이렇게 간단히 WPI를 올리기 전에 고려하실 사항에 대해서 알아 보았습니다. 그럼 다음 글을 통해, 직접 WPI를 패키징하는 절차를 설명 드리도록 하겠습니다.

    참조자료 :
    마이크로소프트 웹 플랫폼 - (1) 다시 쓰는 웹 플랫폼
    마이크로소프트 웹 플랫폼 - (2) 마이크로소프트 웹 플랫폼은 무엇인가?
    Introducing the Windows Web Application Gallery

  • Korea Evangelist

    [아키텍처 저널 번역] 19권 엔터프라이즈 소셜 컴퓨팅 #1/2

    • 0 Comments

    image약 4년전 마이크로소프트 본사에서는 아키텍처 저널에 대한 한글 버전을 포함하여 다양한 언어 번역본도 함께 제공했었지만, 전 세계 다양한 언어에 맞추어 제공하기엔 비용이 만만치 않았다. 하여 중도에 한글 버전이 제공되지 않기에 이르렀고, 올해 한국마이크로소프트 차원에서 새롭게 한글 번역판을 제공하고자 시도중이다. 현재 23권까지 나와 있는 아키텍처 저널 중에서 최근 것 위주로, 그리고 내용의 가치를 가려서 시장에서 원하는 내용 위주로 선별하여 번역물을 제공할 예정이다. 현재 외부 전문가를 통해 서너개의 아키텍처 저널 아티클이 동시에 번역되고 있으며 이를 내부에서 리뷰한 후, 본 블로그에 일정 분량씩 게시하여 피드백을 받아 최종 수정을 거친 후, 완성된 아티클들은 PDF로 변환하여 다운로드 받을 수 있게 제공할 예정이다.

    먼저 아키텍처 저널 19권에 수록되어 있는 Kendrick Efta의 Enterprise Social Computing의 한글 번역물을 리뷰 과정에 맞추어 두 번에 걸쳐 게시할 예정이다.

    많은 분들의 피드백을 기대하며...

    --------------------------------------------------------------------

    엔터프라이즈 소셜 컴퓨팅 (영어 원문은 여기)

    작성자: Kendrick Efta

    요약
    오늘날 기업 내에서 흔히 볼 수 있는 핵심적인 비즈니스 요구와 애플리케이션 추세를 고려할 때 Microsoft Office SharePoint Server 2007은 기업이 소규모로 시작하여 소비자 중심 소셜 컴퓨팅 기술의 효과를 방화벽 내에서 재현할 수 있는 훌륭한 도구이다. MOSS를 사용하면 소규모의 “약한” 소셜 컴퓨팅을 지원할 뿐만 아니라 “강력한” 소셜 컴퓨팅 시나리오로 확장하여 여러 지역에 광범위하게 분산되어 있는 다수의 사용자를 연결하고 조직 내에서 집단 지성(collective intelligence) 을 발휘할 수 있다. 성공 사례가 하나, 둘 나타나고 사례 연구가 윤곽을 드러내면서 조직은 고객, 파트너, 외부 커뮤니티와 관련된 소셜 컴퓨팅 투자를 계획하게 된다. 조직은 비즈니스 의사 결정자와 IT 전문가 간의 관계를 긴밀하게 유지하여 SharePoint 플랫폼에서 더욱 다양한 도구 집합을 채택하거나 개발하는 방법을 모색할 수도 있다. SharePoint 플랫폼에서는 방화벽 내부와 외부 모두에서 소셜 컴퓨팅을 사용할 수 있다.

    소개
    웹 2.0 단계의 인터넷의 특징은, 정적이고 이미 생성되어 있는 웹 컨텐츠 중심의 에코시스템으로부터 사용자의 참여와 홍보를 통해 활기찬 커뮤니티가 되는 애플리케이션 및 서비스 에코시스템으로의 근본적인 전환이 이루어진다는 점이다. 이러한 새로운 서비스와 애플리케이션은 사용자에게 다양하면서도 공동 작업이 가능하고 사교적인 환경을 제공하므로 집단 지성 즉 “대중의 지혜”가 생성되도록 촉진할 수 있고, 사용자가 문제를 해결하고 의견 및 인식을 형성하며 커뮤니티와 상호 작용하는 방법을 발전시킬 수 있다. 이러한 사용자 경험과 소셜 컴퓨팅 기능의 효과가 웹 2.0 기술의 특징이다.
    이러한 전환은 소비자 웹 애플리케이션 및 서비스에 가장 극적인 영향을 미쳐 왔음에도 불구하고, 많은 비즈니스 및 기업 입장에서는 여전히 웹 2.0 소비자 및 소셜 웹의 효과를 조직의 사무실 내에서 최대로 재현하는 방법에 대해 고심하고 있다.
    기업에는 소셜 애플리케이션 및 서비스를 성공적으로 배포하기 위해 고려하고 해결해야 하는 여러 가지 고유한 요구와 과제가 있다. 그리고, “약한” 소셜 소프트웨어 환경과 “강력한” 소셜 소프트웨어 환경의 개념 구분은 특히 기업 내의 사회적 구조 및 규범과 관련되어 있기 때문에 ���업이 성장하고 규모를 키워감에 따라 비즈니스 가치를 공고히하면서 소셜 컴퓨팅에 대한 점진적 투자 계획을 세우는데 유용하다. 마지막으로, Microsoft Office SharePoint Server 2007과 같은 플랫폼에 대한 투자를 통해 기업은 “작게 시작”하여 플랫폼의 각 요소를 시험해가면서 기업의 요구를 가장 잘 충족시킬 수 있는 것을 선정하고, 이를 기업 전략적인 측면에서의 요구사항을 충족시킬 수 있는 입증된 서비스와 애플리케이션으로 “확장”할 수 있다.

    기업의 비즈니스 요구
    많은 기업은 엔터프라이즈 플랫폼 및 소셜 소프트웨어를 평가할 때 고려할 만한 비즈니스 요구에 대한 공통 패턴을 보여준다. 이러한 요구는 엔터프라이즈 플랫폼 및 소셜 소프트웨어가 “애플리케이션의 대세(Application Megatrends)”1 (그림 1)임을 분명히 보여 준다.

    • 민첩성(Agility): 몇 시간 또는 며칠 만에(몇 주 또는 몇 개월 단위가 아니라) 구성하여 즉시성 비즈니스 요구를 만족시킬 수 있는 애플리케이션이다. 이러한 애플리케이션의 비즈니스 요구는 많은 경우에 전술적인 수준에서 식별되고 관리되며, 비즈니스 요구가 더 이상 존재하지 않게 되면 폐기하거나 사용 중지할 수 있기 때문에 “임시 애플리케이션(provisional applications)”으로 불리기도 한다. 역설적으로, 이러한 임시 애플리케이션은 규모가 크고 보다 포괄적인 솔루션에 대한 투자 수익률(ROI)을 보여줄 수 있기 때문에 POC(개념 증명)로 활용할 수도 있다.
    • 사용 편의성(Usaility): 사용자에게 이미 익숙한 인터페이스를 통해 기능 및 정보를 제공한다. 예를 들어 사용자가 근무 시간의 대부분을 Microsoft Outlook 2007을 이용하는 경우 사용자는 Outlook 인터페이스 내에서 주요 기능과 정보에 접근할 수 있어야 한다. 그뿐 아니라, 소셜 컴퓨팅 정보를 전달할 수 있는 유비쿼터스 채널의 필요성이 점점 증가하고 있다. 이러한 유비쿼터스 채널은 모바일 인터페이스, 데스크톱 인터넷 애플리케이션 또는 리치 인터넷 애플리케이션(예: Silverlight 또는 Flash)의 형태가 될 수 있다.
    • “롱 테일” 비즈니스 요구 (Long Tail Needs): 소규모 회사 또는 대규모 조직 내의 작은 팀은 대부분 자신에게 특화된 애플리케이션을 구축할 여유가 없기 때문에 여전히 매우 개성이 강한 비즈니스 요구를 충족할 수 없다. 이러한 기업의 IT 조직은 기업 전체의 대규모 요구는 해결할 수 있지만, 일반적으로 개별적인 요구 사항이 있는 소규모 프로젝트는 구현할 시간이나 예산이 없다.
    • 강력해진 접근성(Empowered Access): 경영진이나 임원뿐만 아니라 모든 사용자가 더 나은 결정을 내릴 수 있도록 돕는 소프트웨어 성능이다. 강력해진 접근성은 기업내 정보의 민주화로 표현할 수 있다. 또는 단순하게 표현하여 사용자 역할에 관계없이 현명한 판단과 조치를 취할 수 있도록 플랫폼의 기능을 활용하는 것이라고 할 수 있다.

    그림 1: 인구통계 및 근무환경 변화의 영향을 받는 비즈니스 요구
    aa699425_art4fig1(en-us,MSDN_10)

    또한, 기업이 위에서 언급한 비즈니스 요구를 인지하고 반응하는 방식에 영향을 줄 수 있는 “수평적” 사회 변화도 있다.

    • 노동자 인구 통계(Worker demographics): 1977년부터 1997년까지 태어난 8천 1백만 명의 어린이들(Tapscott, 2008년, p. 16)(“Y 세대” 또는 “밀레니엄 세대”라고도 함)이 대거 노동 인구로 진입하기 시작했다. 이 노동자들은 기술과 함께 성장했고 근무지에서도 사생활에서와 마찬가지로 기술 및 소셜 컴퓨팅의 혁신적인 사용법을 채택하고 찾아내려 한다. 반대로 1946부터 1964년 사이에 태어난 7천 7백만 명의 “베이비 붐 세대” 노동자들(Tapscott, 2008년, p. 16)은 은퇴 연령에 가까워져 노동 인구에서 빠져나가기 시작한다. 이 세대의 노동자들은 기술을 폭넓게 활용하지는 않는다는 인식이 있지만 이들은 방대한 지식과 경험을 가지고 있다는 공감대가 있다. 소셜 컴퓨팅 기술은 이들이 은퇴하기 전에 지적 자산을 기록하고 공유할 수 있는 훌륭한 방법이 될 수 있다.2
    • 차세대 근무환경(Next-generation workplaces): 기업은 점점 종래의 근무환경 인프라 및 기대를 탈피해 나가고 있다. 이러한 현상으로는 재택 근무, 조직의 모든 계층 구조에 있는 동료와의 원격 공동 작업, 버추얼 팀제 구조, 고객 및 파트너와의 관계 관리 방식 변화, 그리고 경제적 상황이 불안정함에 따라 “임시직(Gig Economy)”에 종사하는 프로젝트 프리랜서 및 컨설턴트의 비율 증가 등을 꼽을 수 있다.
    • 소비자 기반 소셜 컴퓨팅 사용 사례(Comsumer-based social computing use cases): 많은 노동자가 소셜 컴퓨팅에 적극적, 효율적으로 참여하고 있고, 소비자 기반 도구를 회사 내에서 활용할 수 있으며, 또 활용해야 한다는 기대가 커졌다. 최근에는 소비자 모델을 기반으로 기업내에 소셜 컴퓨팅을 배포하여 널리 알려진 성공 사례3 가 나타나고 있다. 이러한 성공 사례는 기업 사무실 내에서 소셜 컴퓨팅을 채택하여 소비자 기반 기술의 긍정적인 효과를 재현하고 회사의 비즈니스 요구를 이행할 수 있는 방법에 대한 활발한 논의를 불러일으켰다.

    기업의 당면과제
    대부분의 노동자는 소비자용 소셜 컴퓨팅 기술을 통해 생산성을 향상시키고 집단 지성을 발휘할 준비가 되어 있지만, 문제는 그러한 도구의 배포 및 유지 관리를 담당하는 IT 부서에 있다. IT 부서 입장에서는 보안이 뛰어나고 제어가 가능하며 회사 정책에 위배되지 않으면서도 관리가 용이한 소위 기업용 도구를 필요로 한다. 이러한 거버넌스 영역에 대한 고민은 매우 현실적이다. 맬웨어 감염 시스템4으로 인해 지적 재산이 누출되어 생산성이 손상된 예를 많이 볼 수 있다. 또한, 소비자 지향적인 소셜 컴퓨팅 서비스는 대부분 현재 기업 서비스5 전용으로 사용할 수 있도록 조정할 계획이 없으므로 기업이 사무실 내에서 소비자 웹의 효과를 재현하려 할 때는 고려해야 할 핵심적인 사항 몇 가지 있다.

    • 소셜 컴퓨팅 솔루션의 채택 및 배포에서 성공의 열쇠는 대체로 사용자에게 달려 있다. 즉, 사용자들의 관계, 공동 작업 방식, 의사 소통 방식, 사용자들이 사용하는 업무 프로세스에 초점을 맞춰야한다. 일반적으로 기술 자체는 솔루션에서 그보다 훨씬 작은 부분을 차지한다. 기업내 직원들의 요구를 이해하면 기술을 통해 그러한 요구를 충족할 가능성이 크게 높아지고 사용자가 기술에 대해 잘 알게 되어 기술의 이점을 잘 활용하게 될 가능성도 그만큼 커진다.
    • “약한” 소셜 컴퓨팅 시나리오와 “강력한” 소셜 컴퓨팅 시나리오를 모두 지원하는 엔터프라이즈 플랫폼에 대해 알아볼 필요가 있다. 최근의 Gartner 보고서6에는 “약한” 소셜 컴퓨팅과 “강력한” 소셜 컴퓨팅간의 차이점이 설명되어 있다. 모든 공동 작업 기술은 어느 정도 사회적 특성을 띄고 있지만 “약한” 소셜 소프트웨어는 개인간에 존재하는 기존의 연결 및 사회적 상호 작용을 보완할 수 있다 (전자 메일, 문서 공동 작업, 인스턴트 메시징). “강력한” 소셜 소프트웨어는 다소 느슨한 사회적 연결장치를 통해 다수의 개인 간 상호 작용을 촉진한다 (Facebook, Digg, LinkedIn, SlideShare, Twitter). 이 차이를 통해 조직은 약한 소셜 소프트웨어와 강력한 소셜 소프트웨어 사이의 연결선상에서 비즈니스 요구를 식별할 수 있다. 그러면 이러한 요구에 대해 조직내 사용자와의 토론을 계획하고, 이 사용자들이 소셜 컴퓨팅 기술에 대한 투자를 계획하도록 할 수 있게 된다.
    • 너무 크게 시작하지 마라. 지금 현재 가지고 있는 플랫폼 (“약한” 소셜 소프트웨어)을 이용하여 시작하되, 점차 소셜 컴퓨팅(즉, “강력한” 소셜 소프트웨어)이 비즈니스 요구를 충족시킬 수 있다는 것을 증명하도록 하라.
    • 고객, 파트너, 기타 소비자 지향적인 커뮤니티 및 서비스를 참여시킬 수 있도록 소셜 컴퓨팅에 대한 장기 투자를 계획하라.
    • 거버넌스 요구는 시간에 따라 변화하므로 필요에 따라 거버넌스 및 규정 준수에 대한 접근 방식 및 기능을 점진적으로 발전시켜 나가라.

    (…. 다음에 Solution Framework부터 이어서 ....)

  • Korea Evangelist

    Visual Studio 2010 완소가이드 VS2010 Training Kit

    • 0 Comments

    Visual Studio 2010 Training Kit을 아세요
    Visual Studio 2010과 관련된 Presentation, Hands on Lab과 각종 Demo 그리고 Source등이 함께 있습니다. 그리고 .NET 4.0과 새 버전의 MFC에 대한 정보도 함께 있어서 개발자들이라면 꼭 한번씩은 열어보셔야 할 내용들로 가득 차 있습니다.

    개발자를 위한 IT블로그 영욱닷컴(http://www.YoungWook.com)

Page 3 of 4 (17 items) 1234