'분류 전체보기'에 관한 글 113건

  1. 2009.02.27 어쩌자고... 넷북에서 Xen을 돌리겠다는 건데?
  2. 2008.12.13 우분투 8.10에서 kvm을 이용한 가상서버 설정
  3. 2008.12.07 KLDPConf 8.12 후기 1
  4. 2008.12.03 Landscape: Canonical의 새로운 서비스, SaaS (SMS as a Service)
  5. 2008.04.29 ssh 빨리 접속하기, pseudo-tty 살리기, ssh로 웹필터 회피하기
  6. 2008.04.26 책: 애자일 프랙티스 (Practices of an Agile Developer)
  7. 2008.04.15 미국식 가명 짓기. 에**이 누구야?
  8. 2008.04.09 프로젝트 관리: 서브버전 저장소 사본 만들기, svnsync
  9. 2008.04.08 시선 고정!
  10. 2008.03.29 교사 때리기 : “한국 교사임금 구매력 OECD 최상위권”?

어쩌자고... 넷북에서 Xen을 돌리겠다는 건데?

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

좀 우끼는 일이지만, 삼성전자의 넷북인 NC10에 우분투를 설치하고 Xen 가상화 환경을 구축하려는 과정의 이야기이다. 실은, 어제 저녁에 이 과정에 얽힌 긴 글을 쓰고 초안으로 올려뒀는데, 오늘 보니 사라져버렸네... ScribeFire로 글을 작성했는데, 이렇게 작성한 몇몇 글 중에서 사라져버린 것은 이 번이 처음이다. 누구 문제인지는 모르겠으나... 오늘 아침 tistory 접속 자체가 잘 안되었던 것을 감안하면, Firefox의 문제일지도... 어쨌든 한 번 쓴 글을 다시 쓰려니 글 쓸 생각은 잘  안나고 짜증은 잘 난다. (에라 그만둘까 싶지만서도...)

넷북, NC10과 Xen

본론으로 들어가서, 그렇다. 넷북에 Xen을 올리겠다는 것은 조금 우끼는 일이다. 본격적인 "경험담"에 들어가기 전에 잠깐 Xen와 NC10의 궁합에 대해서 생각해봤다.

NC10은 삼성전자의 첫번째 넷북인데, Intel의 Atom N270 프로세서를 사용하고 있다. CPU 사양을 잠깐 살펴보면,

flags           : fpu de tsc msr pae mce cx8 apic mtrr mca cmov pat
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe constant_tsc
arch_perfmon pebs bts pni monitor ds_cpl est tm2 ssse3 xtpr lahf_lm

lm 도 없고, vmx 도 없다. 바꿔 말하면 x86-64 버전을 설치할 수도 없고 하드웨어 가상화 기능을 사용할 수도 없다는 뜻이다. 내 수중에 있는 기본 모델은 1GB의 RAM을 기본 장착한 상태인데 메모리 슬롯이 하나 밖에 없기 때문에 메모리 증설도 간단하지가 않다. 그런데 어째서 여기에 무슨 가상머신을 올리겠다고? (참고로 삼성전자의 다음 모델인 NC20은 VIA의 NANO칩을 쓴다고 한다. lm, vmx 다 된다던데? 솔깃~)

대답은 간단. 가벼우니까. 점점 무거운 Xnote를 어깨에 메고 다니는 것이 부담스럽게 느껴지던 차에, 이런 녀석이 옆에서 놀고 있는 꼴을 보니 써주지 않을 수가 있어야지. (그러고보니 고작 램 128MB, 256MB에서 가상머신 돌리면서 옆 팀의 512MB, 640MB 쓰는 동료들 부러워했던 때가 엇그제 같은데... 1.6GHz에 1GB 램이면 떡을 치는 사양 아니야?)

참고 : NC10의 주변 기기 사양

우분투/Xen 설치하기

어쨌든 NC10에 우분투를 설치하기 시작했다. 일단, 간단하게 기존에 설치하여 잘 돌아가고 있던 8.10 버전을 한 쪽 파티션에 복사, 다중 부팅을 하도록 했다. 그런데 이게 왠일, 시작부터 난관~! 8.10 버전의 우분투는 Xen의 Dom0를 지원하지 않는단다. 앞으로 계속 하지 않는다는 얘기도 있고(kvm을 밀고 있는 형국이므로 그럴만도 하다.) LTS에서만 될 거라는 얘기도 있고... 어쨌든 이번 작업의 목적은 "가상화"가 아니라 "Xen"이므로 간단한 결정을 했다. LTS이고 Xen 지원이 되는 8.04 버전으로 내리는 것. 결국, ubuntu 8.04 server i386 버전을 한 쪽 파티션에 깔았다.

8.10 버전의 Ubuntu를 NC10에 설치하는 것은 숨쉬는 것 만큼 간단했다. (물론, 약간의 수작업이 있어야 Wireless 등의 일부 기능을 사용할 수 있다. 본론은 아니므로 생략) 그런데 8.04는 다르더군. 설치를 한 참 진행하다가 죽어버리는 것이 아닌가! 결국 acpi=off 라는 부팅 옵션을 추가로 줌으로써 문제는 비껴 갈 수 있었다. (확인해보지는 않았지만 초기에 구워둔 CD를 사용하지 않고 8.04 버전의 최신 이미지인 8.04.2로 시도했다면 쉽게 갔을지도 모르겠다. 설치를 마친 후 최신 업데이트를 적용하고 커널도 최신으로 올리고 나니 acpi 관련 문제는 사라졌다.)

다음 순서로, ubuntu-xen-server 라는 이름의 메타 패키지를 통하여 xen 관련 패키지 설치를 마쳤다. 초반에 액땜을 해서 그런지 이 과정은 순조롭게 진행이 되었다. Xen커널 부팅을 확인한 후, 용도가 용도인지라 server 버전으로 설치했음에도 GUI가 필요했기 때문에 xorg 패키지와 간단한 wm인 openbox 패키지를 설치하였다. 그런데 이게 왠 일인가! Xen으로 부팅한 상태에서는 intel 온보드 그래픽카드를 사용하는 Xorg가 동작하지 않았다. 아니, 화면에 검게 변하면서 멈춰버렸다. (Xorg의 intel 드라이버 문제인지 kernel의 intel-agp 문제인지는 모르나, 아마도 정황으로 봐서 intel-agp와 Xen 사이에서 메모리 분쟁이 있는 것 같다.) "그래, vesa 쓰면 되지 뭐..."

Xorg, Xen, 그리고 945GME

쉽게 쉽게 안되면 피해가는 방식으로 여기까지 왔지만! 그런데 이게 뭔가?! vesa 모드로 Xorg를 띄우면 고작 800x600의 해상도로 뜨는 것이 아닌가! 안되는 것은 참아도 미운 것은 참을 수 없다! 그렇게 본격적인 삽질은 시작되었다.

시도해본 것들 :

  • intel 드라이버를 agp 없이 써보려는 시도 : 잘 안됨.
  • vesa 드라이버를 쓰면서 1024x600을 얻기 위해 xorg.conf 로 어떻게 해보려는 시도 : 잘 안됨
  • fbdev 드라이버를 쓸 각오를 하고 fbcon 띄워보려는 시도 : 헉! 왜 이런 시도를 한거야!

그렇다. 그런 시도를 한 것이 잘못이었다... 공식의 23-server 커널을 쓰면서 vga=0x314 옵션을 주면 800x600일 지언정 fbcon이 정상적으로 올라왔다. 그런데 23-xen을 올릴 때는 vga=... 도, video=... 도 먹질 않았다. xen이 원래 그런거니? 그럼 안되는데... 결국 커널 소스 패키지를 내려받아서 생애 최초의 deb 커스텀 빌드에 돌입! 몇 시간에 걸친 커널 컴파일을 시도했다.(이게 몇 년 만의 커널 컴파일인가? 기억도 나지 않는다!) 오라... 그랬더니, fbcon, vesafb를 built-in으로 했더니, xen으로 시작해도 fbcon이 잘 올라왔다. "이거야!". 여기서 멈춰도 되는데... 이놈의 결벽증은, 공식 커널에서도 왠지 설정을 잘 해주면 될 것 같은 생각이 자꾸 드는 것이다. 다시 커널을 공식 버전으로 복구하고 다양한 시도를 진행했다. 삽질의 끝은 어디인가? 포기! 아마도 뭔가 내가 모르는 것이 있는게다. 시간만 얼마가 지났는지...

그러던 길에 발견한 페이지(메일)가 바로 아래의 페이지 :

[Debian-eeepc-devel] 1024x600 console [was: Re: Video out toggling]

I have made some progress with this. The intelfb framebuffer driver doesn't support mode changing except for the VGA output. However, the uvesafb framebuffer driver does as long as the mode you want is known to the BIOS. But the Eee BIOS doesn't know about the panel's native resolution. This can be fixed using a utility called 915resolution, which hacks the RAM copy of the BIOS. But 915resolution doesn't know about the 945GME chip in the '901.

