2014년 11월 2일 일요일

MeetBSD CA 2014 참석기

MeetBSD는 세계적으로 열리는 BSD사용자의 모임입니다. 심각한 회의라기 보다는 각자 가벼운(또는 무거운) 주제로 발표 하고 사용자 간의 커뮤니케이션을 하는 행사입니다.

MeetBSD CA는 주로 실리콘밸리 지역에서 열리는데 2010년에 Hacker Dojo 에서 열린 행사에 참석한 적이 있습니다만 딱히 재미는 없었는지라... 2012년은 참석 못하였고, 이번 2014년 행사는 San Jose 남쪽에 있는 Western Digital (네 하드드라이브 만드는 그 회사) 사무실에서 열렸습니다.


일정은 이틀간 오전에 세션 두개 오후에 세션 두개 그리고 언컨퍼런스 형식으로 이루어집니다.

첫째날 - 11/1/2014

 

Rick Reed, “WhatsApp: Half a billion unsuspecting FreeBSD users” 

첫 세션은 WhatsApp 입니다. WhatsApp 은 최근의 여러 IT 서비스 중에서 FreeBSD로 돌아가는 가장 큰 예라고 할 수 있겠습니다. 약 6억 정도의 가입자가 있다고 하네요. 아무래도 창업자가 야후! 출신이라는 점도 작용하였을 것 같습니다만.

처음에는 오픈소스의 XMPP서버를 이용하여 서비스를 만들다가 이후에 erlang 기반의 독자 구현으로 옮겨 갔다고 합니다. OS는 FreeBSD 7 에서 시작하였다가 지금은 FreeBSD 9.1 ~ 9.3 을 사용하고 있고 10은 아직 테스트 중이라고 하네요. 서버는 약 800대 (채팅 및 사진/비디오 서버 포함)라고 합니다. 규모에 비해서는 단촐해 보이는데 서버를 꽤 한계까지 끌어서 쓰고 있는 것으로 보입니다. 동접이 140m (1.4억) 이라고 하니까 어마어마하군요.

재미있었던건 Q&A시간에 누가 설정관리 도구를 어떤 걸 쓰는지 물어 보았었는데 (흔한 대답은 puppet, chef, ansible, saltstack 같은 것입니다만) 딱히 쓰고 있지는 않고 make? 라고 하더군요 :) 서버가 몇대 안되는 관계로 (대당 open file 개수가 수백만인걸로 유명하니) 거의 수동 관리하고 있다고. 테스트도 대부분 1대 서버 정도를 실제 업데이트해 보고 문제 생기면 바로 롤백한다고 합니다. 규모에 비해서는 좀 심심한 대답이더군요. 누가 암호화에 대한 걸 물어 봤었는데 저장까지는 듣지 못했지만 초기에는 SSL을 적용 했다가 round trip 문제로 AES기반으로 별도 프로토콜을 정의해서 쓴다고 합니다. 그래도 SSL이 쓰이는 곳에 대해서는 erlang 의 SSL구현은 그리 좋지 않아서 stud 를 쓰고 있다고 합니다.

Jordan Hubbard, “FreeBSD: The Next 10 Years”

jkh 의 세션이었는데, 올해로 21년을 맞은 FreeBSD를 뒤돌아 보면 처음에는 지금의 모습에 대해서 예상하지 못한 것들이 많이 있었다고 하는군요. 따라서 앞으로 10년을 예상하는건 매우 힘들지만, 최대한 레고 블럭과 같이 조립 가능하고 유연한 OS가 되어야 하지 않을까 하는 아이디어들을 몇 이야기 했습니다. 그 중의 하나가 시스템을 정의할 수 있는 하나의 설정 파일인데, 이런 아이디어들이 대부분 OS X에서 구현되어 있다는 건 재미있는 일이더군요 (launchd 나 plist 구조 등).

사실 유닉스(의 변종)이 현재의 모바일 기기를 지배하고 있는 것이 현실이므로 (안드로이드나 iOS나 모두 유닉스 기반 입니다) FreeBSD도 그것에 맞추어 변화 하는 것이 맞겠죠.

