OpenStack과 Open Source
이 시리즈의 포스트는 지난 17년 6월 26일 ~ 27일, 서울 인터컨티넨탈 코엑스 호텔에서 열린 KRnet 2017에서 보고 듣고 배운 것에 대해서 정리하는 시리즈입니다.
이번에 포스팅할 내용은 KRnet 2017, 첫째날 Tutorials 1에서 오픈스택 한국 커뮤니티 3대 회장을 맡고 계신 최영락 님께서 강연해주신 내용입니다.
1. OpenStack
a. OpenStack이란?
OpenStack은 클라우드 환경에서 컴퓨팅 자원과 스토리지 인프라를 셋업하고 구동하기 위해 사용하는 오픈 소스 소프트웨어 프로젝트의 집합이다.
OpenStack은 다음과 같은 다른 정의들도 있다.
공용(Public) 클라우드와 사설(Private) 클라우드 구축을 가능하게 하는 OSS(Open Source Software)
서버, 스토리지, 네트워크들과 같은 자원을 모두 모아, 이들을 제어하고 운영하기 위한 클라우드 OS(Operating System)
오픈 소스를 기반으로 클라우드를 구축하고 운용하고자 하는 오픈 소스 개발자, 회사, 사용자들이 주축이 되어 발전하는 커뮤니티
IaaS 형태의 클라우드 컴퓨팅 오픈 소스 프로젝트로 컴퓨팅, 스토리지, 네트워킹 자원을 관리하는 여러 개의 하위 프로젝트들로 이루어짐
b. Upstream & Downstream in OpenStack
많은 오픈 소스 프로젝트들은 업스트림과 다운스트림으로 이루어진다. 간단하게 말하자면, 업스트림은 실제 그 프로젝트의 오픈 소스에 직접 컨트리뷰션을 하는 것이고, 다운스트림은 업스트리머들이 만들어 배포한 패키지를 받아, 이를 활용 및 사용해보고 이에 대한 사용자 피드백과 비즈니스에 도입하는 행동을 의미한다.
Upstream Activity | Downstream Activity |
---|---|
개발 : 코드 컨트리뷰션 | 배포된 릴리즈 설치 & 사용 |
문서화 | 사용자 피드백 |
번역 | 비즈니스 도입 |
개발 항목 & 스펙 정의 | 유스케이스 & 이점 공유 |
버그 수정 | Marketing 메시지 & 전략 |
OpenStack 커뮤니티는 업스트림과 다운스트림에 대해서 서밋에서 둘다 다뤘는데, 이렇게 진행하다보니 업스트리머들이 개발에 대한 의논을 공유할 때, 다운스트리머의 피드백까지 동시에 받게 되니 어려움이 많아서 OpenStack 컨퍼런스와 서밋으로 분리하여 개최하게 되었다.
2. Open Source
a. Github
소스 관리를 할 수 있습니다. (git repository)
다른 사용자가 소스를 가져다가 작업할 수도 있습니다. (fork & pull request)
다른 사용자가 작업한 소스를 리뷰 및 코멘트할 수 있습니다. (pull request review)
리뷰 완료하면 병합 또한 가능합니다. (merge and / or rebase)
버그 등이 있을 때는 사용자의 피드백을 받을 수도 있습니다. (issues)
문서화 등을 위한 위키도 지원합니다. (wiki)
b. Open Source의 규모가 커지면...
1) 코드 리뷰의 중요성 : Gerrit
2) 이슈 및 기능 추적 : Launchpad, Jira
3) 자동 빌드 : Jenkins
4) 통합 인증 체계
case example 1 : openstackid
case example 2 : ONOS crowd
3. OpenStack 컨트리뷰션 워크플로우
a. 일반적인 컨트리뷰션 워크플로우
- 작업을 고릅니다. (버그, 단순 수정, 문서화, 구현)- 로컬 저장소 내에 새로운 브랜치를 만듭니다.- 코드 변경사항을 만듭니다.- 업데이트하고 테스트를 추가합니다. (단위, 기능 등)- 테스트를 실행합니다. (단위, 기능 등)- 커밋을 생성하고 리뷰를 위해 업스트림에 게시합니다.
b. Github 기반 워크플로우
c. OpenStack에서의 워크플로우
OpenStack Git Repository에 위치한 "Origin 저장소"에 위치한 작업 (버그, 단순 수정, 문서화, 구현)을 Local에 위치한 내 저장소로 Clone합니다.
Clone한 작업을 내 저장소에서 Branch 생성 후 작업을 합니다.
Local에 Commit합니다.
git-review로 gerrit에 push합니다.
Gerrit에서 Jenkins, Community member에 의한 review를 합니다.
Review를 반영하고 충돌을 해결합니다.
Gerrit에 위치한 Patch를 OpenStack Git Repository에 위치한 Origin 저장소로 Merge합니다.
d. 커밋 & 패치 업스트림
Jenkins 및 벤더 CI에서 패치를 리뷰할 것입니다.
커뮤니티 구성원이 패치를 리뷰할 것입니다.
이에 대한 코멘트에 응답을 합니다.
변경사항을 만들고 새로운 패치셋을 Push합니다.
Merge conflict를 해결합니다.
e. 프로젝트와 상호작용
IRC 채널에서 대화를 합니다.[1]
메일링리스트에서 프로젝트와 관련된 메일 스레드를 따라간 후 참여합니다.
정기 미팅에 참석하도록 합니다. (온라인 포함)
버그에 대한 제출 및 수정 과 구분을 합니다. (launchpad.net)
블루프린트와 스펙을 제출하고 이를 구현합니다.
f. 빠른 패치 / 기능 등 수용 관련
코멘트 기반의 토론
인내심을 갖습니다. :: 서로 다른 지역, 다른 공간에 있기 때문에 답변이 늦어질 수도 있다는 것을 알도록 합니다. 따라서 자신만의 주기를 갖는 것이 좋습니다.
의사소통을 합니다.
공동으로 협력하도록 합니다.
기억할 점 : 오픈 소스 커뮤니티에서는 여러분 자신보다 커뮤니티 내 여러 일정이 같이 고려되어 오픈 소스 활동이 이루어진다는 것을 압시다.
IRC 채널 : Internet Relay Chat. ↩
'IT > IT WIKI' 카테고리의 다른 글
[Wiki] Docker(도커) 컨테이너 내부의 로그 보기(log) (0) | 2017.10.19 |
---|---|
[Wiki] docker(도커) 컨테이너에 ssh로 접속하기 (0) | 2017.09.16 |
[Wiki] Container(컨테이너)란? ("WTF is a container" 아티클 번역) (0) | 2017.09.01 |
[Wiki] 대표적인 포트 목록과 개수 (0) | 2017.06.17 |
[README] Tesseract - OCR을 이용하여 문자 인식 학습 하기 (10) | 2017.02.23 |