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

  1. 2012.06.12 I/O Debugging 1
  2. 2012.03.21 Oracle 성능, Bind Variable, PreparedStatement
  3. 2012.03.09 kvm, kvmclock, crazy train, "Guest WORK HARD!" 1
  4. 2012.01.25 잡것들! 망할 ActiveX, 그리 간단하지 않은 연말정산간소화
  5. 2012.01.05 TextMate, RailsCast의 선택? :-)
  6. 2011.12.27 kpartx, create device mappings for partitions
  7. 2011.12.19 rdesktop과 ClearType
  8. 2011.11.07 Apache+JSP 환경에서 쫌 동적인 ErrorDocument 2
  9. 2011.08.22 CloudFoundry, Getting Started
  10. 2011.03.04 GMail의 분실사고! 그리고 자료 해방!

I/O Debugging

Clip to Evernote

블로그가 이사를 갔어요!

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

맨날 리눅스 리눅스 하면서도, 참 아는 게 없다. 어쩌면 Technician 수준. I/O가 마구 치솟는데, 누가 그러는지를 모른다. iotop을 떠올리는데도 한참 시간이 걸렸다. 체득되어있지 않은 게지. iotop을 쓰려고 보니 설치되어 있지 않았다. 준비되어 있지 않은 것이고, ㅎㅎ 시간을 꼭 내서 Admin's Tool을 만들어둬야...

암튼, 다음과 같은 방법으로 대충 바쁜 놈을 잡을 수는 있다. 그런데 정량적으로 뽑기는 거의 불가능한 듯.

[root@skcc-omspap2 ~]# sysctl -w vm.block_dump=1; sleep 3; sysctl -w vm.block_dump=0 [root@skcc-omspap2 ~]# dmesg | more

암튼, 좀 부끄러운...

Oracle 성능, Bind Variable, PreparedStatement

Clip to Evernote

블로그가 이사를 갔어요!

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

매번 볼 때 마다 까먹으니깐 일단 기록.

한참 옛날 이야기지만, 어떤 여성 포털에 당시 일하던 회사에서 서버를 납품한 적이 있었다. LVS로 엮은 웹서버가 한 다섯 대 정도 있었고, DB서버가 8way 였던가? 한 대 들어갔다. 웹 개발 회사에서 납품한 PHP기반의 웹서비스가 돌아가기 위한 환경이었는데, 웹서버는 놀고 있는데 DB 서버의 Load가 50까지 차 올라갔다. (물론, 사이트가 꽤 떴었고, 사용자의 폭발적 증가가 근원적 문제였다. 문제 아닌가? 암튼,)

결국, 여기 저기 파해쳐본 결과, 일단 PHP로 개발된 웹 Application이 수준 이하였던 것이 가장 큰 이유였고, (세션 관리의 부재, 과다한 DB Query 발생 등등) 그 다음은 사용하는 SQL문이 Bind Variable을 사용하지 않는 RAW Statement(어떤 전문 용어가 있는지는 모르겠다.)였다는 것.

일단, PHP의 세션 기능을 이용하도록 Application을 수정하고, DBMS 연동을 위한 shared code를 만들어 사용하게 했고, SQL문을 Bind Variable을 사용하도록 수정했다.

말할 것도 없지만, 결과는 엄청난 Load 감소.

이 과정에서 문제는... DBA들은 문제가 해결되기 전까지 그냥... 시종 일관, DB에는 문제가 없다는 말만 반복했다는 아픈 기억. 그렇지... SQL 문법 오류도 없고 그냥 부하가 많았던 거였지... ㅎ

세월도 흐르고, 장소도 다르지만, 이 오래된 문제는 지금도 있는 듯. 역시, 일단 서버 성능 문제가 부각되겠지만... 암튼, 용어를 기억해두려고.

  • bind variable, PreparedStatement
  • 임시 방편으로, init{SID}.ora 파일에서 CURSOR_SHARING=FORCE 설정
  • DSS나 QUERY REWRITE를 사용할 때에는 사용하지 말라고 함.