멍청한 비디오 바이오스의 모드 리포트를 소프트웨어적으로 고쳐주는 프로그램인데, NC10의 그래픽칩인 945GME 지원에 대한 패치가 있었던 것. (휘발성 수정이라서 Xorg를 위한 답은 되는데 FB를 위한 답은 되지 않는다. FB를 위한 grub 패치도 있는 것 같은데 시도하지는 않았다.) 그래... 쉽게 가는게 목표잖아. 커스텀 커널보다는 커스텀 유틸이 낫지. 결국, 생애 최초로 dpatch 를 써가며 커스텀 버전의 915resolution패키지를 빌드, 설치, 설정했다.

휴, 이제야 깔끔한 모습의 GUI를, Xen 환경에서 볼 수 있게 되었다. 이제부터 시작이다!

...

이게 얼마만의 삽질인가! 후훗~ 간만에 재밌기도 하고 :-)

(그런데 오랜만에 DE 가 아닌 WM-only로 쓰려니까... 좀 당황스러운데?


우분투 8.10에서 kvm을 이용한 가상서버 설정

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

개요

가물가물한 기억인데, kvm과의 첫 만남은 아마도 2007년 늦은 봄 정도였던 것 같다. 그 무렵이 드디어! kvm이 메인스트림 커널에 포함되고 그것을 기반으로 한 배포본이 등장하기 시작했던 무렵이기 때문이다. (요즘 가끔씩 깜짝 놀라기도 하는데, 되돌아보니 근 몇 년간 배포본에서 지원하지 않는 최신의 뭔가를 스스로 노력해서 써본 기억이 없다! 이럴수가!)

이런 저런 정황으로 봤을 때, 앞으로 리눅스 기반 가상화의 중심에 자리 잡을 것으로 예상했던 kvm의 첫 느낌은, (애써 감추려고 노력했지만) 사실 실망이었다. 너무 느리고 까다롭고... 하지만, 신생아라는 점을 고려하면, 그냥 "와~ 추카추카~ 이쁘네~~~ 잘키워~" 하고 호응해줄 수 밖에!

그로부터 채 1 년도 지나기 전에, kvm을 프로젝트에서 개발 플랫폼으로써 활용할 수 있었다는 것이, 기쁘지 않을 수 없다. :-) 그래서, 이번에는 내부 업무 시스템에 kvm을 적용해보기로 맘먹었다. (말이 길었는데,) 이 글은 그 과정에 대한 기록이다.

설치 및 설정 - 기본 설정

한 두 번도 아닌데, kvm은 설치할 때 마다 새로운 느낌이 있다. 아직 활발히 성장하고 있는 중이어서일까? 어쨌든, 이번 설치의 플랫폼은 우분투 8.10이다. 먼저, 다음 명령을 사용하여 kvm 관련 패키지를 설치했다.

$ sudo apt-get install ubuntu-virt-server

8.10 버전부터 새로 추가된 ubuntu-virt-server 패키지는 kvm, libvirt-bin, openssh-server 등의 세 패키지를 잡고 있는 가상화 서버 구성을 위한 메타패키지이다. 이와 함께 추가된 ubuntu-virt-mgmt 패키지는 virt-manager, python-vm-builder, virt-viewer 등의 관리용 패키지를 잡고 있는 메타 패키지인데, 이 번 작업 내용에는 포함되지 않았다. (현재 랩탑에서 사용중인 7.10 버전에서는 지원되지 않아서 일단 관련된 작업 및 시험은 보류했다.)

네트워킹 등의 일부 기능은 적절한 권한이 있어야 사용할 수 있다. 다음 명령을 이용하여 사용자를 libvirtd 그룹에 추가시켜준다. (물론, 다시 로그인을 해야 변경된 그룹 권한이 적용된다.)

$ sudo adduser `id -un` libvirtd

위의 과정이 정상적으로 수행되었다면, 다음과 같은 방식으로 작동 여부를 확인할 수 있다.

$ virsh -c qemu:///system list
Connecting to uri: qemu:///system
Id Name                 State
----------------------------------
$

가상머신 설치하기 - 가상 콘솔

이런! 가상머신을 설치하려고 보니 어쩔 수 없이 최소한의 클라이언트 기능을 설치할 수 밖에 없겠네... 애초의 계획은 클라이언트는 완전히 독립된 기계에서 운용하고 서버는 말 그대로 "가상화 기반"으로써만 활용하는 것이었다. 그런데... 랩탑 환경을 지금 바꾸기는 좀 무리가 있고 일단은 서버에 최소한의 관리 환경을 설치하도록 한다.

다음과 같은 방식으로 가상 콘솔 프로그램인 virt-viewer를 설치한다.

$ sudo apt-get install virt-viewer
[...]
다음 새 꾸러미를 설치할 것입니다:
  defoma fontconfig fontconfig-config hicolor-icon-theme libatk1.0-0
  libatk1.0-data libcairo2 libcups2 libdatrie0 libdrm2 libfontconfig1
  libfontenc1 libfreetype6 libgl1-mesa-glx libglu1-mesa libgtk-vnc-1.0-0
  libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libgtkglext1 libice6 libjpeg62
  libpango1.0-0 libpango1.0-common libpixman-1-0 libpng12-0 libsm6
  libthai-data libthai0 libtiff4 libxcb-render-util0 libxcb-render0
  libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxfont1 libxft2 libxi6
  libxinerama1 libxmu6 libxrandr2 libxrender1 libxt6 libxxf86vm1 ttf-dejavu
  ttf-dejavu-core ttf-dejavu-extra virt-viewer x-ttcidfont-conf
  xfonts-encodings xfonts-utils
[...]

virt-viewer는 말 그대로 가상머신 뷰어이다. 이 프로그램을 통하여 가상머신의 가상 콘솔에 접속할 수 있고, OS 설치 등의 현장에서만 실행할 수 있는 작업을 진행할 수 있다.

이것으로 준비는 거의 끝난 것 같다.

가상머신 설치하기 - 가상머신 생성

virt-install 이나 우분투 고유의 python-vm-builder (예전의 ubuntu-vm-builder) 등의, 설치 전용 유틸리티를 활용하여 생성과 동시에 설치를 진행하는 방식도 있고, 또는 virt-manager에서 적절한 생성을 마친 후, 가상머신을 기동시키고 설치를 진행할 수도 있다. 예전에는 virt-manager 방식이나 virt-install 방식을 시도해봤었는데, virt-manager 방식의 경우, 설치 속도 문제로 고생을 좀 했던 기억이 있다. virt-install의 경우, 설치 후 재부팅이 필요한 환경 등에서 좀 모자라다는 느낌을 받았었던 것 같은데 역시 기억이 살짝 희미해져 있다. 더욱 중요한 것은, virt-install의 경우, 여러 디스크를 붙이고 싶은 경우 등의 상세한 작업을 할 수 없었던 것으로 기억한다. 그래서 이번에는 다른 방식을 도입해 보았다.

이름하여 가상머신 생성기. genxml.sh라는 스크립트를 급조했다. 처음에는 조금 보편적인 설정이 가능하도록 하려다가, 시간도 없고. 또한 그렇게 까지 할 필요성을 느끼지도 못해서 내 스타일의 가상머신을 만들어내는 정도로 목표 수준을 낮췄다. 다음은 스크립트의 내용이다.

#!/bin/sh

VM_ROOT=/box/vms

vm_name=mercury
vm_mem=1024
vm_cpu=2
vm_mac=`echo "52:54:00$(hexdump -e '/1 ":%02x"' -n 3 /dev/urandom)"`

echo -n "name of vm: "; read vm_name
vm_home=$VM_ROOT/$vm_name
mkdir -p $vm_home

echo -n "size of ram: "; read vm_mem
echo -n "number of cpus: "; read vm_cpu
echo -n "path of cdrom: "; read vm_cdrom
echo -n "disk size of sys: "; read size
qemu-img create $vm_home/$vm_name-sys.qcow2 -f qcow2 ${size}G
echo -n "disk size of tmp: "; read size
qemu-img create $vm_home/$vm_name-tmp.qcow2 -f qcow2 ${size}G
echo -n "disk size of opt: "; read size
qemu-img create $vm_home/$vm_name-opt.qcow2 -f qcow2 ${size}G

