오픈소스 프로젝트는 이제 더 이상 취미생활로 하던 수준이 아니고 기업에서 목적을 가지고 운영하는 것이 대세입니다.

하지만 기업의 입장에서 보면 오픈소스 커뮤니티의 관리가 생소하고 이 때문에 프로젝트 수행 조직은 오픈소스 커뮤니티의 구축 및 성장을 어떻게 관리해야 하는지 경험이 부족해서 어려움이 많은 현실입니다.

얼마전 공개소프트웨어 연구개발 프로젝트의 관리에 대한 강의를 할 일이 있어서 강의 자료를 작성했는데 그 내용중 오픈소스 커뮤니티의 운영에서 생각해볼 만한 점을 공유합니다.

 

프로젝트의 메인테이너의 필요한 활동

• 프로세스 문서화 - 사용자, 기여자, 개발자를 위한 최신의 문서를 제공

• 공평하게 작성되고 집행되는 규칙 준비 – 프로젝트의 유지관리 상태를 투명하게 공유

• 커뮤니케이션 공개 – 가능한 모든 커뮤니케이션을 공개

• 멘토링 수용 – 품질이 낮은 기여를 제출하는 경우 인내심을 가지고 기여할 수 있도록 지원

• 커뮤니티의 기여자 활용 – 공개적으로 필요한 요청을 제시하고 반복적인 기여자에게 더 많은 책임을 부여

• 다른 사람이 필요한 솔루션 구축을 지원 (API)

• 자동화 도구를 적극 활용 – 모든 제출에 대해 최소 품질 표준을 설정하고 코드 품질 향상을 위한 테스트를 자동화

 

오픈소스 커뮤니티 매니저의 필요한 활동

• 커뮤니케이션이 공개되고 접근 가능한 경우 누구나 과거의 게시물을 읽고 참여 가능한 장소 제공 (커뮤니티 사이트, 포럼, 메일링리스트)

• 개인적인 대화를 공개 채널로 안내해서 전환하도록 유도

• 커뮤니티의 이슈에 대한 빠른 대응 - 48시간 내에 코드 검토를 받은 기여자들은 매우 높은 충성도(모질라 재단 연구)

• 인터넷 상의 다른 곳(Stack Overflow, Twitter, Reddit, Google)에서 프로젝트가 언급될 수 있기 때문에 알림을 받을 수 있도록 설정

• 공개 커뮤니케이션에 대한 보안 문제, 민감한 행동 규범 위반 등의 예외적 상황을 커뮤니티 구성원이 개인적으로 보고할 수 있는 방법 제공

• 행동 규범을 준비하여 나쁜 영향을 미치는 커뮤니티 구성원을 최소화 – 문제가 지속되면 떠나도록 요청해야 할 수 도 있음.

• 커뮤니티 내부에서 기여자를 발굴하기

• CONTRIBUTING.md 파일에서 새 기여자에게 시작하는 방법을 제시

• 기여자를 환경하는 특별한 페이지 준비

• 이슈에 다양한 유형의 제공자에서 적합한 레이블 사용 – good first issue, help wanted

• 친절한 문서를 사용해서 사람들이 모든 단계에서 환영 받는 느낌을 받도록 제공

• 커뮤니티와 최대한 소유권을 공유할 수 있는 방법을 준비 - 사람들은 소유권을 느낄 때 기쁘게 기여합니다.

• 갈등 해결 – 커뮤니케이션에 대한 기준을 설정해서 구성원간 강한 의견이 있는 경우 참여하기 보다는 중재자의 입장을 취할 것

• 투표를 통한 주요 결정을 내리기 보다는 대화를 듣고 토론을 먼저 하기 - 답변 보다는 과정에 집중하는 것이 커뮤니티를 건강하게 만듭니다.

• 커뮤니티 구성원들이 충분히 들을 수 있을 때까지 주요 관심사에 대해 논의합니다.

• 조용한 커뮤니티 사용자를 고려하는 것을 잊지 않아야 합니다.

• 커뮤니티에서 행동의 우선 순위를 식별 – 순위 결정은 최후의 수단으로 사용해야 함, 이 때는 GOVERNANCE 파일에서 순위 결정 및 관련 프로세스를 식별 한 후에 사용

• 커뮤니티 거버넌스 모델은 프로젝트 참여자가 수행할 수 있는 역할과 프로젝트 내 의사결정 프로세스를 설명하고 프로젝트 참여 및 프로젝트 팀 및 커뮤니티 내 의사소통 및 공유 프로세스에 대한 기본규칙을 설명. 

 

오픈소스 프로젝트 관리자의 커뮤니티 관리에 필요한 활동

• 사용자들이 우리 프로젝트를 잘 찾을 수 있는가? 

• 총 페이지 조회수 : 프로젝트를 조회 한 횟수를 알려 줍니다

• 총 순 방문자수 : 얼마나 많은 사람들이 프로젝트를 보았는지 알려줍니다