Alex Rosenberg, "Meet PlayStation 4" 

SCE에서 나와서 발표 하였는데, PS4는 FreeBSD커널 기반으로 만들어져 있습니다. 하드웨어가 x86 기반이기도 하고요. 물론 FreeBSD가 그대로 부팅하는 것은 아니고, 커널 부팅 이후에는 일반적인 유닉스 부팅 순서를 따르는게 아니라 그 이후에는 매우 독자적인 방식이라고 합니다. 게임콘솔에서 필요한 기능을 맞추기 위해서 CPU스케줄러 등도 일부 변경 하였다고 하네요. 개발 환경도 clang 등을 사용할 수 있게 되어서 개발자 들에게 호평이라고 하는데... 게임개발자들은 대부분 윈도우 기반 개발자들이라, 비주얼스튜디오용 clang 플러그 인 등 개발자를 위한 배려가 상당히 되어 있는 것으로 보입니다. 영상을 몇 틀어 주었는데 언차티드4는 그렇다 치고 테슬라가 주인공인 게임은 좀 재미있어 보이더군요 :) (찾아보니 The Order: 1886 이군요) PS3시대와는 달리 모두 실기에서 바로 캡처하였다는 걸 강조하는 점이 재미 있었습니다. 그리고 이런류의 하드웨어는 기본적으로 10년을 보고 만들기 때문에 게임기 수명의 후반이 되면 게임개발자들이 기계를 철저하게 분석해서 생각도 못해본 품질의 게임을 만들어 낸다고 합니다. 가령 지금의 PS3같은 상황이겠죠.

디스크 뽀개기(?) 행사

FreeBSD 기반의 FreeNAS 스토리지를 만드는 iXsystems에서 나와서 하드 4개 x NAS 두개가 연결된 디스크에서 직접 FreeBSD를 빌드 하면서 디스크를 하나씩 빼보는 (8개 있으니까 구성에 따라 다르지만 7개까지는 뺄 수 있겠죠) 행사를 하였습니다. 빼낸 디스크는 망치로 깨는 퍼포먼스도... (아 회장이 Western Digital 이어서 그런지 디스크는 Seagate...)


역시 하드 8개를 다 제거 하니 빌드가 멈추더군요. :)

언컨퍼런스

여러가지 주제가 있었는데 zfs 이야기하는데 가 봤습니다. lz4 compression 에 대해서 물어 봤는데 그냥 켜 두어도 별 문제 없다고 하네요. 어차피 early abort가 있어서 압축이 안될것 같으면 그냥 저장한다고 하고, 최근 버전인지 모르겠는데 두번 이상 압축하면 더 줄어드는 효과가 있어서 한번 지정해 보아도 좋을 거라고 합니다.

Kirk McKusick, “A Narrative History of BSD”


BSD와 UFS 등으로 유명한 Kirk McKusick (사실 BSD행사의 단골 손님입니다) 이 BSD의 역사에 대해서 슬라이드 없이 (손에 들고 있는건 노트...) 옛날 이야기를 하시는 자리. 오늘의 주제는 TCP구현에 관한 BSD vs BBN 및 기타 에피소드였습니다. 자세한 내용은 "오픈 소스" 이북 (무료로 볼 수 있습니다)의 2장을 참고 하시면 되겠습니다. 이분은 이런 무용담(?) 계열을 이야기하길 꽤 좋아하시는 것 같네요. :) (vs AT&T를 다음에 듣고 싶네요. 육성으로)


둘째날 - 11/2/2014

이틀째는 아무래도 첫째날보다는 좀 루즈한 분위기인듯.

Brendan Gregg, "Performance Analysis"

각종 성능측정에 대한 이야기였는데, FreeBSD도 dtrace 등의 여러가지 다양한 측정 도구를 제공하고 있지요. 이분의 홈페이지와 블로그를 잘 읽어보면 좋은 정보를 많이 얻을 수 있습니다. 발표 중에 나왔던 이 페이지에 정리가 잘 되어 있습니다.

Corey Vixie, "Web Apps on Embedded BSD..."