cat < $vm_name.xml >>EOF
<domain type="kvm">
  <name>$vm_name</name>
  <uuid>`uuidgen`</uuid>
  <memory>$(( $vm_mem * 1024 ))</memory>
  <currentmemory>$(( $vm_mem * 1024 ))</currentmemory>
  <vcpu>$vm_cpu</vcpu>
  <os>
    <type>hvm</type>
    <boot dev="hd"/>
  </os>
  </boot>
  <features>
    <acpi/>
  </features>
  <clock offset="utc" />
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type="file" device="disk">
      <source file="/$vm_home/$vm_name-sys.qcow2"/>
      <target dev="hda" bus="ide"/>
    </disk>
    <disk type="file" device="disk">
      <source file="/$vm_home/$vm_name-tmp.qcow2"/>
      <target dev="hdb" bus="ide"/>
    </disk>
    <disk type="file" device="disk">
      <source file="/$vm_home/$vm_name-opt.qcow2"/>
      <target dev="hdd" bus="ide"/>
    </disk>
    <disk type="file" device="cdrom">
      <source file="/$vm_cdrom"/>
      <target dev="hdc" bus="ide"/>
    </disk>
    <interface type="network">
      <mac address="$vm_mac"/>
      <source network="default"/>
    </interface>
    <input bus="ps2" type="mouse"/>
    <graphics type="vnc" port="-1" listen="127.0.0.1"/>
  </devices>
</domain>
EOF

이 스크립트를 이용하면 디스크 세 개를 달고 있는 가상머신 설정을 단숨에 만들어낼 수 있고 해당 디스크 이미지 역시 스크립트 내부에서 만들어낸다. 가상머신이 생성되는 위치는 스크립트 내부에 지정되어 있으며, 가상머신 이름을 이용한 디렉토리 안에 관련된 디스크 파일을 모아두는 방식으로 되어있다. 다만, 가상머신의 설정이 담긴 xml은 스크립트를 실행한 현재디렉토리에 떨어지게 되며, 다음 명령을 이용하여 이 xml 파일을 읽어들여 가상머신 설정을 완료하도록 할 수 있다.

$ ./genxml.sh
name of vm: u810si
size of ram: 512
number of cpus: 2
path of cdrom: /box/isos/ubuntu-8.10-server-i386.iso
disk size of sys: 6
Formatting '/box/vms/u810si/u810si-sys.qcow2', fmt=qcow2, size=6291456 kB
disk size of tmp: 1
Formatting '/box/vms/u810si/u810si-tmp.qcow2', fmt=qcow2, size=1048576 kB
disk size of opt: 2
Formatting '/box/vms/u810si/u810si-opt.qcow2', fmt=qcow2, size=2097152 kB
$ virsh -c qemu:///system define u810si.xml

이렇게, 우분투 8.10 서버용 i386 버전을 위한 가상머신 설정과 디스크 준비를 끝냈고, 마지막으로 virsh 쉘의 define 명령을 이용하여 만들어진 설정을 적용하였다. 이제 생성된 가상머신을 실행해보자.

$ virsh -c qemu:///system start u810si
Connecting to uri: qemu:///system

$ virt-viewer -c qemu:///system u810si

어라? 부팅에 실패했다! 왜냐하면, 기본 부팅 설정이 'hd' 즉, 하드디스크로 되어있기 때문. xml 파일을 열어서 다음의 내용을 수정해주고 다시 define 명령을 내려줘야 cdrom으로의 부팅이 가능하다. (그런데 왜 hd를 기본값으로 했을까? cdrom으로 바꿀까?)

9c9
<    <boot dev="hd">
---
>    <boot dev="cdrom">

어쨌든, cdrom으로 부팅을 하도록 설정하고, define 명령을 내려주고, 다시 start 명령을 내린 후 접속을 해보면 설치 화면이 떠 있는 것을 볼 수 있다. 이후의 과정은 일반적인 설치 과정이며, 최종적으로 재부팅. 어라? 그러면 다시 CD로 부팅할 줄 알았은데 그렇지가 않다. 그냥 부팅 오류가 발생했네? 이유는 모르겠지만 어차피 다시 부팅 설정을 바꿨어야 했으므로, 다음의 방식으로 설정을 바꿔주고 다시 시작해보자.

$ virsh -c qemu:///system destroy u810si
$ vi u810si.xml  (boot 부분 편집)
$ virsh -c qemu:///system define u810si.xml
$ virsh -c qemu:///system start u810si

휴, 이제 설치가 모두 끝났다.

아참, 이렇게 재부팅 하기 직전의 상태를 백업해 두는 것도 좋겠네.

가상머신 복제

이렇게 생성, 설정 및 설치를 마친 후, 늘 그렇듯이 설치 원본의 백업 및 복제 방안 마련에 들어간다. 백업은 간단한게, xml 파일과 디스크 이미지 파일을 tar 명령으로 묶어서 저장해두면 그 뿐. 그럼 복제는? 다음의 방식을 도입해봤다.

먼저, 간단한 스크립트를 하나 짰다. 이름은 copyvm.sh.

#!/bin/sh

src_vm=$1
dst_vm=$2

[ "$src_vm" = "" -o "$dst_vm" = "" ] && {
        echo "usage: copyvm.sh src dst"
        exit 1
}

[ ! -d "$src_vm" ] && { echo "source vm is not exist. abort!"; exit 1; }
[ -e "$dst_vm" ] && { echo "destination vm is already exist. abort!"; exit 1; }

vm_mac=`echo "52:54:00$(hexdump -e '/1 ":%02x"' -n 3 /dev/urandom)"`
vm_uuid=`uuidgen`

cp -a $src_vm $dst_vm
cd $dst_vm
rename "s/$src_vm/$dst_vm/" *
sed -i "s/$src_vm/$dst_vm/g" $dst_vm.xml
sed -i "s,<uuid>.*</uuid>,<uuid>$vm_uuid</uuid>," $dst_vm.xml
sed -i "s,<mac address=".*/">,<mac address="$vm_mac">," $dst_vm.xml

ls
cat $dst_vm.xml

내용은 간단하다. 인수 두 개를 받아서 첫 번째 인수로 받은 기존 VM을 두 번째 인수로 받은 이름의 새 VM으로 복사하고 설정 차원에서 중복되어서는 안되는 값만 바꿔주는 것이다.(MAC 주소와 UUID) 물론, OS 내부의 설정은 아직 변경하지 못한다. 불가능할 것 같지는 않은데... 현재로써는 복제 원본과 복제된 가상머신의 hostname, sshkey 등의 값이 같다는 한계가 있지만, 어쨌든 쓸만은 하다. 또한 복제 원본을 위한 템플릿 작업을 조금 한다면 더 좋겠지.

$ copyvm.sh u810si rails

이제 우분투 8.10 서버 i386 버전 기반의 rails 환경 복제 완료. 프로비저닝 시간? 한 10초?

새로운 가상머신을 시작시킨 후, 다음의 명령으로 필요한 추가 패키지를 설치해줬다.

$ sudo apt-get install vim
$ sudo apt-get install subversion
$ sudo apt-get install rails
$ sudo apt-get install rubygems

마치기

푸하하... 여기까지, 우분투 8.10 최신버전을 기반으로 한 가상 인프라 구축의 초기 단계와 가상머신 생성 및 복제 과정을 정리해봤다.

KLDPConf 8.12 후기

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브
어제, 2008년 12월 06일, 국내 최고의 FOSS 커뮤니티인 KLDP의 컨퍼런스 행사에 다녀왔다. 얼핏 기억하기에, 꽤 오래 전부터 KLDPConf 행사가 있었던 것 같은데, 내가 참가했던 것은 이번이 두 번째이다. ("나와 커뮤니티"에 대해서는 다음 기회에...혹시 기회가 된다면...:-) 이 글은, 바로 그 발걸음에 대한 기록이다.

아! 내 맘대로 KLDPConf 8.12라고 이름 붙였다. 위키를 기준으로 공식 이름은 "KLDPConf/20081206" 인데, 그냥 우분투 식으로 :-)