prompt
prompt * SQL문 parsing time 구하기
prompt
SELECT NAME, 
 VALUE 
FROM V$SYSSTAT
WHERE NAME = 'parse time cpu'
or NAME = 'parse time elapsed'
or NAME like 'parse count%';

뭐 일단, 여기까지.

'토막상식' 카테고리의 다른 글

I/O Debugging  (1) 2012.06.12
TextMate, RailsCast의 선택? :-)  (0) 2012.01.05
kpartx, create device mappings for partitions  (0) 2011.12.27

kvm, kvmclock, crazy train, "Guest WORK HARD!"

Clip to Evernote

블로그가 이사를 갔어요!

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

그냥 급하게 진행해버려서 로그를 다 놓쳤다. 아무튼, 내 kvm Guest가 미친듯이 달렸다. 이게 처음 겪는 일은 아닌데, 지난 번 사고때는 그냥 "뭐냐~" 하면서 재시작해버렸다. 그러나 이번엔 원인 규명을 위해 약간의 정보를 더 얻어봤다.

1. 어떻게 달리나?

증상은 이렇다. 먼저 미친 기관차에 strace를 걸었을 때,

rt_sigaction(SIGALRM, NULL, {0x7f8c00851300, ~[KILL STOP RTMIN RT_1], SA_RESTORER, 0x7f8bffee9060}, 8) = 0
write(8, "\1\0\0\0\0\0\0\0", 8)         = 8
read(17, 0x7fffe6b5b1b0, 128)           = -1 EAGAIN (Resource temporarily unavailable)
timer_gettime(0, {it_interval={0, 0}, it_value={0, 0}}) = 0
timer_settime(0, 0, {it_interval={0, 0}, it_value={0, 250000}}, NULL) = 0
timer_gettime(0, {it_interval={0, 0}, it_value={0, 203522}}) = 0
select(20, [7 10 16 17 18 19], [], [], {1, 0}) = 1 (in [7], left {0, 999997})
read(7, "\1\0\0\0\0\0\0\0", 512)        = 8
select(20, [7 10 16 17 18 19], [], [], {1, 0}) = 1 (in [17], left {0, 999955})
read(17, "\16\0\0\0\0\0\0\0\376\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 128) = 128

이런 내용을 무지하게 뿌리고 있었다. 단순히 이 내용을 보고 "Resource temporarily unavailable" 오류를 만드는 fd 17에 집중하게 됐는데, 찾아보니,

sio4@sun:~$ sudo ls -l /proc/10815/fd
total 0
...
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 10 -> anon_inode:[signalfd]
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 14 -> anon_inode:kvm-vcpu
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 15 -> anon_inode:kvm-vcpu
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 16 -> socket:[104985]
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 17 -> anon_inode:[signalfd]
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 18 -> socket:[104986]
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 19 -> /dev/net/tun
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 3 -> socket:[104980]
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 4 -> /dev/ptmx
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 5 -> /dev/kvm
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 6 -> anon_inode:kvm-vm
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 7 -> anon_inode:[eventfd]
lrwx------ 1 libvirt-qemu kvm 64 2012-03-09 13:33 8 -> anon_inode:[eventfd]
...
sio4@sun:~$

signalfd 라는데... 이 정체는 뭘까?

아차! Terminal log buffer를 다 날렸다고 해놓고 어떻게 잡았냐고? 혹시나 정상적인 VM을 trace했더니 같은지 비슷한지... 이런 결과가 나왔다.

2. 찾아본 내용

먼저, 리소스 관련 로그를 기반으로 찾아봤더니, VM이 사용할 clock 관련 글들을 몇 개 찾을 수 있었다. 현상으로 봐도 뭔가 연관이 있을 것도 같다. 하지만... 문제의 의도적 재현이 되지 않는 상황에서 연관성이 있는지 확인은 하지 못했다. 좀 두고 봐야 할 문제네.

guest needs to boot with clock=acpi_pm

3. 기타

요거 문제 해결하려고 VM 내의 syslog를 보려 했더니 온통 DHCP lease 관련 로그로 범벅이 되어 있다. 서버라지만 고정IP를 쓰는 것은 좋아하지 않으므로 그것을 고칠 생각은 없고, DHCP 서버의 lease time을 조정하고 싶은데 libvirt/kvm에 의해 자동 실행되는 dnsmasq의 parameter를 바꿀 수 있는 방법을 쉬 알 수 없네.

dnsmasq 자체만 보면, --dhcp-range 옵션의 ',' 분리된 인수 중 세 번째로 leasetime을 줄 수 있도록 되어있는데, kvm의 xml 기반 network 설정에는 해당 기능이 없는 듯 하다. 좀 더 알아보고, 요청을 하든지...

잡것들! 망할 ActiveX, 그리 간단하지 않은 연말정산간소화

Clip to Evernote

블로그가 이사를 갔어요!

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

연말정산간소화 서비스를 싸잡아 욕할 생각은 없지만, 그 것을 구성하고 있는 IT 요소들 중에는 욕먹을 것들이 꽤 있을 것 같다.

오늘은 연말정산간소화 서비스를 이용해서 내역 출력을 하려고 하는데, 무슨 아무런 경고도 없이 뭐라 뭐라 경고를 내더니 유일한 선택인 "OK" 버튼을 눌렀더니만 모든 Explorer 창이 닫혀버린다. 이게 무슨 봉변? (그것도 모르고 "OK" 누른 내가 나쁜가?)

망할 ActiveX, 뭔가 수동 설치가 필요하구만... 그런데 수동설치 안내도 나오지 않고... 여차 저차 관련된 부분(인쇄)의 수동 설치를 시도했으나... 설치프로그램인 Setup_NTS.exe를 실행시키면,

응용 프로그램 구성이 올바르지 않기 때문에 이 응용프로그램을 시작하지 못했습니다.

라는 메시지만 남기고... 설치는 되지 않는다. 아... 구성이 올바르지 않구나... 참~ 친절하신 윈도우님! 왜 윈도가 쉽다고들 하시는지...

뭐야... 포기하고 다른 사람의 PC를 이용하려다가 조금 검색을 해봤더니, 이게 심심한 오류는 아닌가보다. 결론은, Microsoft Visual C++ 2008 Redistributable Package 요런걸 설치하면 된다고 해서, 해봤더니 정말 된다!

정말 간단하게 된다! 이렇게 간단하게 되는 것을 왜! 최초 배포자는 함께 배포하지 않는 것이지? 제목도 Redistributable이라고 되어있구만! 대충 요약 설명을 읽어보면 당연히 함께 배포해야 되는 요소로구만!

단순히 ActiveX를 쓰는 것 만이 문제가 아니다. 자신이 뭘 만들고 있는지, 그리고 그것이 구동하기 위해서는 어떤 조건이 필요한지, 최소한의 노력도 없는 소프트웨어 회사들이여... 제발... 척박한 소프트웨어 환경 이야기만 하지 말아라.


TextMate, RailsCast의 선택? :-)