사실 BSD와 직접 관련 없어 보이기는 한데 FreeNAS상에서의 웹 UI개발에 대한 이야기 입니다. 상당히 최근에 유행하는 각종 UI 라이브러리를 써서 확장 가능한 UI를 만들어 보려고 하는 것 같더군요. Facebook 의 React 를 쓰고 있다고 합니다. 특이한 점은 이러한 라이브러리도 대부분 BSD라이센스를 채용하고 있다는 것 입니다.

BSD보급을 위해 필요한 것들: 브레인스토밍

BSD보급을 위해서 각자 생각하는 의견을 교환하는 시간이 있었습니다. 그중에 마음에 드는 것은 Coursera 에 강의 올리기..

Kip Macy, Iflib, libukern

iflib는 네트워크 드라이버에 들어가는 공통 기능의 라이브러리입니다. 각종 드라이버에 들어가는 라인 수를 크게줄일 수 있다고 하네요. libukern은 사용자 모드에서 BSD커널을 돌리기 위한 라이브러리입니다. User Mode Linux나 NetBSD RUMP같은 것을 생각하면 됩니다.

Allan Jude, UCL as a system configuration language


UCL(libucl에서 상세한 문법을 볼 수 있습니다)은 pkg(8)의 설정파일 등을 지정하는 언어인데 이것을 이용하여 첫날 jkh@가 이야기 하였던 공통 설정 파일을 만들고자 하는 시도 입니다. 이런 용도면 JSON, YAML, XML등이 있는데 이런것 보다 사람이 다루기 쉽고, JSON으로 변경하기도 쉽다는 장점이 있습니다. 현재 nginx 등에서 사용되는 설정 파일 형식을 생각해 보면 쉽습니다. bhyveucl 이나 uclcmd 등을 참조해 보시면 됩니다.


끝으로

전반적으로 매우 BSD스러운 행사였습니다. BSD스럽다는건... 이쪽에서 하는 모임의 경우 나이 많은 분들도 많고, 아무래도 OS라는게 신규로 이 커뮤니티에 들어오려는 사람들이 접근하기에는 쉽지 않은 주제이다 보니 점점 커뮤니티 자체가 그대로 나이를 먹고 있다는 문제점이 있지요. 그래서 이런저런 대외 활동을 하려고 하는 것 같습니다만 이 사람들 자체가 그런 성향이 아닌지라... 그리 효과적이지 않아 보입니다.

제가 처음에 FreeBSD를 접할 때 에는 집에서 쓸만한 Unix 가 필요하다는 것 때문이었고 이후에 써야 되니 X윈도우도 설정해야 하고 한글 입출력도 해야 하고 기타 등등을 하다가 나중에 논문도 쓰고 졸업하고서는 회사 일에도 쓰게 되고 등등이었는데, 지금은 사실 집에서 쓸만한 Unix가 필요하면 그냥 맥북 쓰면 그만이고 고민할 것도 거의 없죠. 회사나 서비스에 쓸 경우에도 대부분의 경우 Linux 만 쓰면 되기 때문에 선택에 대해서 굳이 고민할 필요가 없고 주위의 사람들도 대부분 Linux면 만족하고 있고 사실 Linux 인지도 이제는 거의 중요하지 않는 상황이 되었습니다. 즉 이전보다는 OS자체에 대해 고민을 덜 하고 있고 그 위에서 어떤 어플리케이션이, 어떤 언어가, 어떤 프레임웍이 올라가야 하는지에 대한 이야기가 더 많은 것이 사실이죠.

하지만 우리가 잘 보이지 않는 곳에서 BSD가 많이 쓰이고 있다는 것도 사실이고 (Netflix OpenConnect 라든가 Sony PS4 라든가 Apple iOS 이라든가) 라이센스 등의 면에서 이전보다 눈에 덜 뜨일 뿐이지 사용이 줄었다고는 보지 않습니다. OS 자체 보다는 기술을 이용하여 만든 여러가지 제품이 있다는 것이죠. 따라서 기존에 하던 것과는 다른 방향의 마케팅이 필요하지 않을까요. 둘째날에 이에 대해 좋은 제안들이 많이 있었으니 어떤 형태로든 실현 되기를 바랍니다.