• 추천 사이트 : 방문자가 어디에서 왔는지 알려줍니 다. 이 측정 항목은 잠재 고객에게 도달 할 수 있는 위치와 프로모션 노력이 효과가 있는지 파악하는 데 도움이 됩니다.

• 인기있는 콘텐츠 : 방문자가 프로젝트에서 방문한 위치를 페이지 뷰와 순 방문자수로 나눕니다.

• 기여자 당 총 기여 수 및 커밋 수  - 기여자 수와 활동중인 사람 수를 알려줍니다. 

• 처음 기여자, 일시적이거나 반복적인 기여자 - 새로운 기여자를 받고 있는지 여부와 그들이 다시 왔는지 여부를 추적 할 수 있습니다. 새로운 기여자가 없으면 프로젝트 커뮤니티가 정체 될 수 있습니다. 

• 이슈 및 요청 수 - 이 수치가 너무 높으면 문제 심사 및 코드 검토에 도움이 필요할 수 있습니다. 

• 컨트리뷰션 유형 : 예를 들어 커밋, 오타 또는 버그 수정 또는 문제에 대한 의견

• 미해결 이슈 및 풀리퀘스트 요청 수 - 누군가 프로젝트를 이슈를 관리해야 한다는 것을 의미합니다. 시간이 지남에 따라 그 수가 증가하면 사람들이 프로젝트에 관심이 있음을 나타냅니다. 

• 이슈 또는 풀 요청이든 관계없이 기여자 (또는 다른 관리자)가 기여에 응답하는 데 걸리는 시간을 추적

 

아래 화면은 오픈소스 프로젝트 하모니카의 모니터링 시스템입니다.

강의자료

https://www.slideshare.net/chaeya/ss-183109697

개방형 OS의 정의

윈도우 XP의 기술지원 종료 시점에 IT 업계에서 대체 가능한 OS를 찾아야 한다고 한참 시끄러웠는데 내년 1월 윈도우 7의 기술지원이 종료되는 시점이 다가오면서 또 한번 이슈가 되고 있습니다.

윈도우, MacOS, 티맥스OS 처럼 개발업체에서 OS를 완전히 소유하고 있는 형태를 폐쇄형 OS라고 할 수 있는데 이 경우는 제조사의 기술지원이 종료되는 시점에 매번 윈도우 기술지원 종료와 같은 사태가 벌어지게 될 수 밖에 없습니다. 이 때문에 각 국가들은 특정 기업에 종속되지 않는 독자적인 운영체제를 개발하고자 많은 노력을 기울이고 있지만 운영체제 개발은 많은 예산을 투입하고 오랫동안 지속해야 하는 기술이므로 쉽지 않은 분야입니다.

개방형 OS란 누구든지 소스를 받아 자유롭게 수정 및 배포가 가능한 운영체제를 의미합니다. 때문에 많은 나라들이 독자적인 기술개발 보다는 개방형 OS를 개발하는 방식을 선택하고 있는데 OS의 모든 부분을 독자적으로 개발하는 것이 아니라 오픈소스로 공개된 영역들은 재사용하고 자신의 환경에 적합한 기술들은 개발하여 각 국가에 적합한 개방형 OS를 제작하고 있습니다.

국가별 개방형 OS 배포 현황

개방형 OS는 국가가 주도하고 있는 배포판들 이외에도 글로벌 커뮤니티에서 주도하는 다양한 종류의 배포판이 존재하는데 http://distrowatch.com 에 방문하면 현재 인기있는 다양한 개방형 OS 관련 정보를 확인할 수 있습니다.  또한 distrowatch 는 수백개의 리눅스 배포판에 대한 최신정보를 제공하고 있으며 다양한 조건으로 검색을 제공하므로 원하는 개방형 OS를 검색하기에 용이합니다.

distrowatch.com 검색화면

개방형 OS는 단일 기업에서 제조되는 OS와 다르게 운영체제를 구성하는 기술 레이어별로 각각 다른 지배구조를 가지고 있기 때문에 응용프로그램 자체의 기술 개발보다는 각기 다른 지배구조를 가진 커뮤니티의 배포 요구사항을 식별하고 관리하는 활동이 중요합니다.

개방형 데스크톱 OS 의 지배구조

윈도우나 맥의 경우에는 데스크톱을 사용하는 환경이 제조사에서 결정한 그대로 고정되어 배포되지만, 개방형 OS는 사용자가 원하는 데스크톱 환경(Gnome, KDE, Cinamon, MATe, Unity 등)을 다양하게 선택할 수 있습니다. 개방형 OS는 사용자에게 원하는 방식을 선택할 수 있는 자유로움을 제공하는것을 기본으로 하고 있기에 윈도우나 맥을 계속 사용해온 처음 사용자들은 기존의 환경과 다른 데스크톱 환경에 혼란스러움을 느낄수도 있습니다.

하지만 개방형 OS는 보안 위협이 발생하면 장시간 걸리는 제조사의 업데이트를 기다리지 않아도 전 세계 개발자들에 의해서 패치가 신속하게 이루어지고 있으며, 최신 기술을 선도하며 사용자에게 좋은 프로그램을 꾸준히 제공하여 현재 전 세계의 많은 사람들이 개방형 OS를 사용하고 있는 상황입니다.

