2016년 12월 16일, ONOS/CORD 워킹 그룹 2차 세미나 (URL: http://onoffmix.com/event/84937/ )에서 발표한 내용입니다.
오픈스택 한국 커뮤니티에서 진행 중인 업스트림 컨트리뷰션 스터디 내용을 Github 및 ONOS와 같은 다른 오픈 소스 개발 워크플로우와 비교하면서 Gerrit을 활용한 워크플로우를 설명하였습니다.
01 Docker란 무엇이며, 왜 필요한가?
02 Docker의 핵심 개념과 용어
03 Do(ckerize) it yourself
Docker란?
애플리케이션을 개발(developing)하고, 배포(shipping)하고, 실행(running)하기 위한 Open Platform
OS-level Virtualization(Linux Container)를 제공하기 위한 구현 제품.
애플리케이션과 인프라스트럭처의 의존관계를 분리할 수 있는 방법
가상머신(Virtual Machine)의 단점을 극복할 수 있는 리눅스 컨테이너 기술의 구현
Docker Client : 명령어를 통해 Docker Daemon에 API를 호출하여 Docker Image와 Container를 관리할 수 있는 프로그램
Docker Daemon : Docker API 요청을 수신하여 Docker Object(Image, Container, Network, Volue 등)를 관리할 수 있는 프로세스
Docker Registry : Docker Image를 저장하고 관리하는 공간. Public Registry(ex. Docker Hub)와 Private Registry가 있음.
Dockerfile : Docker Image를 빌드하기 위한 정보 및 명령어가 작성된 파일 (Docker Image를 생성하는 방법 중 하나)
Docker Image : Dockerfile, Docker Registry, 또는 다른 Docker Image로부터 생성된 컨테이너 생성을 위한 Read-only Template
Docker Container : Docker Image 위에서 실행된 특수한 형태의 격리된 프로세스
2016년 12월 16일, ONOS/CORD 워킹 그룹 2차 세미나 (URL: http://onoffmix.com/event/84937/ )에서 발표한 내용입니다.
오픈스택 한국 커뮤니티에서 진행 중인 업스트림 컨트리뷰션 스터디 내용을 Github 및 ONOS와 같은 다른 오픈 소스 개발 워크플로우와 비교하면서 Gerrit을 활용한 워크플로우를 설명하였습니다.
01 Docker란 무엇이며, 왜 필요한가?
02 Docker의 핵심 개념과 용어
03 Do(ckerize) it yourself
Docker란?
애플리케이션을 개발(developing)하고, 배포(shipping)하고, 실행(running)하기 위한 Open Platform
OS-level Virtualization(Linux Container)를 제공하기 위한 구현 제품.
애플리케이션과 인프라스트럭처의 의존관계를 분리할 수 있는 방법
가상머신(Virtual Machine)의 단점을 극복할 수 있는 리눅스 컨테이너 기술의 구현
Docker Client : 명령어를 통해 Docker Daemon에 API를 호출하여 Docker Image와 Container를 관리할 수 있는 프로그램
Docker Daemon : Docker API 요청을 수신하여 Docker Object(Image, Container, Network, Volue 등)를 관리할 수 있는 프로세스
Docker Registry : Docker Image를 저장하고 관리하는 공간. Public Registry(ex. Docker Hub)와 Private Registry가 있음.
Dockerfile : Docker Image를 빌드하기 위한 정보 및 명령어가 작성된 파일 (Docker Image를 생성하는 방법 중 하나)
Docker Image : Dockerfile, Docker Registry, 또는 다른 Docker Image로부터 생성된 컨테이너 생성을 위한 Read-only Template
Docker Container : Docker Image 위에서 실행된 특수한 형태의 격리된 프로세스
퍼펙트스톰 : 연결의 진화가 만드는 새로운 플랫폼 시대.
유선 인터넷에서 무선 인터넷으로, 그리고 사물 인터넷으로 연결은 끊임없이 진화하고 있습니다. 미래기술 전략가이자 사물 인터넷 전문가인 매직에코 최형욱 대표는 퍼펙트 스톰이라는 파괴적 기술의 진화가 불러온 새로운 플랫폼과 패러다임의 변화가 미디어와 저널리즘에 어떤 영향을 미칠 것인가를 분석하고 전망합니다.
http://www.mediatoday.co.kr/news/articleView.html?idxno=124292
Tizen is an open source, standards-based software platform supported by leading mobile operators, device manufacturers, and silicon suppliers. It can be used for multiple computing platforms including smartphones, In-vehicle infotainment (IVI), smart TV, notebooks, tablets, and more. In this session, we will outline the vision and goals of the project, and give pointers to the technical details, architecture and building blocks needed to develop Tizen OS based solutions. We'll also give you an understanding of the native and Web/HTML5 based development environment offered by Tizen.
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
마이크로서비스로 시스템을 구성하면 서비스간에 연관관계가 줄어들면서 서비스 릴리즈 속도가 높아지고 유연하게 대처할 수 있지만, 관리포인트가 늘어나게 되어 운영상에 많은 어려움을 마주치게 됩니다. 배포 될 때마다 생성되고 소멸되는 마이크로서비스를 다른 마이크로서비스가 쉽게 참조하게 하고 마이크로서비스들의 설정 정보를 일관되게 관리하는 일은 쉬운일이 아닙니다. 이러한 문제를 해결하기 위해 Spring Cloud 프로젝트와 같은 도구를 비롯하여 Pivotal Cloud Foundry와 같은 클라우드 플랫폼등이 있습니다. 이번 밋업에서는 마이크로서비스를 운영할 때의 어려운점과 도움을 주는 다양한 도구들에 대해 알아보도록 하겠습니다.
이 발표는 [야생의 땅: 듀랑고]의 지형 배포 시스템과 생태계 시뮬레이션 자동화 시스템에 대한 이야기를 다룹니다. 듀랑고의 각 섬은 크기와 지형, 기후 조건이 다양하고 섬의 개수가 많아서 수동으로 관리하는 것은 사실상 불가능합니다. 몇번의 사내 테스트와 베타 테스트를 거치면서 이러한 문제를 해결해주는 자동화된 도구의 필요성이 절실해졌고, 작년에 NDC에서 발표했던 생태계 시뮬레이터와 Docker, 그리고 아마존 웹서비스(AWS)를 이용하여 수많은 섬들을 자동으로 생성하고 관리하는 자동화 시스템을 구축하게 되었습니다. 그 과정에서 했던 고민들, 기존의 애플리케이션을 "Dockerizing" 했던 경험, AWS의 각 서비스들을 적절히 활용했던 이야기, AWS의 각 지역별 요금이 상이하다는 점을 이용해서 비용을 절감한 사례, 그리고 자동화 시스템의 문제점과 앞으로의 방향에 대해서 이야기 할 계획입니다.
2017년 4월 출시된 최신 RAD스튜디오 10.2 도쿄 버전의 최신 기술들을 정리한 문서입니다.
개발 성능 향상, 최신 OS지원, 새로운 개발 영역(클라우드, IoT 등)으로의 손쉬운 확장 등.
개발자들에게 복잡할 수 있는 기술들을 간편하게 적용할 수 있는 RAD스튜디오의 기술과 활용팁 입니다.
퍼펙트스톰 : 연결의 진화가 만드는 새로운 플랫폼 시대.
유선 인터넷에서 무선 인터넷으로, 그리고 사물 인터넷으로 연결은 끊임없이 진화하고 있습니다. 미래기술 전략가이자 사물 인터넷 전문가인 매직에코 최형욱 대표는 퍼펙트 스톰이라는 파괴적 기술의 진화가 불러온 새로운 플랫폼과 패러다임의 변화가 미디어와 저널리즘에 어떤 영향을 미칠 것인가를 분석하고 전망합니다.
http://www.mediatoday.co.kr/news/articleView.html?idxno=124292
Tizen is an open source, standards-based software platform supported by leading mobile operators, device manufacturers, and silicon suppliers. It can be used for multiple computing platforms including smartphones, In-vehicle infotainment (IVI), smart TV, notebooks, tablets, and more. In this session, we will outline the vision and goals of the project, and give pointers to the technical details, architecture and building blocks needed to develop Tizen OS based solutions. We'll also give you an understanding of the native and Web/HTML5 based development environment offered by Tizen.
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
마이크로서비스로 시스템을 구성하면 서비스간에 연관관계가 줄어들면서 서비스 릴리즈 속도가 높아지고 유연하게 대처할 수 있지만, 관리포인트가 늘어나게 되어 운영상에 많은 어려움을 마주치게 됩니다. 배포 될 때마다 생성되고 소멸되는 마이크로서비스를 다른 마이크로서비스가 쉽게 참조하게 하고 마이크로서비스들의 설정 정보를 일관되게 관리하는 일은 쉬운일이 아닙니다. 이러한 문제를 해결하기 위해 Spring Cloud 프로젝트와 같은 도구를 비롯하여 Pivotal Cloud Foundry와 같은 클라우드 플랫폼등이 있습니다. 이번 밋업에서는 마이크로서비스를 운영할 때의 어려운점과 도움을 주는 다양한 도구들에 대해 알아보도록 하겠습니다.
이 발표는 [야생의 땅: 듀랑고]의 지형 배포 시스템과 생태계 시뮬레이션 자동화 시스템에 대한 이야기를 다룹니다. 듀랑고의 각 섬은 크기와 지형, 기후 조건이 다양하고 섬의 개수가 많아서 수동으로 관리하는 것은 사실상 불가능합니다. 몇번의 사내 테스트와 베타 테스트를 거치면서 이러한 문제를 해결해주는 자동화된 도구의 필요성이 절실해졌고, 작년에 NDC에서 발표했던 생태계 시뮬레이터와 Docker, 그리고 아마존 웹서비스(AWS)를 이용하여 수많은 섬들을 자동으로 생성하고 관리하는 자동화 시스템을 구축하게 되었습니다. 그 과정에서 했던 고민들, 기존의 애플리케이션을 "Dockerizing" 했던 경험, AWS의 각 서비스들을 적절히 활용했던 이야기, AWS의 각 지역별 요금이 상이하다는 점을 이용해서 비용을 절감한 사례, 그리고 자동화 시스템의 문제점과 앞으로의 방향에 대해서 이야기 할 계획입니다.
2017년 4월 출시된 최신 RAD스튜디오 10.2 도쿄 버전의 최신 기술들을 정리한 문서입니다.
개발 성능 향상, 최신 OS지원, 새로운 개발 영역(클라우드, IoT 등)으로의 손쉬운 확장 등.
개발자들에게 복잡할 수 있는 기술들을 간편하게 적용할 수 있는 RAD스튜디오의 기술과 활용팁 입니다.
2. 발표자
• 김윤수
• Tizen Platform Architect
• 전 삼성전자 무선사업부 수석 연구원
• Professional Tizen Application Development
저자 중 한 명
• “김윤수의 이상계를 꿈꾸며” 블로거
• http://yesarang.tistory.com/
2
7. 플랫폼이란?
• 기차역 플랫폼?
• 사람들이 기차를 타고 내리게
해주는 곳
• 컴퓨팅 플랫폼
• 컴퓨팅을 위해 사람들이 모이게 하는 곳
• Application 을 실행 가능하게 해주는 실행 환경
• 전통적으로 Hardware + OS + run-time libraries 를
뜻함
• 요즘은 Service + Open API 등까지 포함
7
8. 플랫폼 개발의 가치
• Application 을 실행 가능하게 해주는 실행 환경
• 하나의 Application이 많은 사람들에 의해 유용
하게 사용됨: Evernote, KakaoTalk, Facebook,
Browser, Office 등
• 플랫폼 개발이란 이런 Application을 개발 및 실
행 가능한 환경을 만들어 주는 것
• Internet & Web, Windows, iOS, Android 이후의
혁명적 변화 주목
8
9. 플랫폼 개발 참여의 길
• (졸업 후) 플랫폼 개발 회사에 취직?
• Microsoft, Google, Apple, Samsung, Amazon, LG,
RedHat, Ubuntu, openSUSE ?
• 한정된 선택지, 매우 좁은 관문
• 왜? 플랫폼은 매우 방대하고 복잡한 Engineering을 필
요로 함.
• 다른 방법은?
• Tizen과 같은 오픈 소스 플랫폼 프로젝트 참여
9
10. Closed vs Open 플랫폼
• Closed 플랫폼
• 특정 사람들에게만 App을 개발할 수 있는 환경(정보)
제공
• 그 옛날 mainframe OS, Classic Mac OS
• App 개발 조차도 한정되어 있음
• Open 플랫폼
• 누구라도 App을 개발할 수 있는 환경(정보) 제공
• DOS, Windows, Mac OS X, iOS
• App 개발은 자유로우나 플랫폼 기여는 거의 불가능
10
11. 오픈 소스 플랫폼
• Android, Tizen, Chrome OS, Firefox OS,
Fedora, Ubuntu, Gentoo, Open webOS 등
• 자유로운 App 개발뿐 아니라 플랫폼 기여
도 가능한 플랫폼
11
12. Android
• 가장 널리 알려지고 사용되고 있음
• 다양한 기기로 확대 중
• 그러나, 거의 모든 것을 Google이 Control
• 특정 버전에 적용된 나의 patch가 다음 버전에서 적
용되지 않고 버려질 가능성이 높음
• Google 내부 git에서 주기적으로 Android Open
Source Project(AOSP)로 dump 됨
• 실질적으로 Open Source가 아님
• Google Android 개발 부서 또는 Android
기기 제조사에 합류하고 싶다면 좋은 선택
12
13. Firefox OS
• Mozilla 재단
• 비교적 신생 플랫폼
• 약한 Industry Support
• 저가 스마트폰에 집중
• 잘 정의된 Open Governance Model 및 강
한 개발 Community
13
14. Chrome OS
• Google
• 비교적 신생 플랫폼
• Android와 달리 Open Governance Model
을 채택하고 있으나 Google의 영향력이 너
무 큼
• Web 기반의 Chromebook에만 집중
14
15. Fedora & Ubuntu & Gentoo
• 상용 플랫폼으로 활용되기에는 한계가 있음
• 강한 개발자 Community
• Open Governance Model
• 다양한 기기 및 Consumer 제품 적용의 한계
15
16. Tizen
• Linux Foundation 산하 공식 프로젝트
• 주 개발사: Samsung, Intel
• 신생 플랫폼
• 강한 Industry Support
• Tizen Association 19개 회원사
• 다양한 기기 적용을 목표로 함
• Web-centric 플랫폼
• 동시에 native app & hybrid app도 지원
• Tizen 3.0 이후로 Open Governance Model 채용
16
24. Native & Hybrid App 지원
Base/IO/Text/Locales
Graphics/UINet/Telephony/Messaging
UixLocationsSocial/Content Web/XmlMedia
App/Security/System Services
W3C/HTML5 Device APIs
Web Runtime
Video Touch
CSS3 WebGL
Worker
BT Call
LBS NFC
Msg… …
애플리케이션
웹 프레임워크
커널
코어 프레임워크
네이티브 프레임워크
Application
Framework
Graphics & UI Multimedia Web Messaging Location
Security System Base Connectivity Telephony PIM
Linux Kernel & device drivers
웹 애플리케이션 네이티브 애플리케이션
Public API
코어 애플리케이션
24
25. Native & Hybrid App 지원
25
• High Performance 및 Background Service
가 필요한 경우, Native App 또는 Hybrid
App으로 작성 가능
• Web-Centric Computing으로 발전하기 위
한 smooth migration path 로 작용
26. Open Governance Model
• Open Governance for Tizen 3.0
• Tizen Developer Summit Korea 2013 에서 발표
• http://events.linuxfoundation.org/sites/events/files/slides/Tizen
%20Development%20and%20Governance%20Model%20TDS%
2020131111.pdf
• “Moving Tizen from 'source-available' to truly o
pen source / collaborative”
• Feature roadmap through Features JIRA(https://bugs.tizen.org/j
ira/browse/PTF)
• API review through mailing list(tsg-arch-api@lists.tizen.org)
• Development discussion through dev@lists.tizen.org
• Code review through https://review.tizen.org/gerrit
32. Becoming a Developer(2/4)
• Configuring SSH for Gerrit Access
$ ssh-keygen
Enter file in which to save the key (/home/<User>/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
--> ~/.ssh/id_rsa.pub(public key) 파일도 생성됨
$ cat > ~/.ssh/config <<EOT
Host tizen review.tizen.org
Hostname review.tizen.org
IdentityFile ~/.ssh/id_rsa
User <The Above Account>
Port 29418
EOT
33. Becoming a Developer(3/4)
•Login to https://review.tizen/org/gerrit
Using the account in the previous page
•Your name on the upper right corner → Settings
→ SSH Public Keys → Add Key…
Copy & Paste all content of ~/.ssh/id_rsa.pub
33
34.
35.
36.
37. Becoming a Developer(4/4)
[ 여기까지 확인하는 방법 ]
$ ssh tizen
The authenticity of host '[review.tizen.org]:29418 ([198.145.20.13]:29418)' can't be esta
blished.
RSA key fingerprint is ca:5a:1d:6f:06:d4:ee:10:18:9f:b8:ef:ee:65:d5:fd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[review.tizen.org]:29418,[198.145.20.13]:29418' (RSA) to t
he list of known hosts.
**** Welcome to Gerrit Code Review ****
Hi Your Name, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://yourid@review.tizen.org:29418/REPOSIORY_NAME.git
Connection to review.tizen.org closed.
37
39. Installing Tools
$ sudo vim /etc/apt/sources.list
Add the following line
deb http://download.tizen.org/tools/latest-rele
ase/Ubuntu_14.04 /
$ sudo apt-get update
$ sudo apt-get install gbs mic lthor
39
41. Downloading Source(2/2)
Downloading all project for a specific profile
$ mkdir ~/bin/
$ PATH=~/bin:$PATH
$ curl http://commondatastorage.googleapis.com/git-repo-downl
oads/repo > ~/bin/repo
$ sudo chmod a+x ~/bin/repo
$ mkdir tizen
$ cd tizen
$ repo init -u ssh://<Username>@review.tizen.org:29418/scm/ma
nifest -b tizen -m mobile.xml
$ repo sync
41
42. Building Packages(1/2)
Checking out build configuration: vim ~/tizen/.gbs.conf
[general]
tmpdir=/var/tmp/
profile = profile.tizen3.0_mobile
work_dir=.
[repo.tizen3.0_x86]
url=${work_dir}/pre-built/toolchain-x86/
[repo.tizen3.0_arm]
url=${work_dir}/pre-built/toolchain-arm/
[profile.tizen3.0_mobile]
repos=repo.tizen3.0_x86,repo.tizen3.0_arm
buildconf=${work_dir}/scm/meta/build-config/build.conf
42
43. Building Packages(2/2)
l Building All Packages
l$ accel_pkgs="bash,bzip2-libs,c-ares,cmake,coreutils,dif
futils,eglibc,elfutils-libelf,elfutils-libs,elfutils,fdupes,file,fin
dutils,gawk,gmp,gzip,libacl,libattr,libcap,libcurl,libfile,libg
cc,liblua,libstdc++,make,mpc,mpfr,ncurses-libs,nodejs,ns
pr,nss-softokn-freebl,nss,openssl,patch,popt,rpm-build,r
pm-libs,rpm,sed,sqlite,tar,xz-libs,zlib,binutils,gcc“
l$ gbs build -A armv7l --threads=4 --clean-once --excl
ude=${accel_pkgs},filesystem,aul,libmm-sound,libtool
43
44. Submitting a Patch
$ cd <your_working_directory>
$ git add <your_change>
$ git commit
lGood commit messages
$ git push origin HEAD:refs/for/tizen
lCode review on gerrit
la patch will be merged on the following conditions:
lThe patch got at least one "+2" score and no "-2"
score in the Code Review category.
lThe patch got at least one "+1" score and no "-1"
score in the Verified category.
44
45. Submitting a Package to the Building Farm
$ gbs submit -c <Commit_ID> -m "<Comments>"
lTag: submit/$Tizen_Version/$(%Y%m%d.%H%M%S)
lIf the code change has already been merged by the Gerr
it, a merge request will be created and release engineers
will be notifed to review.
lIf the patch has not been merged in Gerrit, the backend
services will abort the operations and send email to the
patch owner, to notify that the patch needs to be re-sub
mitted after it is merged.
45
47. Flashing a Tizen image
$ sudo apt-get install lthor
l1 Boot the phone into download mode.
lMake sure the phone is powered-off.
lPress <volume down> + <power> keys simultaneously.
lThe phone will boot up and the download mode image
will be displayed on the phone.
l2 Connect the phone to the Linux PC with a USB cable.
l3 Flashing image
$ sudo lthor /path/to/tizen/image
47