My Sharepoint

sharepoint.egloos.com

포토로그 마이가든



[강좌] SharePoint Architecture 이해하기 Part 1 SharePoint

실로 오래간만에 강좌다운 강좌를 쓰는것 같습니다. 커뮤니티와 블로그를 동시에 진행할려니 생각보다 빡시군요~ 그러면서 업무는 또 업무대로 진행할려니 시간이 잘 나지 않습니다.(비겁한 변명입니다. ^^;;;)  하긴뭐 기다리시는 분들이 없는것 같으니 딱히 이렇게 쓰는것도 부끄럽네요 *^^* 머 어쨋거나 저는 제길을 지켜나가도록 하겠슴다.ㅎ 이쁘게 봐주심 감솨하겠습니다.
아차~ 강좌를 혹시 관심있게 봐주시는 고마우신 분들께서는 한줄덧글 써주시는 센스를 잊지 마시기 바라겠숨다~ㅎ 써주시는 분은 복받으실꺼에요 ^0^


SharePoint Architecture 이해하기 Part 1
부제 : SharePoint 의 Logical Architecture 와 그 구성요소
Written by 짜두르


SharePoint 를 마스터 하기 위해서 우리는 SharePoint가 어떻게 구성되어 있는지 알 필요가 있다.

우선 관리자의 입장에서는 각 서버들의 구성요소들이 어떻게 나누어져 있으며, 그들이 어떤 역할을 하는지 정확히 알 필요가 있으며, 개발자의 입장에서는 어떤 Object Model 에 어떻게 접근해야 할 것인지에 대한 판단이 SharePoint Architecture 에 대한 이해에서부터 시작되므로  SharePoint 의 Architecture 에 대한 이해는 매우 중요하다. 그런 의미에서 이번 시간에는 SharePoint 의 논리적 구조(Logical Architecture) 에 대하여 알아보도록 하겠다. 
 

Microsoft Office SharePoint Server 의 Logical Architecture

 

출처: WSS 3.0 SDK-Server Architecture

위 그림은 SharePoint 를 논리적으로 바라 보았을 때 각 구성요소들이 어떤 관계를 갖고 있는지를 한눈에 알아볼수 있는 그림이다. 이들 각각 요소들은 살펴보면 각 계층들마다 자신들만의 특정한 역할이 있으며 그 기능들을 수행한다. 그럼 이들 요소들이 어떤 역할을 수행하는지 살펴 보자.

1. Server Farm

우선 논리적 단위에서 가장 큰 단위인 Server Farm 을 살펴 보도록 하겠다.

Server Famr 은 논리적 구조의 가장 상위 구성요소이다. Server Farm 의 형태는 물리적 서버 의 Role 조합에 따라서 Small/Medium/Large Farm 으로 나뉘어진다. 또한 각 서버의 Role 들은 Front-End Web Server, Application Server, Database Server 로 나누어 지는데 이는 이후에 다루어질 물리적 구조에서 살펴 보도록 하겠다. 즉, 논리적 구조로 보았을 때 Server Fram 은 도메인 안에서 SharePoint 가 배포되어 있는 모든 서버에 대한 정보를 모아 놓은 구성요소라고 할 수 있다. 우리는 이를 통하여 어떤 서버들이 배포되어 있으며, 이들의 역할은 무엇이고 어떤 속성들을 가지고 있는지 알 수 있다.

SPFarm myFarm = SPFarm.Local;
textBox1.Text = myFarm.Servers["jdsongsvr1"].Role.ToString();

   참고소스: 로컬에 존재하는 Server Farm에 접근하여 해당 서버가 어떤 역할을 하고 있는지를 알아내는 예제 소스

 

2. Web Application

Web application 구성 요소는 웹 서버역할을 한다. 좀더 쉽게 설명하자면 Web application 은 IIS 에서 하나의 웹사이트에 해당된다.(홈페이지를 만들때 IIS 의 웹사이트가 없으면 사이트를 만들수 없듯이 SharePoint 역시 Web application 이 존재하지 않는다면 포탈 사이트 같은 것들을 만들 수 없다.) Web application 은 하나의 서버 팜에서 여러 개를 생성할 수 있으며, 여러 개의 Site Collection 과 Contents database 를 가질 수 있다. 또한 중앙관리에서는 Web application 단위로 최대 업로드 파일 크기나 표준 시간대 설정을 할 수도 있다.