https://en.wikipedia.org/wiki/Comparison_of_Linux_distributions

다양한 개방형 OS 의 비교

현재 국내에서 사용가능한 개방형 OS는 글로벌 커뮤니티에서 제공되는 배포판과 하모니카 OS가 있습니다. 우분투, 페도라 같은 배포판을 직접 다운로드 받아서 커뮤니티에 지원을 받으면서 사용하는 방법도 있지만 국내 기업이 기술지원을 하고 있는 하모니카 OS의 경우 2016년부터 국내 공공기관 및 학교, 병무청, 경찰청 등에서 사용하고 있으며 하모니카 사용자를 위한 한국어 커뮤니티 하모니카(https://hamonikr.org/)에서 사용시 궁금한 점을 함께 이야기 하고 있습니다.

하모니카 OS 프로젝트의 구성

정부 주도로 시작한 프로젝트가 종료되어 장시간 정체되어 있던 하모니카는 인베슘이 주도하여 2018년 하모니카 ME 버전을 출시하였으며, 현재 인베슘(https://www.invesume.com/)에서 하모니카 OS의 기술지원을 제공하고, 개방형 OS의 이용환경을 개선하기 위해서 지속적으로 노력하고 있습니다. 

 

참고. 개방형 데스크톱 OS 동향 : https://www.slideshare.net/chaeya/os-139524487

'오픈소스SW' 카테고리의 다른 글

오픈소스 OS 가 윈도우보다 보안에 취약하다? 진짜?  (0) 2020.03.14
무료 데스크톱 OS들  (1) 2019.04.18
오픈소스 커뮤니티 구축  (0) 2018.05.12
오픈소스와 특허  (0) 2017.07.10
공개SW R&D 추진전략  (0) 2017.03.22



최근 클라우드 분야에서 오픈소스SW의 활약이 대단하죠~

클라우드컴퓨팅지원센터, 공개SW클라우드협의회 등의 기관 및 단체들이 생겨나는 걸보면 

공개SW가 이제는 시장의 대세로 변하고 있는것은 느끼게 됩니다.


올해 개최된 OSCON 2012 발표 자료를 읽다보니 

오픈소스SW 클라우드 플랫폼 OpenStack, Eucalyptus, CloudStack, Ganeti 를 비교한 자료가 있어서 정리해 봅니다.



오픈스택 (www.openstack.org)

2010년 Rackspace 와 NASA 의 공동프로젝트로 시작해서 많은 기업들이 참여했습니다.

국내에도 최근에는 자주 세미나가 열려서 많은 분들이 관심을 가지고 있죠.

Nova, Swift, Glance, Keystone, Horizon 등의 컴포넌트로 구성되어 있습니다.



유칼립투스 (www.eucalyptus.com)

UC Santa Barbara 에서 연구프로젝트로 시작해서 2009년 상용으로 되었다가 

2012년 다시 오픈소스SW로 전환되었습니다.

Cloud Controlle, Walrus, Cluster Controller, Storage Controller, Node Controller 등으로 구성되어 있습니다.



클라우드스택(www.cloudstack.org)

Cloud.com 에 의해 개발되었고 2010년 5월에 오슨소스SW로 배포되었습니다.

Citrix 가 Cloud.com 을 인수하여 2012년 ASF(Apache Software Foundation)에 기증하여 현재 APLv2 입니다.

Management Server, Hypervisor Nodes, Storage Nodes, Layers(Zone, Pod, Cluster, Host, Primary Storage, Secondary Storage) 로 구성되어 있습니다.



가네티 (code.google.com/p/ganeti)

무중단 서버를 위하여 구글 내부에서 시작되어 내부 업무용 서버로 사용되다가 

2007년 8월 오픈소스SW로 공개되었습니다. 

Master daemon, Node daemon, Conf daemon, API daemon, Htools 로 구성되어 있습니다.



기업이 클라우드 플랫폼을 사용하기 위해서는 사용성, 서비스 가용성, 도입 및 관리 비용 절감, 성능, 이기종 호환성, 빠른 프로비저닝 등의 다양한 요소를 고려해야 하지만, 이런 의사결정을 바르게 할 수 있는 전문인력을 보유하고 있는 기업은 많지 않은것이 현실입니다. 향후, 공개SW기술이 클라우드 분야에서 확산되기 위해서는 우선 기업의 의사결정을 돕는 다양한 자료가 필요하겠습니다.


 





들어가며

메일함에 공개SW사용기와 관련해서 한통의 메일이 왔습니다. 공모한 글이 적으니 많은 참여를 바란다는 메일인데, 내용을 살펴보니 이번에는 데스크탑에서 사용하는 공개SW의 사용기를 공모하네요. 아무래도 서버용 사용되는 공개SW는 많지만, 데스크탑에서 사용하는 공개SW은 사용자가 적기 때문에 참여자가 적은가 봅니다. 블로그 포스팅도 안한지 오래되고 해서 저도 사용기 하나를 작성하기로 했습니다.

그 덕분에 제 PC에서 사용하고 있는 공개SW를 한번 쭈욱 둘러보게 되었죠.
Cygwin, Vim, FileZilla, WinSCP, Cobian, 7zip, nmap, XAMPP, Eclipse, Aptana, Putty, Firefox, Chrome, tutories SVN, Spring STS ..
후아~ 꽤 많은 공개SW 사용하고 있네요.

많은 SW들이 PC를 재설치할 때마다 지워지고 삭제되고를 반복하는 가운데, 여전 저의 데스탑에서 오랫동안 살아남았으며, 지금도 즐겨 사용하고있는 공개SW는 WinSCP가 아닐까 합니다. 오늘은 WinSCP를 한번 살펴보겠습니다.

WinSCP 소개


요 즘은 대부분의 리눅스 서버에서 보안상 취약한 telnet,ftp를 사용하지 않고 ssh 서버를 운영합니다. ssh는 암호화된 패킷을 송수신하기 때문에 보안상 유리하고, scp 를 통한 파일전송도 가능하기 때문에 대부분의 리눅스 서버에 기본으로 사용하고 있습니다.

CLI 환경을 사랑하는 파워유저들에게는 껌정화면에 흰글씨가 아름다워 보이겠지만, 초급자에게는 ssh 접속과 파일관리가 만만한 일이 아닙니다. 내 컴퓨터의 파일하나를 원격지 리눅스서버에 전송하는것도 큰일이죠.
이런 경우에 바로 WinSCP를 사용할 수 있습니다.



WinSCP는 윈도우환경에서 GUI환경으로 FTP, SSH, SFTP 를 사용가능한 클라이언트 프로그램으로서 저의 데스크탑에서 가장 유용하게 사용하는 공개SW입니다. WinSCP를 이용해서 윈도우 탐색기처럼 원격지 서버와 파일을 쉽게 송수신 할 수 있고, 원격지의 파일을 손쉽게 편집도 가능합니다.



설치하기

1) 브라우저로 http://winscp.net/eng/download.php 에 접속합니다
2) 맨 위쪽에서 최신버전의 ‘Installation package’ 를 클릭하여 파일을 다운로드 합니다
3) 다운로드 받은 파일을 클릭하여 일반적인 윈도우 프로그램 설치과정과 동일하게 설치합니다.