Clip to Evernote

블로그가 이사를 갔어요!

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

이 세상이... TextMate라는 편집기가 있었다. 나만 몰랐나? 엄청 좋아보인다.

뭘 좀 만들다보니, 우연히 RailsCast라는 온라인 비디오 강좌를 보게 되었는데, 강좌 내용보다 먼저 눈에 들어온 것이 강의에서 사용하는 Text Editor 였다. 본래 배우고, 쓰려던 그것은 잠시 잊고, 이 에디터가 뭔지... 궁금증을 풀어야 했다.

찾아봤더니, 이 곳에 RailsCast에 대해 잘 설명되어 있었다. 무슨 도구를 쓰는지, 어떤 TextMate 테마를 쓰는지까지. (http://railscasts.com/about)

그런데 문제는 다른 곳에 있다. TextMate는 MacOS 전용이라는 것. 허거걱!

그래서... "TextMate for Linux"라고 엉뚱한 검색어를 던져봤더니, 역시나 몇 개가 나온다.

  • TextMate for Ubuntu Linux (link)
  • VimMate - TextMate for Linux (link)

이름으로 보면 VimMate가 더 땡기는데, 일단 검색결과 살펴보는 버릇 때문에 (순전히 그 버릇 때문에) TextMate for Ubuntu Linux라고 되어있는 것을 먼저 봤는데, gedit를 TextMate와 유사하게 꾸며주는 또는 동작하게 만들어주는 방법과 플러그인 등이 설명되어 있다.

그럴싸하다. 동작은 사실, TextMate 조차 잘 모르기 때문에... 잘은 모르겠으나, HTML 등을 편집할 때 자동으로 입력을 도와주는 기능 등은 정말... 멋지다! 빠를 뿐만 아니라, 실수도 막아준다.

그런데... 그것 참 이상하지... vim에게 너무 길들여진 나는(그렇다고 vim을 능수능란하게 잘 활용하는 것도 아니면서) 이 환경이 좀 어색하다. 마우스를 찍으면 커서가 옮겨갈테고, 아마도 연신 콜론을 찍어댈텐데... 바꿀 수 있을까?

일단... 설정만 한 상태에서... 그냥 접어뒀다.

다음에 시간이 되면, VimMate를 좀 봐야겠다. 역시 난 이게 어울릴 것 같다.

kpartx, create device mappings for partitions

Clip to Evernote

블로그가 이사를 갔어요!

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

재밌는 프로그램이네. 예전에는 통짜 Disk Image를 loopback으로 마운트하기 위해 partition 시작 위치 찾고 어쩌고... 그랬었던 기억인데, 이 물건이 그런 문제를 참 쉽게 풀어준다. 어디서 얼마나 호환되는지 시험은 안해봤지만, 간단한 시험에는 성공. 괜찮네.

Kpartx can be used to set up device mappings for the partitions of any
partitioned block device. It is part of the Linux multipath-tools.

쓸 일이 있어서 간단히 시험해봤는데,

$ sudo kpartx -v -a sdb.img
add map loop0p1 (252:1): 0 7856128 linear /dev/loop0 8192
$ sudo mount -o ro /dev/mapper/loop0p1 /mnt
$

잘 동작한다. 애용해야겠다.

rdesktop과 ClearType

Clip to Evernote

블로그가 이사를 갔어요!

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

요즘 회사에서는 업무 환경에 VDI를 구축하겠다고 난리다. 뭐 난리는 아니겠지만 그냥 그렇게 표현했다. 오늘은 POC를 한다고 VMware View Client를 설치하라고... 주문이 들어왔는데... POC 사이트에 접속을 했건만, 이건 무슨 90년대식 깨진 글꼴? 그래서 잠깐 이것 저것 시도를 해봤다.

1. VMware View Open Client

꽤 오래 전에 공개되었던 VMware View Client의 오픈소스 버전을 찾아서 Google Code에 방문, 프로젝트 사이트에서 최근의 버전을 다운받아 설치했다.
(http://code.google.com/p/vmware-view-open-client/)

amd64용 deb 패키지를 받았더니 Ubuntu에서 무리 없이 설치가 되었고, "프로그램-인터넷-VMware View Open Client" 메뉴를 이용하여 화면을 볼 수 있었다.

그런데 이게 무슨 꼴? 글씨가 삐뚤 빼뚤... 확~ 창을 닫을려다가 잠깐 IP와 접속 정보(Domain과 계정명)만 확인하고는 다음 시도에 들어갔다.

2. tsclient... "프로그램-인터넷-터미널 서버 클라이언트"

우분투에는 메뉴에 "터미널 서버 클라이언트"라는 제목으로 뜨는 프로그램이 있다. 아마도 rdesktop의 프론트엔드겠지. 이 녀석을 이용하여 다시 시도했다. 프로토콜에서 RDP 버전을 5로 설정하고 앞서 확인한 VM의 IP와 계정을 이용해서 접속. 그런데...

  1. 바탕화면 글꼴은 ClearType 적용이 잘 되어 있다.
  2. 그런데 바탕화면 배경 이미지는 없네...
  3. IE 브라우져의 URL 창은 ClearType이 적용된데 반해, Tab은 깨져 보인다. 뭐지? :-(

3. 다시 rdesktop, 손으로.

웹을 좀 뒤져봤더니, -x 옵션을 이용하여 좀 세세한 설정을 할 수 있었다. 그래서,

$ rdesktop -u xxx -p xxx -d xxx -g 1360x768 -x 0x80 10.10.10.10

이렇게, ... 그랬더니...

  1. 이제 ClearType도 완전해졌고(IE Tab 포함)
  2. 바탕화면도 보인다. ㅋ

그냥 -x 옵션을 기록으로 남기기 위해 좀 끄적였는데... 갑자기 예전에 s3c6400 기반 800x480 화면의 디바이스에 rdesktop 포팅하던 기억이 새록 새록 떠오르네... 그게 값이 쌀지는 모르겠으나... VDI라고 한다면 그렇게 가야 하지 않을까... :-)

Apache+JSP 환경에서 쫌 동적인 ErrorDocument

Clip to Evernote

블로그가 이사를 갔어요!

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

이번 글은 좀 색다른 주제다. Apache+JSP 환경에서 동적인 ErrorDocument 작성하기. 웹 관련 개발은 놓은 지가 오래인 데다가... JSP라고는 눈꼽만큼도 해본 적이 없으면서, 그리고 근래에는 Cloud Computing, Android 얘기만 하다가 참 어색하기까지 하네...

요즘 보안관도 아니면서 보안과 관련된 업무를 조금 보다보니, 웹에 불접적으로 접근하는 녀석을 어떻게 잡아낼지가 관심사 중 하나다. 그래서 웹 담당자에게 부탁하기를,

"웹사이트에 누군가 공격을 하려다보면 찔러보는 초기에 404 에러가 발생할거다. 그거 잡아서 로그로 남겨주든지, 실시간으로 mail이나 SMS를 발송해줘라..."

했더니만, 못한다고... 간단히 답을 해버려서 조금 실망. 그래서, 직접 해보기로 했다. (오지랍이긴 하네...)

그래서, 정적인 ErrorDocument를 동적으로 처리하면서, 오류 상황에 대한 리포트를 남기도록 뭔가 해봤다. Android Programming을 시작하면서 Java와 친하지 않았던 것을 쪼금 후회하는 터인데... 어쨌든 서버 환경은 JBoss를 쓰고 있다.

...
out.println("request.getRequestURL() : " + request.getRequestURL() + "<br/>");
out.println("request.getRemoteAddr() : " + request.getRemoteAddr() + "<br/>");
...

요렇게 해봤는데, 허걱! 이게 어인 일? 분명 request.getRequestURL()을 호출하면 오류가 발생한 그 URL을 돌려줄 것이라고 생각했는데 이게 ErrorDocument로 지정된 Handler의 URL만 냅다 돌려주는 황당한 상황 발생.

"그럼 어떤 URL로 공격이 들어왔는지 알 수가 없잖아..."

휴~ 정말 많이 뒤졌다. 계속되는 야근에 피곤해 죽겠는데... 이 지랄같은 성격때문에 그냥 포기할 수가 없다.

결론은 이렇다.

1. Apache 설정

단순하다. 익히 들어 알고 있는 다음의 설정이면 충분하다.

ErrorDocument 404 /error_handler.jsp

요렇게 설정해주면, Apache는 404 오류가 발생했을 때, 지정한 URL로 Redirection을 발생시킨다. 그리고 Redirection 관련 정보를 환경변수로 넘겨주는데, 그 변수 이름은 REDIRECT_URL 등과 같다. 이거 말고도 몇개가 더 있는데, 내겐 이거면 충분할 듯.
(자세한 것은 여기에... http://httpd.apache.org/docs/2.2/custom-error.html )

2. mod_jk 설정

이 부분을 몰라서 충분할 만큼 헤맸는데, 요 부분을 모르던 상황에서는 Apache에서 아무리 환경변수를 설정해줘도, 아무리 다양한 방식으로 JSP 내에서 그것을 읽으려고 노력해도 읽을 수 없었다. 결국, 검색 키워드를 조정하고, 또 고쳐보다 보니... 이 글을 찾았다.
(이거. http://forums.devshed.com/showpost.php?p=225739&postcount=8 )

mod_jk.conf 등과 같은 파일에서...

...
JkEnvVar REDIRECT_URL ""
JkEnvVar REDIRECT_REMOTE_HOST ""
JkEnvVar REDIRECT_PATH ""
...

요렇게, mod_jk 설정에서... JkEnvVar 라는 것을 설정해줘야... 환경변수가 넘어간다고 한다. 하긴... 지금 생각해보니 이게 정말 환경변수라면... httpd에서 설정한 것을 java VM에서 그냥 읽어질리는 없지...

ㅋㅋ 이제야 이해한다는 듯이 말하고는 있지만... 정말 몇 시간동안 짜증이...

3. Error Hander 작성

이제, JSP 코드 내에서, 다음과 같은 방식으로 내게 필요한 환경변수를 읽어올 수 있다.

String redir_url = request.getAttribute("REDIRECT_URL");

이걸 몰라서... 헤매도 너무 헤맸네!

조금 더 시험해서, 명확하게 공격의 흔적을 잡아내게 되면 iptables 명령을 이용하여 Host-IDS를 구성해볼까 한다.

침입자들 이제 딱걸렸어!


CloudFoundry, Getting Started

Clip to Evernote

블로그가 이사를 갔어요!

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

CloudFoundry 맛보기. 이 정도로 사실, 맛을 볼 수는 없겠으나 일단 시간과 능력의 부족으로 Getting Started Guide를 따라해보는 수준으로 정리, 간만에 신세계 구경도 하고 짧게 나마 포스팅도 한다.

먼저, http://www.cloudfoundry.com 에서 계정 신청을 해야하는데, 몇일 전에 CloudFoundry와 Ubuntu와의 뭔가 끈끈한 관계에 대한 글을 읽고 자극을 받아서 한 번 신청해봤는데, 오늘 메일함을 보니 계정 생성 메일이 와있었다. (초대형식으로 가입된다는 이야기)

1. 준비하기

특이한 점이, 웹 인터페이스가 없는 것 같다. 비슷한 서비스인 heroku(http://www.keroku.com) 의 경우에는 기본적인 정보 열람 등이 가능한 웹 인터페이스가 있는데, CloudFoundry는 그게 없다. 아마도 현재는 Beta 상태이므로 상용 서비스가 시작되는 시점에는 뭔가 포털이 생기지 않을까? 아무튼, command line 모드 클라이언트인 vmc를 설치해야 한다.

vmc는 ruby gem 형태로 배포되는데, 다음과 같이 설치가 가능하다. (물론 리눅스 이야기, 그리고 ruby 설치 등은 생략)

sio4@silver:~$ gem install --user-install --no-rdoc --no-ri vmc
Successfully installed json_pure-1.5.3
Successfully installed rubyzip2-2.0.1
Successfully installed highline-1.6.2
Successfully installed terminal-table-1.4.2
Successfully installed vmc-0.3.12
5 gems installed
sio4@silver:~$


2. 시작하기

이제 CloudFoundry에 로그인을 해야한다. 그런데 특이한 점은 CloudFoundry의 독특한 성격. 즉, 배포와 사용이 가능한 "Open PaaS"라는 점 때문에 어디로 로그인할 것인지 "target"을 정하는 과정이 있다는 점이 특이하다.

sio4@silver:~$ vmc target api.cloudfoundry.com
Succesfully targeted to [http://api.cloudfoundry.com]

sio4@silver:~$ vmc login
Email: xxxxxxxx@xxxxxxxx.com
Password: ****************
Successfully logged into [http://api.cloudfoundry.com]

sio4@silver:~$ vmc passwd
Changing password for 'xxxxxxxx@xxxxxxxx.com'
New Password: *********
Verify Password: *********

Successfully changed password

sio4@silver:~$

첫번째 로그인이라서 암호도 바꿔줬다. (가입 완료 메일에 임시 비번이 딸려온다.)


3. 개발하기

이제 간단하게 어플리케이션을 하나 개발(?)해볼 차례.

sio4@silver:~$ mkdir app_name
sio4@silver:~$ cd app_name/
sio4@silver:~/app_name$ cat > app_name.rb << EOF
> require 'sinatra'
> get '/' do
>   "Placeholder"
> end
> EOF
sio4@silver:~/app_name$ vmc push
Would you like to deploy from the current directory? [Yn]:
Application Name: app_name
Application Deployed URL: 'app_name.cloudfoundry.com'?
Detected a Sinatra Application, is this correct? [Yn]:
Memory Reservation [Default:128M] (64M, 128M, 256M, 512M, 1G or 2G)
Creating Application: OK
Would you like to bind any services to 'app_name'? [yN]:
Uploading Application:
  Checking for available resources: OK
  Packing application: OK
  Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK

sio4@silver:~/app_name$

크핫! 이제 http://app_name.cloudfoundry.com 에 접속해보면, 짜잔~ 한 줄 뜬다. :-( 어쨌든 정상 작동!


이야~~~ 멋지지 않아? "준비하시고~", "시~", "작!" 하면 딱 뜨는데... 왜 클라우드를 안써? 아니, 왜 가상화만 생각해? 이게 궁극의 클라우드 아닌감? 게다가 CloudFoundry의 멋진 "Open PaaS" 정책은 (자세히 살펴보지는 않았지만) 데이터 유출의 걱정도 없이 Private PaaS의 구축을 쉽게 해줄 것 같은 느낌. 이거 좀 파봐야겠는데...

아하... 이럴 땐 여건에게 핑계를!!


참고로, 정보 보기

sio4@silver:~$ vmc info

VMware's Cloud Application Platform
For support visit http://support.cloudfoundry.com

Target:   http://api.cloudfoundry.com (v0.999)
Client:   v0.3.12

User:     xxxxxxxx@xxxxxxxx.com
Usage:    Memory   (128.0M of 2.0G total)
          Services (0 of 16 total)
          Apps     (1 of 20 total)

sio4@silver:~$

앱 스무개라... 음... 좋네~ ㅋ

GMail의 분실사고! 그리고 자료 해방!

Clip to Evernote

블로그가 이사를 갔어요!

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

막강 Google이 운영하는 웹메일 서비스인 GMail에서 일부(0.02%인가 0.08% 인가 그러던데, 따지고보면 엄청난 인구다!) 사용자의 주소록, 채팅 기록 등이 사라지는 사건이 있었다고 한다. Tape 백업도 있고 IDC 복제본도 있고 하여 복구가 가능하다고는 하지만, 혹시라도 그 데이터중 일부라도 사라지면... 어쩌나?

클라우드 컴퓨팅. 즉, 내가 인터넷 상의 자원을 쓰려면... 쓴다는게, 잠깐 써본다, 경험한다가 아니라 말 그대로 "쓴다"라고 표현할 수 있으려면 안정성, 지속성, 신뢰성은 기본! 그렇다면 신뢰성은 누가 보장하는가? 특히, 요즘처럼 무료 서비스 시대에 혹은 유료라 하더라도 내 자료의 가치는? 자료 유실에 따른 보상 한도는?

결국, 최소한의 사용자 백업이 가능한 길은 열려있어야 한다! 자신들이 완벽하지 않다면! 메일이라면 Forwarding 기능을 이용한 복제도 방법일 수 있고, Blog 등의 자료 기반의 서비스라면 백업 기능(그것이 내려받기든, AWS S3에 복제하는 방식처럼 서비스를 이용하는 것이든)이 제공되어야 하지 않을까?

클라우드 컴퓨팅의 조건, 자유!

예전에 이 문제와 관련된 소식을 적은 적이 있었는데... 요즘 그들은 어떻게 지내나? ㅎㅎ 궁금한 것 천지, 알고싶은 것 천지, 그러나 알 수 없는 것 천지!