현장에서 받아야 할 택배도 있고 하여, 좀 더 빠르게 움직였어야 했건만, 애 엄마도 출근한 주말에 아들과 떨어지는 것이 어찌 아쉬운지...(아들도, 나도,...) 결국, 딱 떨어지는 시간만 가지고 집을 나섰다. 그런데 이게 왠일? 처음 가보는 가산 디지털단지의 길목은 어찌나 낯설던지... 전철역에서 내린 시간은 더도 말고 덜도 말고 딱 떨어지는 시간이었으나 그 전날 네이버맵에서 찾아봤던 간단해 보이던 길은... "흑 T.T 분명히 가까웠는데..." 추운 날씨에 걸음을 재촉하던 사람들을 잡고 물어 물어... 결국 'ㄷ'자로 꺾어서, 꺾어서 20분 정도 늦게야 행사장에 도착할 수 있었다. (요즘 뚜벅이용 네비게이션이 나온다는데... :-(



다행히, 행사 시작 전에 도착은 할 수 있었다. :-) 그리고는, 컨퍼런스 노트로 사용할 수 있었던 노트와 필기구 세트를 포함한 선물세트를 받은 후,

1. 모든 참가자의 자기소개
2.1. 김성훈님의 "허드슨 아저씨 이야기"
2.2. 허태준님의 "오픈소스 개발자 되기"
2.3. 서영진님의 "임베디드 리눅스 회사를 끌어왔던 이야기"
2.4. 서상욱님의 "nFORGE 개발 이야기"
2.5. 장정철님의 "Glade/GTK+ 이야기"
2.6. "인텔의 Moblin..."
3. 자유 토의 및 저녁 식사!

순으로 행사는 진행되었다.



이번 행사에서는 참자자들의 소개에 약간 주목해 보았다. 리눅스의 시장에서의 현재가 궁금했기 때문. 모두 꼼꼼히 적지는 못했지만, 참가자들의 직업,관심분야 분포는 대충 다음과 같았다.

kernel 관련 -- 3명
임베디드 관련 -- 16명
이동/무선 통신 관련 -- 2명
(디지털) TV관련 -- 2명
CDN -- 2명
소프트웨어 엔지니어링 -- 6명

어라? 한 7~80명은 오셨을 텐데... 좀 잘못 뽑았나? 어쨌든 임베디드쪽의 강세가 강하게 나타났고, 이슈트래커, 프로그램 분석, 애자일 등의 소프트웨어 엔지니어링에 대한 관심도 높은 것 같았다. 다섯 개의 발표 주제에 가운데 임베디드 관련 이야기, nFORGE나 허드슨 관련 이야기 등이 미리 공지된 이유도 어느 정도는 있겠지만, 그게 전부는 아닐 것이라고 생각한다. 어찌보면 그런 발표 주제가 선정될 수 있었다는 점만 봐도... 어라? 시작은 데이터를 가지고 뭔가 얘기하는 척 하더니 결국은 추측과 주장이네?

아무튼, 참가자들의 관심사 키워드를 뽑아보면 다음과 같다.

SuSE, ata, WiMAX, 만도, 로봇, gtk, 홍콩, 차량용 블랙박스, 게임서버, 엠텍비전:-), 데스크탑, SAS, 경쟁상대, 번역, DTV, 대학원, 커널, CDN, 칩, 지원, 휴대폰, arm9, 음성코덱, 이슈트래커, 리눅스플랫폼, 모바일, 개방형, 리모, MID, 스마트카드, 패킷, 프로그램분석, SE, 테스트, GTK+, 프레임웍, 이미지유사도, 폐수, 개발효율, 애자일,...



다음은 "준비된 발표"

1. 허드슨씨를 만나보세요.

홍콩 과기대의 김성훈님께서 귀찮은 반복작업을 싫어하는 고급인재들에게 허드슨씨를 만나볼 것을 간단한 예를 통해서 권해주셨다. 고급이 아님에도 불구하고, 두 번 이상 할 일이라면 대체로 자동화를 해야만 하는, 게으름은 그 들 못지않은 나라서 관심을 가지고 있었던 "지속적 통합" 도구의 하나이다. 직간접적인 코딩을 하지 않은지가 일년이 되어가다 보니, 좀 느슨한 관심으로 들었던 시간이었는데, 김성훈님의 프리젠테이션에 살짝 매료되어 버렸다.

"팀에서 받아들이지 않는다면 혼자라도 써라. 그럼 팀에서 인기 개발자가 될 걸?"

2. 오픈소스 개발자 되기

야생의 밟고 밟히는 세상에 대하여, 그리고 그 익숙해지기 어려운 야생에 익숙해져서, 결국에는 오픈소스 개발자의 자유로운 영혼을 누리기까지의 과정을 SuSE 리눅스의 허태준님이 진솔하고 실질적이고 또한 핵심을 꼭 꼭 찍어서 설명해주셨다.

"직장을 옮겨도 같은 일", "자유도", "누가 동료인가?", "까칠한 전통",...

3. 임베디드 회사... 무제의 발표

서영진님께서 97년에 회사를 시작하여 오늘(Windriver에 팔아 버림)까지의 기로에 대하여 간략하게 설명해주셨다. 기억에 남는 말씀은,

"소프트웨어는 글로벌 경쟁"
"우리 산업 환경에서는 임베디드"
"헨드폰은 2~3년인데 자동차는 10년!"
"나도 안 살 디자인인데 패션의 이테리에서 1x0만대?"

4. nFORGE 이야기

NHN의 서상욱님이 GFORGE를 기반으로 하는 nFORGE의 개발 과정과 컨셉, 향후 일정 등에 대하여 얘기를 해주셨다. 괭장히 관심이 많은 분야이기도 하고, 솔루션/패키지로써가 아니라 서비스로써의 Forge에 관심이 있기 때문에 그들의 앞으로의 기로가... 참으로 궁금하다. 당장은? 잘 모르겠다. 어쨌든 "개발자 생태계 육성"이라는 표현이 가슴에 와 닿는다. 권순선님의 "한국 사람들 만의 특성 있다고 본다"는 첨언은 반 쯤 이해가 가고 반 쯤은 잘 모르겠다. 어쨌든 nFORGE를 비롯해서 NAVER DeveloperCenter 계획이 성공적으로 자리잡기를 바란다.

5. GTK+/Glade 프로그래밍
6. Intel, Moblin, ...

헉! 나의 집중력의 한계인가? 이 쯤 해서는 노트도 좀... 부족하고 기억도 가물가물...



그리고 이어진 자유 토론/네트워킹 시간. 나는 허태준님을 중심으로 모여있던 그 무리에 속해 있었는데, 우리 모임이 가장 재미있었을 것이라고 생각하고 있다! :-)

허태준님에게 커널 개발자의 세계, 어떻게 시작된 것인지 등의 몇몇 질문을 시작으로 자리가 형성되기 시작하여 CDN쪽 이야기, 네트워크/TCP이야기, Netbook/MID 이야기, 아키텍쳐 이야기, IT 대란(잃어버릴 5년) 등등... 재미있는 시간을 가졌다.

KLDPConf의 핵심은 바로 이 시간에 있는 것 같다. 그다지 사교적이지 못한 성격 탓에 좀 더 적극적으로 덤비지 못하는 것이 좀 아쉽지만, 역시 이 시간의 재미는 쏠쏠하다.

자유토론 중간에 파파이스 햄버거였나? 가벼운 저녁 해결이 있었고, 이야기는 이어져 갔다.



식사 시간이었던가 자유 토론 시작 무렵이었던가... 권순선님의 이런 저런 얘기(요는, 정체되어 있다. 끊긴다. 확산의 노력이 필요. 이런 자리도 알려달라. 무플보다는 악플... 등등)가 있었는데, 어찌나 뜨끔하던지... 사실, KLDP라는 공간 또는 조직에 대한 나의 참여는 거의 '0'이라고 볼 수 있으니까.

비교적 초기부터 리눅스를 써 왔던 입장에서 지역 LUG 활동도 했었고, 10년을 리눅스 관련 일을 하고 있고, 나름대로 "뼈 속까지 리눅서"라는 자부심도 있고,... 또 Usenet이나 Mailing list가 소통의 중심이던 시절에는 나름대로 열심히 활동도 했었고...... 그런데 이 Web이라는 (아끼는) 녀석을 기반으로 한 커뮤니티에는 어째서인지 잘 적응이 되지 않는다. 왜일까?

나의 성향이 그런가보다. Usenet이나 Mailing list에서 기술 이슈를 놓고 서로 난도질, 또는 이 날 나왔던 표현으로 하지면 밟고 밟히는 분위기에는 잘 적응이 되는 것 같은데, 이상하게도 "친하게" 안부도 전하고 "사는 얘기"도 하는 밝은 느낌의 공간은 좀... 뭐랄까... 잘 적응이 안되어 왔던 것 같다. :-)

집에 돌아와 주말의 아빠 모드에서의 시간을 보내고, 오늘은 마트에도 다녀오고, 사랑스런 아들의 토마스 기차 트랙도 하나 사주고... 그래서 점수좀 따고, 저녁 내 같이 놀다가 다시 랩탑 앞에 앉았다. 그런데 좀 슬프네. 권순선님이 그 날의 자리에서 표현했던 절망 앞의 느낌이랄까? 그런 것이 표현했던 것 이상의 것이었나 보다. 나도 한 때 작은 조직을 이끌어 봤었고, 오래된 기억이지만 비슷한 느낌을 받았던 것 같기도 하고, 이해할 수 없는 것이 아니므로 더욱 안타깝다.

오늘의 후기에 적당한 주제는 아니므로 이 이야기는 다음의 기회로 미루자.



아무튼, 다양한 분야의, 그러나 리눅스 하나로 뭉친! 뭐랄까... 감히 "동료" 라고 말해도 될까? 그런 사람들과 함께 했던 즐거운 시간이었다.
KLDP도, KLDPConf도 영원을 뛰어 넘어 날아다녀라~!



덧붙임: 참가자 선물 세트