한글지원여부)
최신버전의 파일을 다운로드 받으시면 WinSCP의 한글 버전을 사용할 수 있습니다.
프로그램 설치 시작 시 “한국어” 를 선택할 수 있으며, 프로그램의 한국어 버전이 설치됩니다.

만약 설치 프로그램에서 “한국어”를 선택할 수 없다면,
먼저 영문 설치 버전을 설치한 다음 아래의 translation page로 가서
“Korean” 언어팩을 다운로드 받아서 WinSCP가 실행되는 디렉터리에 ZIP 압축 파일을 풉니다.
translation page : http://winscp.net/eng/translations.php


특징


WinSCP는 영어뿐 아니라 한글을 포함한 다국어를 지원하는 GUI기반의 공개SW로서
많은 특징을 가지고 있습니다. 이미지와 함께 WinSCP의 많은 특징들을 한가지씩 이야기 해보겠습니다.

1) WinSCP를 이용해서 드래그 앤 드롭으로 원격 서버에 파일을 송수신 할 수 있습니다.



2) 바탕화면에 바로가기 아이콘을 생성해서 원클릭으로 서버접속이 가능합니다.



3) SSH-1과 SSH-2를 통한 SFTP 및 SCP 프로토콜 지원. 기존 FTP 프로토콜을 지원합니다



4) 배치파일을 통한 스크립트 실행과 CLI를 지원합니다.



5) 원격지 디렉토리와 PC의 디렉토리 간 동기화를 지원합니다.



6) 자주 쓰는 편집기를 등록해서 서버의 파일을 바로 수정할 수 있습니다.



7) 암호 입력 방식과 공개 키 인증방식을 지원합니다.

 


8) Windows 탐색기 및 Norton Commander 형태의 인터페이스 지원




고급활용


1. 에디트플러스와 WinSCP를 이용한 원격지 서버의 파일 직접수정

EditPlus는 프로그램 편집기로서 아주 강력하지만 ssh 기능이 없으므로 작업하는 도중
원격지의 서버에 파일관련 명령을 실행하기에는 불편합니다. 텍스트 편집기에게 이것저것 다 요구하는것은 너무 많은것을 바라는 것이겠죠?

이때 EditPlus를 WinSCP와 함께 사용하면 원격지의 서버를 윈도우의 탐색기처럼 브라우징 할 수 있고, 서버의 파일을 직접 열어서 항상 사용하는 편집기로 빠르게 편집할 수 있습니다.
물론 텍스트편집기의 원격서버 접속기능을 이용할 수 도 있지만, WinSCP와 함께 사용하면 좀 더 직관적인 인터페이스를 제공하므로 초보자도 리눅스 서버에 쉽게 접속해서 파일 수정이 가능합니다.