SPWebApplication webApp = SPWebApplication.Lookup(newUri(http://jdsongsvr1));
webApp.RecycleBinEnabled = true;

   참고소스: 특정 Web application에 접근하여 휴지통 기능을 활성화 시키는 소스

 

3. Site Collection

Site Collection 은 말 그대로 사이트에 대한 모음이다. SharePoint 를 설치해본 사람은 알겠지만 최초에 SharePoint 의 사이트를 생성하려고 할 때 우리는 Web application 을 생성하게 되고, 그 이후에 Site Collection 을 생성하게 된다.


SharePoint 중앙관리에서 사이트 모음 만들기 화면

위의 그림과 같이 사이트를 생성하게 되면 몇몇개의 사이트와 컨텐츠(리스트 혹은 라이브러리) 들이 생성이 된다. 우리는 이런 사이트를 모음들을 통틀어서 Site Collection 이라고 부르는 것이다.
즉, Site Collection 은 그 하위에 존재하는 모든 사이트 모음들에 대한 설정 정보들을 가지고 있다. (예를 들어 특정 Site collection 에서는 어느 정도의 용량을 쓸 것인가를 정의 할 수 있다.) 특히 개발자는 이 구성요소를 주의 깊게 살펴볼 필요가 있다. 개발자가 접근하는 Object Model 은 Site Collection 단위의 작업들이 많이 일어나기 때문이다. (예를 들어 동일한 사람의 User ID-좀더 정확하게 SPUserID임- 는 Site Collection 에 따라서 달라질 수 있다.)

SPWebApplication webApp = SPWebApplication.Lookup(newUri("http://jdsongsvr1"));
SPSiteCollection siteCollection = webApp.Sites;
foreach (SPSite site in siteCollection)
{
    textBox1.Text = site.Url.ToString() + "\r\n";
}

   참고소스: Web application 으로부터 Site Collection 을 알아낸 다음 각 Site Collection 으로부터 최상위 사이트의 URL을
   읽어오는 소스

 

덧붙여 아래 그림은 Site Collection 이하의 구성요소들에 대하여 논리적인 그림으로 함축시킨 것이다. Site Collection 에 대한 이해를 도울 수 있을것 같아 첨부 한다.
 


    출처: WSS 3.0 SDK-Site Architecture

4. Site

Site 구성요소는 쉽게 말하면 Site Collection 에서의 최상위 사이트를 뜻한다. 실제로 관리자들이 이 최상위 사이트에서 설정 작업들을 주로 하는데, 그 주된 작업은 사용자/권한 그리고 기타 사이트 설정에 필요한 서식파일 관리 등일 것이다.

 


5. Feature

Feature 는 WSS 3.0 에서 가장 획기적인 발전이라고 평가 받는 구성요소 중에 하나이다. 이 구성 요소는 MOSS 라는 거대한 솔루션을 작은 기능들로 나누어 놓은 것이라고 할 수 있다. Feature 는 대부분 XML 파일들로 이루어 져 있는데 여기에는 데이터와 메타 데이터 그리고 그것들이 지닐 기능들에 대하여 정의를 하고 있다. Feature 를 통하여 우리는 배포에 대한 간소화를 볼 수 있으며 그 범위( Server Farm/Web Application/Site Collection/Web Site)를 지정할 수가 있다.


 Note: Feature 에 대한 부분은 너무 광범위 하여 여기서는 의미에 대해서만 언급하도록 하겠다. 이후 강좌에서 Feature 로 할 수 있는 것들이나 배포 방법 등에 대하여 살펴볼 것이다.

지금까지 SharePoint 의 논리적 구조에 대하여 살펴 보았다. 아무래도 SharePoint 를 처음 접하는 사람에게는 아직까지 Web application 이라던가 Site Collection 이라는 단어가 생소할 것으로 생각된다. 단어의 의미들은 개인적으로 한번 정리해보기를 바라며, 이후 남은 SharePoint 의 물리적 구조나 서버 팜의 구성에 대해서는 다음 시간에 알아보도록 하겠다.


Reference

1. WSS 3.0 SDK

2. MOSS 2007 SDK

참고사항: 본 게시물에 존재하는 소스는 SharePoint 의 Architecture에 대한 이해를 돕기위한 소스입니다. 고로 성능과 관련된 부분은 눈꼽만큼도 신경쓰지 않았음을 참고해 주시기 바랍니다.ㅡㅡ;;;


트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://sharepoint.egloos.com/tb/1523850 [도움말]
  • Sharpoint Architecture Part 1 2009/06/18 09:58 #

    SharePoint Architecture 이해하기 Part 1부제 : SharePoint 의 Logical Architecture 와 그 구성요소Written by 짜두르SharePoint 를 마스터 하기 위해서 우리는 SharePoint가 어떻게 구성되어 있는지 알 필요가 있다. 우선 관리자의 입장에서는 각 서버들의 구성요소들이 어떻게 나누어져 ... more

핑백

  • My Sharepoint : Site Collection Creator Part 1 - Site Collection 만들기 2008-08-12 18:00:32 #

    ... 오늘은 SharePoint Object Model(이하 OM) 을 이용하여 Site Collection 을 생성해 보도록 하겠다.예전에 강좌로 올린글 SharePoint Architecture 이해하기 Part 1 에서 Web Application OM(SPWebApplcation) 을 이용하면 해당 Web Application 에 존재하는 Site Col ... more

덧글

  • 희정 2007/10/18 11:45 # 답글

    ...말투가.. 매우 딱딱하신...;;;

    논리적 구조가.. 만드는데 도움이 될까요?
    .. 이런 쓸데없는 의문을 갖는건 이해의 능력이 모자라기 때문입니다.;ㅅ;
  • 짜두르 2007/10/19 08:58 # 답글

    음..제말투가 쫌그런가요?~^^; 머 여튼 논리적 구조를 이해하는건 가장 기본이라는 생각이듭니다. 어찌어찌해서 이것저것을 만들더라도 나중에는 결국한계가 생기게 될것 같슴다.
  • 희정 2007/10/22 16:45 # 답글

    그렇군요.. 프로젝트에서 사용하게 될지 안될지 아직 미확정인지라 선뜻 손이 가지 않습니다만.. 다시 한번 눈을 부릅뜨고 도전해볼께요!
  • 석! 2007/10/23 09:44 # 삭제 답글

    SPFarm클래스를 이용해서는 로컬서버만 접근이 가능한거 같은데요...
    이걸 다른 MOSS서버로 접근을 할수 있나요???
    SPFarm객체를 이용해서 몇번 시도했다가.... 80포트 날리고..ㅠㅠ
    현재 다른 MOSS서버의 어플리케이션까지는 접근을 해서 Collection까지는 가져왔는데 그 하위에 있는데 Site를 못가져오고 있습니다...
    가능한가요???^^;;
  • 짜두르 2007/10/23 17:14 # 답글

    //희정님/ 이제 곧 프로젝트를 시작하시게 될 것 같군요. 어떤 기술이 들어가던지 눈 부릅뜨면 잘 해결되리라 생각 됩니다. ^0^
    //석님/ 음..질문의 요지가 애매하군요. 어떤 서버의 정보를 가져온다는 것은 그 서버에서 실행중인 서비스를 컨트롤 하기 위함이라 생각되는데요... 그에 맞게 코딩을 진행하면 될것 같습니다. 음... 그리고 SPWebApplicationCollection 에서 하위에 특정 사이트가 있는 것이 아니구요 Object Model 상에서 SPWebApplicationCollection 하위의 특정 SPWebApplication 에 접근한 다음 그 하위의 SPSite 를 찾으셔야 할 것 같슴다. ^^;;;
  • 석! 2007/10/24 11:51 # 삭제 답글

    음... 제가 밤샘 작업을 하냐고 정신이 없어서 질문을 이상하게 했나보네요 ^^;
    저건 해결했습니다...
    근데 다음 문제가 하나 큰게 생겼는데요..
    지금 현재 Personalization에 관한 프로젝트를 하고 있거든요..
    근데 현재 서버를 개발 서버 한대, 운영 서버 한대, 이렇게 두고 개발을 하는데요...
    운영은 현재 돌아가고 있고요....
    Page Layouts페이지를 하나 만들어서 WebPartZone을 만들고 AllowPersonalization 모드를 True로 하였습니다.
    해당 마스터 페이지에서 버튼을 하나 만들어서 모드를 Personalization모드로 변경하는 걸 만들었습니다...
    근데 개발서버나 로컬에서는 현재 사이트에 접근권한이 있으면 그 Personalization존이 디스플레이가 되는데...
    운영서버에만 올라가면 이게 잘 안됩니다... 마스터도 같은마스터 올리고 Page Layouts도 같은걸 쓰고....
    현재 페이지의 구성 웹파트도 동일한데... 안됩니다...
    근데 특이한건 현재 사이트의 어느 특정 그룹의 사용자는 Personalization존이 디스플레이가 됩니다...
    정말 어이 없습니다... 단지 그 특정그룹은 모든권한이라서
    제가 하나의 그룹을 더 생성해서 그 그룹의 권한을 모든권한으로 주고 유저를 추가한후 해봤는데 그 사용자는 안됩니다...
    아... 버튼의 레이아웃 변경 스크립트는.. javascript:MSOLayout_ChangeLayoutMode(true) 이건데...
    혹시 무슨 문제라도 있는건가요???? 답변좀 해주세요 ㅠㅠ 급합니다...
  • 짜두르 2007/10/24 16:38 # 답글

    많이 급하신 모양이군요. 안타깝슴다. ㅡㅜ. 죄송합니다만 위 정보만 가지고는 어떻게 도와드릴 수가 없을것 같네요. 블로그에서 QnA 는 설명을 듣기에도 뭔가 부족한듯 싶구요. 죄송합니다만 MOSS 커뮤니티(http://spsteam.com) QnA 에 좀더 자세한 정보를 주시면 한번 다시 살펴보도록 하겠습니다. ^^
  • 석! 2007/10/25 10:06 # 삭제 답글

    앗 예...알겠습니다..
  • 짜두르 2008/03/10 16:28 # 답글

    3월10일 수정 : 제목 수정 및 부제 추가
  • 우쾅쾅 2008/08/12 11:54 # 삭제 답글

    ㅋㅋㅋ
    항상 좋은 정보 감사합니다.
    열심히보고 있답니다.ㅎㅎㅎ
  • 머째이와니 2009/06/18 10:12 # 답글

    트랙백으로 링크를 걸었는데 모르고 내용을 지워 버렸었네요.ㅡㅡ;
    좋은 정보 감사합니다^^
덧글 입력 영역