NHN의 티셔츠와 노트, 볼펜, 네이버윈도 모양의 자석

NHN의 티셔츠와 노트, 볼펜, 네이버윈도 모양의 자석


인텔의 1GB 카드형 USB 메모리

인텔의 1GB 카드형 USB 메모리


SK C&C의 무릅담요

SK C&C의 무릅담요



이 외에도 엠텍비젼에서 장소 및 음료, 다과를 제공해주셨습니다. 감사합니다. :-)



덧붙임: KLDP의 관련 글 들


오랜만의 KLDPConf: 12월 6일 | KLDP
12월 6일 토요일 오후에 시간들 어떠세요? 오랜만에 KLDPConf겸 해서 이야기할 수 있는 시간을 가졌으면 합니다.
12월 6일 KLDPConf 참석자 모집! | KLDP
KLDPConf는 OpenSource를 주제로 자발적인 참여를 권장하는 소규모 세미나입니다. 열린 환경에서 서로 공유하기 위해 만들어졌으며, 심도 있는 토론과 상호 교류, 데모 등을 위해 발표 시간만큼의 자유 시간을 확보하여 모두가 함께 OpenSource를 즐기고, 배우고, 느낄 수 있는 자리가 되었으면 합니다.
KLDPWiki: KLDP Conf/20081206
앞으로 KLDPConf는 기존의 세미나 위주에서 벗어나 참석자들간의 참여와 교류를 권장하는 방향으로 진행하고, CodeFest는 좀더 실질적인 결과물이 나올 수 있는 방향으로 진행하려 합니다.
KLDPConf 시작했습니다~ | KLDP
오랜만에 했는데 많이 오셨네요. 결석하신 분들도 좀 되는데 장소가 딱 적당해서 거의 꽉 찼습니다. 날씨가 추워서 그런지 사람들이 빨리 안 오셔서... 조금 늦게 시작했습니다.
오늘 KLDPConf 후기 올려주세요~ | KLDP
자자 오셨던 분들 '모두' 어떤 형태로든 이곳 KLDP 혹은 본인 블로그 등등 어디든 좋으니 후기를 좀 올려 주세요... 아까도 제가 강조했지만... 악플보다 더 무서운게 무플이랍니다. 기억이 다 사라지기 전에... 즐거움과 흥분이 모두 사라지고 귀차니즘이 마음속을 지배하기 전에 빨리빨리 후기를... :-)

Landscape: Canonical의 새로운 서비스, SaaS (SMS as a Service)

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브
휴~ 이러니 내가 캐노니칼/우분투를 좋아하지 않을 수 없단 말이지.

벌써 12월인데 오늘에야 처음으로 Ubuntu의 새 버전인 8.10 Intrepid의 서버 버전을 설치해보았다. 뭐, 그냥 새 배포본일 뿐이지 별다른 생각은 없었다. 설치하는 과정에서 보니까... 소프트웨어/보안패치 자동업데이트 부분이 눈에 띄기는 했었지. 그런데, 잠깐 logout 했다가 다시 접속했을 때, 뭔가 익숙하지 않은 뭔가가 있는 것이 아닌가?

sio4@jangseung:/box/vms$ ssh 192.168.122.182
sio4@192.168.122.182's password:
Linux ubuntu 2.6.27-7-server #1 SMP Fri Oct 24 07:37:55 UTC 2008 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/

  System information as of Wed Dec  3 00:40:01 KST 2008

  System load: 0.0              Memory usage: 5%   Processes:       51
  Usage of /:  8.7% of 7.87GB   Swap usage:   0%   Users logged in: 1

  Graph this data and manage this system at https://landscape.canonical.com/
Last login: Wed Dec  3 00:34:39 2008 from 192.168.122.1
sio4@ubuntu:~$

오~~ 시스템 정보 요약서비스! 좋지. 관리하던 서버가 있던 시절에는 이런 사소한 것에도 많은 관심을 가졌던 터라... 첫번째 느낌은 "향수"랄까? 그런데 자세히 보니... "저 쪽에 가서 이 자료를 그려보고 이 시스템을 관리해보시라"고? 아뿔싸! 아까 건성으로 보아 넘겼던 자동업데이트 부분에서 잠깐 스쳐봤던 그 단어! Landscape! 캐노니칼의 새로운 시스템 관리/모니터링 서비스이다!

대단하다.

배포본 전쟁의 황혼기에 해성처럼 나타나 새로운 시장 구도를 만들어 놓은 이들. 데스크탑에서 서버, 다시 MID와 넷북, 이제는 ARM 기반 시스템으로 전개되는 모습만으로도 그 들과 아무런 상관도 없는 내가 다 찌릿찌릿 하더니, 이제는 SaaS 형태의 SMS 서비스를 내놓은 것! 이건 뭐~

분하다.


몇 개월 전에 팀에 제안했던 바로 그 서비스. 제품으로써의 SMS를 만든 것이 아니므로 팔 수는 없지만 (아니, 이제 와서 그저 그런 SMS 제품 하나 만들어 봐야 팔 수도 없겠지만 :-), SaaS 개념을 도입한 SMS라면 충분히 고객에게 새로운 가치를 줄 수 있을 뿐만 아니라, 영업/마케팅 측면에서 서비스를 차별화 할 수 있고 개발팀의 입장에서도 각각의 사이트에 청진기를 심어놓는 격이니... 놓치기 쉬운 고객의 헛기침 소리까지 잡아낼 수 있을 것이고... 나름대로 훌륭한 발상이라고 혼자서만 주장하다가 묻혀버린 바로 그 서비스를 다른 회사의 사이트에서 보는 심정이... 찌릿찌릿? 이런...분하다!

캐노니칼! 니들 딱 내 삘이다~!

Welcome! - Landscape
Landscape makes the management and monitoring of Ubuntu systems simple and effective by combining world-class support with easy to use online management tools.
Landscape | Canonical
Landscape - Changing the way you manage your systems

Download the datasheet Landscape is an easy-to-use systems management and monitoring service that allows you to manage multiple Ubuntu machines as easily as one through a simple Web-based interface. The Landscape service provides powerful, automated systems administration capabilities such as management, monitoring and provisioning of packages across multiple machines lowering your per-systems cost of management and administration. Because Landscape is Web-based, it is easy to set up and use and requires no special hardware or specialised skills. View the landscape datasheet for even more details.

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

KLDPConf 8.12 후기  (1) 2008.12.07
우.생.선 - KLDPConf  (4) 2008.03.10
왜 오픈소스인가? 그게 뭔데?  (0) 2008.03.01

ssh 빨리 접속하기, pseudo-tty 살리기, ssh로 웹필터 회피하기

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

(요즘 참여하는 프로젝트에 얽힌) 세 가지 이야기.

1. 먼저 ssh 빨리 접속하기 (접속지연 줄이기)

나의 우분투 데스크탑에서 ssh를 사용하여 리눅스 서버에 접속하는데 접속이 좀 느리다. 네트워크 연결은 문제가 없는데 키 확인을 한 후에 로긴 프롬프트가 뜨기까지 대충 5초는 걸리는 것 같다. 게으른 성격 때문에 웬만하면 그냥 참고 쓰겠는데... 작업 성격이 다섯대의 서버에 로그인 하는 대신, 클라이언트에 위치한 배치 명령만 차례로 던져가며 작업하는 상황이라 반복되는 암호 입력 지연이 좀 거슬린다.

'-v' 옵션을 사용하여 확인해보니, "Unspecified GSS failure. ..." 뭐 이런 이야기가 나온다. (나오고 좀 멈춰 있는다.) 오호라... 관련 설정을 ~/.ssh/config에 해주는 것으로 일단 상황 종료.

뭐? 그런 상황이면 "서로 믿고 사는 사회" 만들면 되지 왜 매번 암호를 입력하냐고? 글쎄... 이상하게 그게 더 맘 편하다

아차차! 설정을 빼먹었네.

GSSAPIAuthentication no

참고로, 대체로 이런 현상은 인증 모듈에 의하여 일어나는데, 예전에는 가장 흔한 경우가 DNS 역추적에 명시적으로 빨리 실패하지 못하고 (또는 성공하지 못하고) 찾아보겠다고 헤메는 경우였다.

2. pseudo-tty 살리기

단순히 "ssh user@remote.host" 형태의 명령으로 원격지에 로그인 하는 경우라면, 명령을 수행하는 창, 화면, tty를 이어받아 원격 쉘이 실행된다. 그런데, "ssh user@remote.host top" 이라고 명령해보면,

$ ssh user@remote.host top
user@remote.host's password: 
TERM environment variable not set.

이렇게 화면 기반의 프로그램은 정상적으로 실행되지 않는다. 그런데, '-t' 옵션을 사용하면 원하는 일을 할 수 있다. 원격 로긴 후 항상 같은 화면 기반 프로그램을 띄워야 하는 상황이라면 유용하다.