2. 디렉토리 동기화


이 기능은 서버의 소스코드를 자신의 PC에 특정폴더와 동기하도록 설정한 다음, PC에서 소스코드를 수정하면 자동으로 원격서버에 반영되는 기능입니다.
자신의 PC안에 있는 파일을 수정하면 원격지에 자동으로 반영되기 때문에 마치 서버의 소스코드를 수정하는 것과 같은 효과가 있습니다.



3. 공개키 인증방식 사용

Putty를 설치하면 인증키를 생성하는 PuTTYgen 프로그램을 사용할 수 있습니다.
1) 프로그램을 실행시키고 ‘Generate’ 버튼을 누른 후 ‘마우스’를 움직이면 키가 생성됩니다.
2) ‘Save private key’ 버튼을 눌러서 파일로 저장했다가 나중에 WinSCP에서 사용합니다.
3) 비밀문구 없이 저장할지를 물어보는데 그냥 저장하겠다고 '확인'버튼을 누릅니다.
4) 붉은 사각형 부분을 긁어서 클립보드에 복사했다가, 원격서버의 /사용자홈/.ssh/authorized_keys 파일에 한 줄로 복사해넣습니다.
5) 아래 화면과 같이 저장한 개인키를 WinSCP 접속정보에 입력해 줍니다
6) 접속을 시도하면 공개키 기반의 인증을 사용하여 접속됩니다.


트러블슈팅


- UTF-8환경에서 한글이 깨어지는 경우에는, 로그인화면 > 환경 > 파일이름을 UTF-8 인코딩
이라고 표시된 부분을 '자동'에서 '사용'으로 변경하신 후 접속하시면 UTF-8 형식을 사용합니다.






참고자료 및 링크


WinSCP Manual - http://winscp.net/eng/docs/start
WinSCP 스크립트 명령실행 활용 - http://calmmass.tistory.com/49
WinSCP 디렉토리 동기화 - http://goo.gl/jZeFv
WinSCP User Manual - http://infotech.adelphi.edu/pdfs/WinSCP_usermanual.pdf


마치며

WinSCP 의 기능을 정리하면서 생각해보니, 진짜 필수적인 기능들을 많이 제공하는것을 새삼 알게되었습니다. 특히 디렉토리 동기화같은 기능은 상용 프로그램에서도 흔히 볼 수 없는 좋은 기능이고, 이런 좋은 SW를 공개한 개발자들에게 고마운 마음이 듭니다. 저도 공개SW를 사용하는 사용자의 입장에서가 아니라 실력을 좀 키워서 좋은 공개W를 만들어서 다같이 사용할 수 있었으면 좋겠네요.

Source : MySQL-Replication-Tutorial, MySQL Conference and Expo

Replication?

MySQL Cluster가 동기화 (synchronous) 리플리케이션과을 수행하는것과는 다르게, MySQL은 단 방향, 즉 비동기 리플리케이션 (asynchronous replication)을 지원합니다. MySQL Replication은 하나의 서버가 마스터로 동작하고, 나머지 한 개 이상의 다른 서버들이 슬레이브로 동작하여 마스터의 Binlog를 이용하여 슬레이브가 복제를 수행하고, Relay Binlog에 기록하는 기술을 의미합니다. 즉, 마스터의 MySQL을 슬레이브가 똑같이 복사해서 가지고 있는것이죠.

MySQL Replication은 데이터 백업의 용도뿐만 아니라, 데이터베이스에 대한 입출력을 각서버에 나누에 수행시켜 부하를 분산시키거나, 여러개의 마스터를 이용한 고가용성의 확보등에 사용됩니다.


준비사항

마스터, 슬레이브에서 사용하는 MySQL의 버전을 확인하여 가능한 동일한 버전으로 일치시키는 것이 좋으며, 마스터보다는 슬레이브의 버전이 높아야 안정적인 작동을 보장합니다.
MySQL 이중화 상태에서 Replication Fail Bug 에 대한 최근의 자료(http://goo.gl/fSlxb)를 보면 PK가 없는 테이블의 Null값을 업데이트 하는 경우 Replication이 실패하는 경우가 있다고 하니, 버그가 해결된 최신버전을  업데이트한 후 사용하시기를 권고합니다.

CentOS 5.5 에서 MySQL 5.5.15 설치방법
1) Install Remi repository
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

2) Check Available MySQL versions
yum --enablerepo=remi,remi-test list mysql mysql-server

3) Install MySQL
yum --enablerepo=remi,remi-test install mysql mysql-server


Master 에서 준비할 일

1) my.cnf 파일에 마스터의 설정 추가
server-id = 고유한상수값
binlog-do-db = 복제할 원본 DB명 A
binlog-do-db = 복제할 원본 DB명 B
binlog-ignore-db = 복제하지않을 원본 DB명 A
binlog-ignore-db = 복제하지않을 원본 DB명 B
log-bin = Binlog 파일명

예)
server-id = 1
binlog-do-db = testdb
log-bin=mysql-master-bin

2) 슬레이브에서 Replication을 위해 접속할 유저를 생성하고 권한부여
CREATE USER '사용자아이디'@'접속을 허용할 호스트주소' IDENTIFIED BY '사용자비밀번호';
GRANT REPLICATION SLAVE ON *.* TO '사용자아이디'@'접속을 허용할 호스트주소';

예)
mysql> CREATE USER 'repl_user'@'%' IDENTIFIED BY 'abc1234';
mysql> grant replication slave on *.* to 'repl_user'@'%' identified by 'abc1234';


3) 슬레이브에 적용할 데이터베이스의 스냅샵 덤프파일 준비
mysqldump -u root -p db명 > 파일명.sql

예)
mysqldump -u root -p testdb > testdb.sql


Slave 에서 준비할 일

1) my.cnf 파일에 슬레이브의 설정 추가
server-id = 고유한상수값
relay-log = Relay Binlog 파일명

예)
server-id = 2
relay-log = slave-relay-bin

2) master에서 덤프한 파일을 임포트
마스터에서 미리 덤프한 파일을 슬레이브로 복사하고, 그 파일을 이용하여 슬레이브의 MySQL DB에 임포트합니다.
mysql -u root -p db명 < 파일명.sql

예)
mysql -u root -p testdb < testdb.sql

3) 마스터에 대한 설정
MySQL 콘솔창에서 마스터의 호스트주소, 사용자명, 비밀번호, Binlog 파일명, Position 등을 아래와 같이 설정합니다.
(이때 사용하는 Binlog 파일명과 log position의 값은 마스터의 MySQL을 재시작하고, show master status 명령으로 확인합니다.)


mysql> CHANGE MASTER TO
    ->     MASTER_HOST='master_host_name',
    ->     MASTER_USER='replication_user_name',
    ->     MASTER_PASSWORD='replication_password',
    ->     MASTER_LOG_FILE='recorded_log_file_name',
    ->     MASTER_LOG_POS=recorded_log_position;

예)
mysql> change master to
    ->     master_host='192.168.10.10',
    ->     master_user='repl_user',
    ->     master_password='abc1234',
    ->     master_log_file='mysql-master-bin.000004',
    ->     master_log_pos=640;


결과 확인

이제 모든 설정을 마쳤으니, 마스터와 슬레이브의 MySQL 서버를 재구동 해주시고. 정상적으로 작동하는지 확인을 위하여 아래의 방법을 사용합니다.

1) 마스터의 상태확인을 위해서 아래의 명령을 이용합니다.
show master status;


2) 슬레이브의 상태확인을 위해서 아래의 명령을 이용합니다.
show slave status\G


모니터링

MySQL Replication을 구성하고 난 후, 정상작동여부를 모니터링하여 마스터와 슬레이브의 내용이 다른 경우 메일로 통보받는 것이 가능합니다. 아래 링크의 SW는 마스터의 Binlog와 Position을 가져와서 슬레이브의 상태와 비교하고 같지않은 경우에 메일로 통보하는 로직으로 구현된 SW입니다.

http://forge.mysql.com/tools/tool.php?id=6
http://datacharmer.blogspot.com/2011/04/refactored-again-poor-mans-mysql.html



고급활용

MySQL의 5.x대에 들어오면서 Replication은 row-based, semi-synch, delayed, Circular,  Master-Master Replication, SSL Turnnel, Proxy 등의 다양한 고급활용이 가능합니다. 고급활용에 대한 상세한 내용은 이번 글에서 다루지 않으니, 아래에 제시한 참고자료의 링크를 이용하시기 바랍니다.


참고자료



어제 지인과 식사도중 개발자의 실력에 대한 안철수씨의 강연내용 이야기가 나왔습니다. (이런 주제를 이야기 할 수 있는 지인이 있다는건 참 행복한 일이죠)

“현대는 한 사람의 천재가 모든 것을 할수 있는게 아니라 한 사람이 못할 일을 여러 전문가가 함께 모여 만들어가는 시대다”며 “전문가의 실력은 전문 지식 곱하기 커뮤니케이션 능력이다”

Source : “고단한 SW개발자 생태계, 그래도 희망은 있다” - http://goo.gl/i12Z7

전문지식 곱하기 커뮤니케이션 능력이 실력이라니~
개발자는 제대로된 기능을 만들기도 벅찬데, 커뮤니케이션 능력도 배양해야 한다니 쉬운일이 아닙니다.
게다가 현업에서 보면 A개발자와 B영업간에 "뭔 말이 통해야 말을하지~" 하는 푸념을 종종 듣습니다.
하지만, 대부분의 개발자는 자신이 커뮤니케이션 능력이 부족하다고 생각하지 않습니다. 상대방이 논리가 빈약하고 실체가 없는 모호한 대화방식이 아니라, 좀 다른 대화방식으로 이야기하기를 바라는것 뿐이죠 :-)