3. ssh로 웹필터 피하기 (SOCKS proxy)

망할, 점점 상황은 나빠지고 있다. 윈도용으로만 존재하는 특정 네트워크 클라이언트를 설치해야만 네트워크 접속이 되는 환경. 예외처리로 네트워크에는 참여했으나 결국, 웹 접속은 허용되지 않았다. 그러나 얼마나 다행인가? 우리에겐 ssh가 있으니.

ssh -D8080 -fqCN user@proxy.host

위의 명령을 이용하면 일반적인 ssh 서버인 proxy.host를 웹 필터 우회를 위한 대리자로써 사용할 수 있다. -C 명령은 압축을 사용하기 위한 옵션이고 -f는 접속이 되면 프로세스를 백그라운드로 돌리기 위한 옵션이다.

다음과 같은 파이어폭스 설정을 해주면 우회로 설정 끝.

network.proxy.no_proxies_on : localhost, 127.0.0.1, 192.168.10.0/24, .localdomain
network.proxy.socks : localhost
network.proxy.socks_port : 8080
network.proxy.socks.remote_dns : true
network.proxy.socks_version : 5
network.proxy.type : 1

웹 필터 회피를 위한 경우, 또는 누군가 나의 웹생활을 훔쳐보고 있다는 느낌을 지울 수 없다면... :-)


책: 애자일 프랙티스 (Practices of an Agile Developer)

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

애자일 프랙티스 : 빠르고 유연한, 개발자의 실천 가이드

인사이트; 벤캣 수브라마니암, 앤디 헌트 지음; 신승환, 정태중 옮김

사용자 삽입 이미지

요즘 읽고 있는 책이다. 3주 전부터 읽기 시작했는데 아직이다. 워낙 책 읽는 속도가 느리기도 하고, 또 출퇴근 버스 안에서 주로 읽다 보니 통 진도가 나가지 않는다. 편안히 앉아서 책을 읽을 수 있는 환경이... 간절하다.

실은, 오늘 남은 1/4 정도를 다 읽어야 한다. 회사 도서관에서 빌린 책인데, 기본 2주에 1주 연장한 기한이 오늘이다. 3/4를 이미 읽은 상태인데, 이제 반납 시간이 다가오다보니 별 희한한 생각이 다 든다. 뭐냐면, "살까?" 이런거. 말이 좀 길었는데... 결국 하려던 말은 괜찮은 책이라는 얘기.

먼저, 가벼운 책이다. 복잡한 기술적 설명과 이해가 필요한 책도 아니고 실습이 필요한 책도 아니다. 읽으면서 공감하고, 느끼고, 생각을 배우는 그런 책이다. (요즘 우리 분야에서 이런 책들이 유난히 많이 보이는 것 같다. 나 역시 이런게 목마른 중이라... 이런 책 대환영이다.)

45개의 작은 주제를 악마의 속사귐, 본문, 천사의 충고, 정리/균형잡기의 네 단계로 짤막 짤막하게 이어가고 있어서 나의 경우처럼 토막시간을 이용하여 읽기에 매우 적당하다. 마치, 직장 동료나 선배와 커피 한 잔 마시면서 짧은 대화를 나누는, 그런 느낌으로 읽을 수 있었다는 점이 물리적으로 편안했다.

개념적인 부분부터 세부적인 행동에 이르기까지, 애자일 개발 방법론을 실제로 실무에 적용하기 위한 다양한 실천적 방법들을 설명하고 있다. 간략히 목차를 보면,

 1장 애자일 소프트웨어 개발

 2장 애자일 시작하기

 3장 애자일 기르기

 4장 사용자가 원하는 내용을 제공하기

 5장 애자일 피드백

 6장 애자일 코딩

 7장 애자일 디버깅

 8장 애자일 협력

 9장 에필로그: 애자일로 이동하기

1~3장은 "애자일"의 본질, 개념에 가까운 내용으로 구성되어 있고 4~8장은 주로 그것을 행동에 옮기는 방법에 대하여 다루고 있다. 행동에 대한 부분은 굳이 애자일이라는 용어로 설명하지 않더라도 유용한 부분이며 이미 많은 사람들이 실천하고 있거나 최소한 적용을 위한 노력을 기울이고 있는 내용들이긴 하다. 하지만 이렇게 "애자일 방법론"이라는 주제 안에서 바라보니 왠지 새로운 느낌을 준다.

음... 특히 변화를 꿈꾸는 팀에게 권하고 싶다. 확실히 또는 막연히 느끼고는 있으나 뭘 어떻게 해야 할지 갈팡질팡 헤메고 있는 팀이 있다면, 이렇게 부담스럽지 않은 분량의 짧은 주제를 한 주에 한 두 개씩 함께 읽고, 토의하고, 적용해 나가는 방식으로 변화의 흐름을 타 보는 것도 좋을 것 같다.


미국식 가명 짓기. 에**이 누구야?

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

Neal, Thomas, Paul, 알로크, 아델, Santhosh, Mats, Dimitris, Toshitaka, Nobuhiro, Changhua,... 이상은 업무상 함께 일했거나, 만났거나, 명함을 받은 외국인들의 명함에 기록된 이름 들이다. 우연의 일치일지는 모르겠지만, 알파벳을 사용하는 나라든 아니든, 모두 자신들의 고유한 이름을 단지 영문자/알파벳을 이용하여 적어두었을 지언정, 별도의 미국식 이름을 가진 경우는 없었다. (오히려 한국에서의 활동을 위하여 한글로 발음한 이름을 적어둔 경우도 있었다.)

블라디슬라바, 다라, 구잘, 사유리, 브로닌, 애나벨, 도미니크,.. 이상은 옆에 놓인 TV에서 방송되고 있는 "미녀들의 수다"라는, 한국에서 생활하는 외국인이 등장하는 프로그램에 등장하는 외국인 출연자들의 이름을 보이는대로 적어본 것이다. 프로그램 목적상 외국인임을 강조하기 위한 것인지는 모르겠지만 모두 본명을 사용하고 있었다. (그리고 발음하기 힘든 경우는 있어도, 그런 이름들이 거북하지는 않다. 적어도 난 그렇다.)

전에 근무했던 그다지 "글로벌" 하지도 않았던 회사의 사원들은 대체로 미국식 또는 영어식(?) 이름을 하나씩 가지고 있었다. (사내 유행이었을까?) 꽤 오래 전에 선배 따라 영어 회화 학원에 등록해본 적이 있는데, 첫 시간에 강사가 "미국식 이름이 뭐냐, 없으면 하나 만들어라." 그랬었다. 요즘 영어 유치원, 영어 학원을 다니는 어린이들 역시 대체로 그런 식으로, 강사들의 말 한마디에 의하여, 부모님이 심사숙고하여 지어준 이름 대신 대충 떠올린 미국식 이름을 하나씩 가지고 있는 것 같다. (그런데 대부분의 부모들은 이 현상에 별다른 느낌을 받지 못하는 듯 했다.)

왜 우리에게 또는 우리의 자식들에게 미국식 이름, 아니, 가명(*)이 필요한가? 글쎄, 내가 들었던 설명은 국제화(또는 요즘 표현으로는 글로벌) 시대에 외국인과 교류하고 외국에서 활동하기 위해서는 그들의 입에 거북하지 않은 가명이 필요하다는 것이었다.

일리있는 얘기다. 브랜드라는 관점에서, "입에 담기 쉬운" 이름이 자신을 알리는데 보다 유리한 것은 사실이다. 쉽게 부르거나 외울 수 있고 자주 불리어지면 그만큼 쉽게 인식되거나 기억될 수 있다. 연예인들이 이런 의미에서 가명을 사용한다. 자신이 지향하는 이미지를 담기도 하고, 흔하고 평범한 이름 대신 독특하고 세련된(?) 이름을 사용하기도 한다. (그런 의미에서 미국식 이름, 미국인에게는 효과가 있을 수 있겠다.)

그런데, 가명은 역시 가명일 뿐이다. "국제적 활동을 위하여 몇몇 사업 상대를 상대로 사용하는 미국식 가명" 뿐만 아니라 "국제적으로 널리 알려진 연예인의 가명"이라 할지라도 그 이름으로 그 이름으로 뭐랄까 법적 계약서를 쓸 수도 없고 국회의원에 출마할 수도 없다. (계약서에 싸인하기 전에 사업 상대가 물어올지도 모른다. "저스틴, 그런데 길동 홍이 누구죠?")

음... 아까 그 회사에 근무할 때, 사무실에 찾아온 손님이 내게 "에**"이라는 이름을 가진 사람을 물어왔지만 난 답해줄 수 없었다. "에**이 누가야?"...  "김**"이라고 알고 있던 그가 먼저 나서지 않았다면, 또는 그것이 전화연락이었다면 아마 난 그 손님을 돌려보냈을 것이다. 일반적인 상황에서 이름이라는 것은, 누구에게는 "에**" 이고 누구에게는 "김**"일 수 있는 것이 아니다.