그럼 개발자와 대화를 이끌어내기 위해서는 어떻게 해야할까요?

얼마전 트위터에서 웃음을 자아냈던 공대생 남친 관리법(http://goo.gl/qvBUC)에서도 보이듯이, 개발자는 개발자스러운 대화방식으로 접근해야 커뮤니케이션이 가능합니다. 개발자는 자신이 이해가능한 합리적인 결과물에 대해서는 큰 이견을 제시하지 않는다는 특성을 가지고 있죠. 꼭 개발자가 아니라도 합리적 내용물을 기반으로 이야기하면 쉬운 대화가 가능합니다.

제 생각에 개발자와 대화하기 가장 좋은 방법은 애자일 실천법 중 하나인 CTIP(Continuous Test & Intergration Platform) 라고 생각됩니다. 지난 몇년간 Agile 기법에 대한 학습과 현업에서 적용결과, 저는 애자일의 핵심이 사람과의 소통인것을 얼마전에야 깨닫게 되었습니다.

혼자 개발하는 문화에 익숙한 개발자는 무엇인가 함께 만들어야만 하는 상황을 만나면, 구성원간 커뮤니케이션에 어려움을 겪습니다. 이때 CTIP를 통한 정적분석도구를 활용한 결과물과 코드커버리지, 그리고 이슈관리도구를 통하여 문제점을 가시화하고 합리적 결과에 기반한 개발자와의 대화를 시도하면 SW개발자와의 쉬운 대화가 가능합니다.

저는 SW개발의 생산성을 향상시키기 위한 최선의 방법은, 좋은 개발문화를 형성하여 개발자간 커뮤니케이션능력을 배양하고, 협업을 통한 시너지가 창출될 수 있도록 유도해주는 것이라고 생각합니다.


Source : 2011 한국소프트웨어 아키텍트 대회
<지속적 테스트와 통합을 위한 SW개발 아키텍처>


<이슈관리시스템을 통한 문제제기>


<위키를 이용한 문서협업>




<SW개발을 위한 공개SW 기반의 지속적 테스트와 통합 아키텍처>


그리고, Agile 2011 Conference가 8월6일 열린다고 합니다. http://pragmaticstory.com/1776 에 트랙에 대한 설명을 해주셨네요. 언젠가는  가 볼 기회가 있겠죠?  :-)

메일링으로 도착한 정보를 읽다가 공개SW 사용기 공모전 (http://www.oss.kr/7777) 을 하는것을 보았습니다.

참여한 글의 수가 생각보다 많은것을 보고 사람들의 관심이 높아진것 같고 공개SW역량프라자에서 많은 일을 하는구나 하는 생각으로 사용기를 쭈욱 읽어보았습니다. 그런데 사용기를 제출한 몇몇분들의 글을 보니, 공개SW와 프리웨어를 구분하지 않고 쓴것들이 보입니다. (오픈캡처, smmemo 같은 SW는 프리웨어죠)



2004년 이후로 공개SW라는 단어를 산업계에 이해시키기 위해서 많은 노력을 해왔기 때문에, 이제 공개SW라는 단어가 제법 많이 알려진 상태입니다.
하지만 공개SW란 비용의 관점이 아니고 소스코드의 관점에서 해석되는 단어임에도 불구하고, 많은 사람들이 아직도 공개SW라는 단어를 비용의 관점에서 해석해서 공짜SW로 이해하고 있는경우를 만납니다.(http://www.opensource.org/docs/definition.php)


source - http://goo.gl/57lKP

여전히 공개SW는 무료인가요? 라는 질문을 종종 받습니다.

공개SW라는 단어의 정의를 재차 설명해야 하는 경우가 많다는 사실을 보면
Open Source Software라는 단어의 현지화 과정에서 무언가 잘못된 것은 아닐까 하고 생각해봅니다.

SW를 분류할때 비용의 관점에서 보면 Freeware, Shareware, ADware, Commercial Software 등으로 나누어지고,
소스코드의 공유관점에서 보면 Open Source Software, Close Source Software 로 나눌수 있습니다.

그런데 'Open Source Software'를 현지화하면서 '공개SW' 라고 이름지었고,  그 과정에서 'Source'라는 키워드가 사라진것으로 인해 소스코드관점인지, 비용관점인지 모호해졌고, 그 때문에 Open Source Software, Freeware, Shareware에 대한 식별이 어려워진건 아닐까요?

공개SW라는 단어가 소스코드의 관점이라는 사실이 직관적이지 않으니,  그냥 OSS(Open Source Software)라고 사용한다면 좀더 이해하기 쉽지 않을까요?


참고

freeware
- 프리웨어(공개 소프트웨어)는 금전적인 지불 없이, 제작자가 무료로 사용할 수 있도록 배포하는 프로그램을 말합니다.

shareware
- 쉐어웨어도 무료로 사용이 가능하나, 일정 기간동안만 사용하도록 정해진 프로그램입니다.  만약 계속 이용하고 싶다면, 프로그램을 구입하여 이용할 수 있습니다.

Open Sorce software
- 오픈소스는 소스 코드에 대한 접근이 허용돼 공통적으로 합의된 규칙에 따라 누구나 쉽게 사용할 수 있고, 제 3자에 의한 수정 및 배포가 가능합니다.

The Open Source Definition
- http://www.opensource.org/docs/definition.php

The Open Source Definition 번역본(2002)
- http://korea.gnu.org/people/chsong/copyleft/osd-korean.html

The Open Source Definition 번역본(2006)
- http://goo.gl/ySlpA

데비안 자유 소프트웨어 지침(DFSG, Debian Free Software Guidelines)  번역본
- http://goo.gl/GgXFs




Nice Subversion Repository Browser

개요


소스코드 버전관리를 위해서 svn을 많이 사용하고 계시죠?

이번에 소개하는 sventon은 소스코드 버전관리를 위해서 subversion을 사용하는 경우, 코드 저장소를 웹기반으로 탐색할 수  있도록 도와주는 공개SW 입니다. sventon은 java로 작성되어 war파일만 구동가능하면 되기 때문에 다른 웹기반 svn 저장소 브라우저들에 비해서 설치가 간단하고, 사용하기도 좋으니 svn web client를 고민하고 계시다면 사용해 보시기 바랍니다.





설치 및 환경설정

1) sventon website - http://www.sventon.org/




2) 다운로드
- 최신의 배포파일을 다운로드 받아서 압축을 해제하는 것으로 설치준비가 모두 끝납니다.



3) 압축해제