길었던 얘기 줄이면, 나는 이런 사실상 국제적이지 않고, 법적으로 의미없고, 고유성을 갖지 않은 미국식 가명 짓기를 싫어하고 반대한다.

글로벌 감각이 떨어져서인지도 모르겠지만, 다행인 것은 지금껏 업무상 만났던 모든 외국인 들 역시 이 부분에서 만큼은 나만큼 글로벌 감각이 떨어진 사람들이었다는 점이다.

----

* 신분증에 기록되는 이름도 아니고 계약서 등에서 공식적으로 사용할 수 있는 이름도 아니니 확실히 "이름"이라고 보기는 어렵다.

프로젝트 관리: 서브버전 저장소 사본 만들기, svnsync

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

프로젝트 관리 > 버전관리 > 서브버전 저장소 사본 만들기 (Repository Replication)

지금의 업무 환경이 마땅치 않아서 이기고 하고 또 한편으로는 작은 오픈소스 프로젝트를 열어보고자 하는 생각도 있고 하여, 요 얼마간 서브버전을 지원하는 공개 프로젝트 호스팅 서비스를 찾고 있었다. 실은 trac을 지원하는 무료 호스팅 서비스를 원했으나 적당한 것을 찾지 못했다. (도와주세요[각주:1])

프로젝트 호스팅 서비스를 찾다보니 고민하게 되는 것이, 만약의 사태에 대한 대비 또는 써보니 서비스가 성에 차지 않는다든지 하여 이사하게 될 상황에 대한 대책 마련이다. (직접 운영하는 저장소는 단순히 저장소를 묶어 보관하는 것 만으로도 충분한 백업 또는 이전 대책이 서기 때문에 아직까지 이런 필요성을 느끼지는 않았었다.)

서브버전이 제공하는 기능 중에 저장소의 읽기 전용 사본을 만드는 기능이 있다. 기능의 본래 취지는 말 그대로 읽기 전용 사본을 만드는 것이지만 (대부분의 오픈소스 프로젝트를 보면, 커밋 권한을 가진 개발자에 비하여 엄청나게 많은 수의 사용자들이 읽기 전용 권한으로 소스를 받아가게 되는데, 이런 부하를 분산시킬 수 있는 또는 지역으로 미러링 할 수 있는 기능이 필요하다.) 이 기능이 나의 백업/이전 용도에도 적절히 사용될 수 있을 것 같다.

과정은 다음과 같다.

$ mkdir /svn-mirror
$ svnadmin create /svn-mirror/my-project
$ cd /svn-mirror/my-project/hooks
$ cp pre-revprop-change.tmpl pre-revprop-change
$ vi pre-revprop-change
$ chmod 755 pre-revprop-change
$ svnsync init file:///svn-mirror/my-project svn+ssh://repository/var/svn/my-project
sio4@repository's password: 
리비전 0의 복사된 속성
$ svnsync sync  file:///svn-mirror/my-project
sio4@repository's password: 
커밋된 리비전 1.
리비전 1의 복사된 속성
$ svn log file:///svn-mirror/my-project
------------------------------------------------------------------------
r1 | sio4 | 2008-04-08 23:02:46 +0900 (화, 08  4월 2008) | 2 lines

prepare project repository.

------------------------------------------------------------------------
$
  1. 먼저 미러를 보관하기 위한 디렉토리를 만들고 그 안에 빈 저장소를 만든다. (저장소를 복사하는 것이 아니라 변경점을 동기화하는 것이 이 사본 만들기 기능의 방식이기 때문에 저장소 생성은 별도의 작업으로 진행된다.)
  2. 만들어진 빈 저장소에 pre-revprop-change 후크를 설정해준다.
  3. 프로젝트의 주 저장소와 연결하기 위하여 `svnsync init` 명령을 수행한다.
  4. 연결된 사본을 `svnsync sync` 명령을 수행하여 동기화한다.

이상의 간단한 단계를 거쳐 이제 로컬에 저장된, 그리고 주 저장소와 동일한 복사본을 얻었다. 물론 읽기 전용 사본으로써 활용하기 위해서는 보다 정교한 설정이 필요하겠지만 나의 용도인 저장소 백업을 위해서는 이 정도면 충분하리라고 생각한다. 음... 글쎄... 정말 이사갈 일이 생기면 방 빼는 건 쉬웠는데... 다시 들여놓는 것도 그렇게 간단할까?


  1. 혹시 적당한 trac 호스팅 서비스를 알고계신다면 알려주세요. 또는 서버와 라인을 제공해주실 분이 있다면 직접 서비스 운영을 해볼 생각도 있는데요 :-) [본문으로]

시선 고정!

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

"시선 고정!" 뭐랄까... 좀 낚시스럽게 뽑아본다는 제목이 고작 이거다. ... 훗!


기억하는가? 릭 에슬리! 독특한 목소리와 음악으로 나름대로 시대를 풍미했던... 잊고 지내던 이 아저씨가 요즘 화제인가 보다.

옛생각나는 동영상을 보다가 문득 이런 생각이 들었다. 그 동영상 속의 의상, 헤어스타일, 춤, 몸짓 등을 보면서 촌스럽다고 말하고는 있지만, 그다지 어색하게 느껴지거나 거북하지 않은 것이... 그렇다. 결국 그게 내게 익숙한, 또는 자연스러운 모습인지도 모르겠다.

실은, 이런 생각을 하기 전에 문득 떠오른 생각은... 나의 의상컨셉이 이 무렵에 멈춰버린 것은 아닌가 하는 난감한 생각! (물론, 마지막 한 단추까지 꼭 잠궈서 셔츠를 입지도 않고 청셔츠와 청바지로 맞춰입지는 않으니 너무 놀라면 안된다.) 어쨌든, 최소한 그렇게 어색하지는 않다.


사실, 행여라도 내 의상 감각이 저 시점에서 멈춰버렸다고 하더라도 다행히 지금은 저런 옷을 구하여 입는 것이 그리 쉽지도 않을테니 걱정할 것이 없다. 그런데 문제는 다른 곳에 있는 것 같다. 바로 "굳어버린 생각!".

대체로 대부분의 사람들은 어느 시점에서 사고의 틀이 고정되는 것 같다. 그 시점과 굳는 정도는 차이가 있겠지만 말이다. 문제는, 이게 옷 입는 것 보다 치명적일 수 있다는 점. 난 어디에 있는 것일까? 이미 굳어져 버린 후인가? 얼마나 굳어진 것인가? 더 느끼고 깨어질 수는 있는가?

오늘 문득, "시선 고정!", "시점 고정!"이 무섭게 느껴진다.

Rickroll - Wikipedia, the free encyclopedia

Rickrolling is a prank and Internet meme involving the music video for the Rick Astley song "Never Gonna Give You Up". In a Rickroll, a person provides a link they claim is relevant to the topic at hand which actually takes the user to the Astley video. It can also mean playing the song loudly in public in order to be disruptive.

http://www.yougotrickrolled.com/


교사 때리기 : “한국 교사임금 구매력 OECD 최상위권”?

Clip to Evernote

블로그가 이사를 갔어요!

죄송합니다! 대부분의 글을 유지하고는 있으나 일부는 유지하지 못했습니다!
10초 이내에 새로 옮겨진 페이지로 이동할 겁니다.
원하시는 글이 아니면 전체 목록을 확인해주세요!
소용환의 생각저장소 / 아카이브

"기자양반, 뭐가 재밌나? 교사 때리면."

심심하면 나타나는 공교육 때리기, 교사 때리기는 도데체 어떤 의미를 담고 있을까?


문제점 지적하기

그게 사회문제에 대한 기자의 펜이든 팀워크에 대한 팀원의 목소리든, 뭔가 문제점을 지적하려거든, 그것은 반드시 긍정적인 목표를 위해서 이어야 한다. 그렇지 못한 목소리는 단지 때쓰는 소리로 밖에 들리지 않는다. 아니, 그 이상으로 받아들여서도 안된다.

근래에 보도되었던 "한국 교사 임금 OECD 상위권" 관련 기사를 포함해서, 접하게 되는 우리나라의 교사나 공교육 현실에 대한 대부분의 이야기들은 그런 의미에서 선의의 "문제점 지적하기"라고 하기엔 너무 부실하다.

“한국 교사임금 구매력 OECD 최상위권” : 국제 : 인터넷한겨레 The Hankyoreh