- sventon은 java war파일로 배포되기 때문에 war를 구동할 수 있는 was가 필요합니다. 저는 tomcat을 사용하도록 하겠습니다.  압축을 해제하면 아래와 같은 내용이 있습니다.




4) 설치
- 압축해제한 파일 중 svn.war 파일을 tomcat 루트(webapp)안에 복사해두고 tomcat을 재시작 하시거나, 또는 tomcat manager로 war파일을 배포하시면 war파일이 context로 자동 배포됩니다. 설치는 이것으로 끝입니다.




5) 설치확인 - 재시작 후 http://yourdomain:8080/svn/ 경로로 접근하면 초기설정이 가능한 화면을 만나게 됩니다.

<sventon 초기 설정화면>


<sventon repository 선택>


<svn에 접근가능한 계정으로 로그인을 요구하는 로그인 화면>



주요기능
- svn의 상태를 웹기반으로 제공
- diff 기능
- 여러개의 코드 저장소 지원
- zip파일로 코드 다운로드 지원


메인화면에서 아래에 표시한 붉은색 부분을 클릭하면 수행가능한 명령이 나타납니다.



<소스코드저장소 변경>



메인화면 오른쪽하단의 drag&drop tray를 이용하면 드래그한 파일들끼리 비교하거나 zip파일로 다운로드 가능합니다.





기타활용 - hudson plugin

hudson 과 sventon 연동을 하면 더육 효과적입니다.

1) hudson의 configure 화면에서 아래 이미지처럼 Source Code Management -> Repository browser -> sventon 2.x 으로 설정하고, URL에 설치한 sventon의 주소를 입력합니다.  (ex. http://yourdomain:8080/svn/)


2) Repository Instance (ex. 생성한 프로젝트명)
저장소에 생성한 프로젝트명을 입력합니다.

3) 환경설정을 저장 후 , 허드슨가서 build now를 클릭하시고, 변경된 히스토리를 확인합니다.
(프로젝트 -> Changes -> sventon 2.x 에서 확인)


history에서 Sventon 2.x를 클릭하시면 아래와 같은 sventon의 화면을 만날수 있습니다.




diff의 결과를 시각적으로 확인가능합니다.



svn client 기능비교
이 외의 다양한 Subversion Repository Browser 들에 대한 비교자료는 아래링크를 참고하세요.
http://en.wikipedia.org/wiki/Comparison_of_Subversion_clients

PC 정리중에 발견한 오픈소스의 이해를 돕는 자료 "Revolution OS" 입니다.
이전에 상영회도 몇번 있었던 자료라서 보신분이 많을지도 모르지만,
이제껏 이자료처럼 정확하게 오픈소스와 리눅스에 대해서 이야기하는 자료는 없었던것 같네요.


리눅스란 무엇인가?
오픈소스란 무엇인가?
오픈소스는 공짜인가?
어떻게 비지니스해야하나?
이런 고민들에 대하여 한번 더 생각 해보게 만드는 자료입니다.

한글자막 입혀서 변환했습니다. 꼭 보시길 추천드립니다.(85분이라 좀 길긴 하죠^^)






'오픈소스SW' 카테고리의 다른 글

트위터 가이드 - 트위터 초보자를 위한 정보  (0) 2010.08.24
공개SW 홍보 동영상  (0) 2010.08.21
한국의 공개SW 생태계에 대한 이해  (0) 2010.08.15
공개SW CMS Drupal  (0) 2010.07.24
MySQL Transaction  (0) 2010.07.14

+ Recent posts