한국 교사들의 임금수준이 상대적인 구매력을 고려할 때 경제협력개발기구(OECD) 회원국들 중 상위수준인 것으로 나타났다.
...
특히 한국은 초등학교 교사의 20% 이상이 30세 이하로, 젊은층 비율이 높았다.
...
그러나 수업 외 업무까지 포함할 경우 한국 교사들의 전체 업무시간은 주당 44시간으로, 비교 가능한 18개국중 노르웨이(44시간)와 함께 가장 높았다.
...
교사대 학생 비율은 OECD 전체 평균이 초등학교가 교사 1명당 학생 18명, 중학교가 15.2명, 고등학교가 14.1명인데 비해 한국은 각각 32.2명, 21.9명, 22.5명으로 회원국들중 멕시코와 함께 가장 높은 수준을 기록했다.
...
한편 OECD 국가의 학생 1명당 연간 교육비용은 초등학교 3천915달러, 중.고등학교 5천625달러, 고등학교 이상 1만1천720달러인데 비해 한국은 초등학교 2천838달러,중고등학교 3천544달러, 고등학교 이상 6천356달러로 크게 뒤졌다.

몇일 전의 OCED 최상위 어쩌고 하는 신문 기사가 생각나서 검색해본 내용 중, 한겨레 신문의 기사를 잘라서 인용했다. 그런데 다른 검색 결과나, 그리고 내 기억속에 남아있는 신문 기사의 내용은 첫번째 단락이 전부였다. (황당하군.)

보고서 원문을 확인해보지는 않았지만, 위의 요약 기사로 볼 때 각 국의 교육  현장에 대하여 다양한 팩터를 이용한 분석을 한 모양인데, 그런 우스운 기사들은 이 중 첫번째 하나만을 부각하여 마치 우리나라 교사들이 엄청난 특권계층이나 되는 양, 떠들어 댄 것이다. (떠든 사람 칠판에 적어둘까?) 교육 현장의 이해에 있어서, 비교적 객관적이지 않고 각 국의 사회 경제 구조와 함께 파악하지 않고서는 지표로 사용하기 어려운 요소가 바로 그 첫번째 항목이라는 생각을... 무식한 나도 하게 되는데 말이다.


공교육 문제

위의 결과를 보면 우리 공교육 환경의 모습은

  1. 젊은 (여자) 선생님 위주
  2. 수업시간은 짧은데 업무시간이 긴 구조
  3. 상대적으로 1.5배 정도 과밀 학급 구성
  4. 상대적으로 0.75배 수준의 교육비용

이라는 얘기다. 아! 그래. 하나 빼먹었네... 교사들이 돈 잘 번단다. (적어도 대다수의 검색결과, 내가 본 신문은 그 부분만 이야기하고 있었다.)

이미 잘 알고 있듯이, 특히 초등학교의 경우 남자 교사의 비중이 매우 적고 젋은 여자 교사의 비중이 상대적으로 높다. 아마도 연령대가 낮아진 것은 몇 년 전에 있었던 (정년 조정, 명예 퇴직, 임용 정체 해소, 오히려 인력 부족, 중초임용,... 등으로 이어지는) 대규모 물갈이의 결과인 것 같고, 성비가 심하게 틀어진 것은 교사가 되고 싶은 남자가 별로 없어서겠지. 예전에 주었던 특혜(RNTC 과정을 통한 병역 혜택)도 없어지고... 그런데 한 가지 의아한 것은, 결과적으로 돈 잘 번다는 직업이면서 (최소한 남자들에게는) 인기는 없다는 뜻인데... 말이 되나?

요즘의 (특히)초등학교 학부모들은 젊은 선생님이 자신의 아이를 맏아주기를 그렇게도 바란다고 한다. 내 단골 안경가게는 꽤나 지긋하신 분이 아저씨급의 조수 엔지니어 한 명을 두고 운영하는 곳이다. 지금은 꽤 멀어졌음에도 불구하고 아직 그 곳을 고집하는 것은, 지긋한 그 분에게서 왠지 경륜과 믿음직한 느낌이 베어나오기 때문인 것 같다. 교육에 있어서, 내 아이를 맡기는 상황에서 경륜과 믿음직함이 필요한가? 그런것 같다. 그런데 왜 젋은 선생님을? 아마도 교사의 역할이 아이들의 선생님이 아니라 아이들의 친구이기를 바라는 마음이... 어딘가에 깔려 있는 것이 아닐까? 아니면... 아이가 초등학교 입학 전 몇년 동안 다녔던... 유치원의 젋은 선생님들에게 익숙해져서 그들을 그리워하는 것일까?

대학생 시절, 한 교수님과 나눈 대화 중에, 미국의 대학 환경에 대한 이야기가 생각난다. 강의, 학과 업무, 연구 등의 분리된 운영으로 교수로써 강의에 전념할 수도, 업무에 전념할 수도, 연구 활동에 전념할 수도 있었던 분위기와 대조적으로, 우리의 대학 환경은 강의와 연구, 학과 업무가 중첩되어 진지한 강의를 준비하기도, 의미있는 연구에 전념하기도 힘들다는... 그리고 시간이 감에 따라 점점 뭔가 포기하게 된다는 말씀. (아... 그 분의 강의가... 살짝 그립네.)

우리 공교육 환경도 그런 것 같다. 다부진 다짐, 의지가 없고서는... 과중한 환경에서는 뭔가 포기하기 쉬운 것을, 또는 포기해도 별로 표시가 나지 않는 것을 포기하게 되는 것은, 누구에게나 마찬가지가 아닐까?

OECD 국가. 그것이 의미하는 것이 무엇인지는 모르겠으나 이런 지표를 놓고 이러쿵 저러쿵 한다는 것 자체가, 우리 스스로 그들과 어깨도 나란히 하고 같은 눈높이에서 세상을 보고 싶은 것이겠지? 물론 공교육의 질에 있어서도 우리는 이미 높아진 눈높이를 가지고 있는 것이다. 그런데... 그들의 자식에 비하면 75%의 비용밖에 투자되지 않는, 그들의 자식에 비하면 선생님으로부터의 눈길도 6~70% 정도에 그치는 우리 아이를 생각하면... 부모로써 성이 차지는 않겠다.

그런데 어떡하지? 그렇다고 교사를 더 뽑고 더 많은 비용을 교육에 투자하려면... 더 많은 세금을 걷든지 아니면 잘못 쓰이고 있는 돈의 흐름을 바꿔야 할텐데... 세금을 더 걷으면 세금폭탄 무서워서 대한민국에 못살겠다고 할 것이고, 운하 만들어 물의 흐름을 바꾸는 것이 급선무니 어차피 망가진 교육따위에 쓸 돈 있으면 운하에 써야 하는... 것인가? 표시나지 않는 것을 포기한다면... 교육 투자 포기의 순위는... OECD 최상위권이 아닐까...


대한민국 교사

뭔가 중요한 일을 해야하는 자리가 있다. 말하자면 내 아이의 교육을 맡아줄 그런 자리다. 그 자리에 누가 있었으면 좋겠나? 퇴근 후 접시닦고 주말에는 편의점 알바하느라고... 표시나지 않는 주중 수업시간에 살짝씩 졸고 있는... 생계에 쪼들려서 미술 지도 중 밀린 월세는 어떻게 막을지 고민하는 그런 사람을 원하는가?

대부분의 회사들은 직원의 이중 취업을 금지하고 있다. 자신이 직접 일하지 않는다고 하여도 업체/점포 등을 소유하는 것 역시 금지하고 있다. 부업으로 지친 몸, 점포의 경영 상태에 대한 스트레스 등이 본 업무에 미치는 좋지 않은 영향을 방지하기 위한 규칙이다. 누구에게 고용되어있건 국가에 봉사하고 있건 마찬가지다.


사실, 다른 못난 사람들에 비하여 그렇게 많은 죄를 진 사람들이 아닌데... 무슨 천문학적 비자금을 만들거나 노조를 탄압하거나 심지어는 도시를 쓸어가며 정권을 잡거나... 이런 떳떳한 공공의 적들에 비하면 정말 선량한 소시민에 지나지 않는 사람들이 그들인데 왜 그렇게 씹혀야 하지? 누구 누구 할 것 없이 500원씩 걷어서 바닥이 들어난 물길에 쌓는답시고 꿀꺽, 강물 삼키듯 동전 삼킨것이... 혹시 그 돈 선생님께 냈으니 그렇게 꿀꺽 삼키고 축재한 게 교사인줄 알고 있는 것인가? 흔들린다는 공교육에 대하여 누군가 욕을 먹어야 하고 책임을 져야 하는데... 그것을 전가하고 있는 것은 아닌가? 그도 아니면... 학창시절,  "사랑의 매" 몇 대 맞은 것에 한이 맺혔던 것일까?

기자양반, 힘내시고 철 좀 드세요.

'삶, IT-삷' 카테고리의 다른 글

시선 고정!  (0) 2008.04.08
sio4, SiO4 tetrahedron, 나의 브랜드.  (1) 2008.03.25
항상 시간없고 자원없는 우리들  (0) 2008.03.04