검색엔진

수요일, 6월 29, 2011

[독서광] 안드로이드의 모든 것 분석과 포팅



어쩌다 이번에 한빛미디어에서 새로 나온 '안드로이드의 모든 것 분석과 포팅'이라는 신간을 책이 나오기 전에 미리 읽어볼 수 있었다. 이번에는 서평을 대신해 조금 형식을 바꿔 책에 나온 추천사를 한번 옮겨보았다(주의: 출판사에 발송한 추천사 원문 그대로를 실었으므로 실제 인쇄된 책에 나온 추천사 문구와는 조금씩 차이가날지도 모르겠다. 하지만 전달하려는 내용은 변함이 없다).




“안드로이드와 부대끼는 개발자를 위한 지도와 나침반”

안드로이드 플랫폼은 리눅스를 기반으로 만들어져 있지만, 일반적인 리눅스 개발 플랫폼과는 달리 휴대폰에 특화되어 있으므로 어느 정도 리눅스에 익숙한 개발자라도 새로 익혀야 할 부분이 많다. 이런 과정에서 부딪히는 문제는 C로 만들어진 커널 디바이스 드라이버, 중간을 맡고 있는 C++ 프레임워크, 앱 개발을 위한 자바 프레임워크에 이르는 방대한 분량에 있다. 프로그램 언어도 제 각각이며 추상화 수준도 상당한 차이를 보이지만 결국 모든 구성 요소는 오밀조밀하게 맞물려 돌아가므로 분리해 이해하기란 결코 쉽지 않다. 물론 장애물을 하나씩 차례로 각개 격파하며 안드로이드라는 신기술이 제공하는 흥미로운 비밀을 밝혀내면 가장 좋겠지만 늘 그렇듯 우리에게는 한정된 시간이 문제다. 게다가 지도와 나침반도 없는 상황에서 원시 코드만 뒤지며 돌아다니다 보면 길을 잃어버리기 딱 쉽다. 일례로 안드로이드 코드를 전부 받아오려면 버전과 네트워크 상태에 따라 차이는 나지만 대략 2시간에서 4시간 정도 걸려 10기가바이트짜리 하드 디스크를 가득 채우며, 요즘에 나온 최신 컴퓨터를 사용하더라도 빌드에만 30분에서 1시간 정도 걸리기 때문에 절대로 만만하게 보고 접근할 상대가 아니다.

다행스럽게도 이번에 안드로이드 개발자들의 어려움을 극복하는 데 도움을 주는 길잡이가 등장했다. 이번에 새로 나온 안드로이드 플랫폼은 일반적인 앱 개발서나 안드로이드 프레임워크 소개서를 넘어서 안드로이드 플랫폼을 지탱하는 리눅스 관련 기술(init, udev, uevent)은 물론이고, 입력 디바이스, 센서 하위 시스템, GPS 하위 시스템, 오디오 하위 시스템, IPC 바인더, 카메라 시스템, GDI(그래픽 디바이스 인터페이스)를 원시 코드를 중심으로 집중적으로 설명하고 있다. 단순 코드 나열에 그치지 않고 실제 개발과 이식 과정에서 일어나는 여러 가지 흥미로운 이야기가 현장감 있게 펼쳐지므로 어떤 부분에 주의하고 집중해야 하는지를 간접 경험할 수 있다. 물론 개발자마다 관심 분야도 다르고 실제 맡은 업무도 다르기 때문에 안드로이드와 관련된 모든 부분을 이 책 한 권으로 이해하기란 불가능하지만 그래도 출발점을 결승선으로 조금이라도 당겨 놓는다는 관점에서 이 책의 가치를 찾을 수 있다. 여러 플랫폼에서 드라이버부터 HAL, 프레임워크 개발까지 다루는 안드로이드 플랫폼 개발자라면 긴 여정에 앞서 꼭 이 책을 읽어보기 바란다. 앱 개발자라면 추상화의 늪에 빠져 허우적거린다는 느낌이 들 때 이 책을 펼쳐보면 수면 아래에서 펼쳐지는 상황을 조금이라도 이해하는 데 도움이 되지 않을까 싶다.


안드로이드 내부 구조가 궁금하신 분이라면 이 책을 읽어보시면 조금이라도 갈증이 해소되지 않을까 싶다. 순수 앱 개발자라면 반드시 목차를 먼저 읽어보시고 구입하시길...



EOB

토요일, 6월 25, 2011

[독서광] 넷 마피아



예전에는 해킹이라는 단어가 무척 낭만적이었다. "정보는 자유로워야 한다"는 철학을 기반으로 자유롭게 소프트웨어를 공유하고 문제점을 해결하고 개선하는 일련의 행위를 일컫는 이 단어가 오염되어 요즘에는 금전적인 목적을 달성하기 위해 불법적인 방식으로 타인의 컴퓨터에 침입하는 의미로 변절되어 버렸다. 물론 크래킹이라는 용어를 사용해 원래 해킹과 구분하려는 노력도 있지만 일반인들이 이 둘을 구분하기란 쉽지 않을테다. 그렇다면 일부 언론에서 수박 겉핧기 식으로 다루고 있는 사이버 범죄 현실은 어떨까? 실제 현장에서는 어떤 일이 벌어지고 있을까?



넷 마피아는 봇, 악성 코드를 동원한 분산 서비스 거부(DoS, Denial of Service) 공격을 비롯해 신원 도용, 사이버 테러 등과 같은 여러 가지 사이버 범죄를 (사실을 기반으로) 다루고 있다. 따분한 이론이 아니라 미국, 영국, 러시아를 종횡무진하며 범죄 집단과 벌이는 한 판 승부를 통 크게 서술하며, 실제 지하에서 일어나고 있는 복잡다단한 그들(?)만의 세계를 박진감 있게 그리고 있다. 결말이 상당히 암울한(중국, 러시아 등은 아예 대놓고 사이버 범죄 사업(?) 벌이고 있으며 정부 차원에서 이를 규제하려는 노력도 지지부진하므로 소위 인터넷 강국인 한국은 아주 좋은 먹잇감이다) 박진감 넘치는 테크노 추리 소설로 보면 틀림없겠다. 이미 사이버 범죄는 국경을 넘어 전 세계로 퍼져 나가고 있기에 한국도 더 이상 강 건너 불 구경할 수 있는 안전지대는 아니다. 최근 농협 사태, 현대 캐피탈 사태를 비롯해 제 1금융권 해킹에 이르기까지 다양한 형태의 범죄가 현실화되고 있으므로 (이미 무차별적인 스팸 편지/SMS 살포야 이미 일상다반사고) 사실상 전 국민이 정확한 표적지가 되어(성별, 재력, 성향, 의료 기록에 따라 맞춤식으로) 불법 대출, 도박성 게임, 비아그라를 홍보하는 SMS를 받을 날도 머지 않았다는 생각이 든다. T_T



이 책을 읽다보니 사이버 범죄자들이 합법과 불법을 오가며 사용하는 수법은 상상을 초월할만큼 정교하고 파괴적이므로, 컴퓨터에 접속하기가 두려워질 정도로 최첨단 범죄 기법이 발전했음을 깨달았다(책을 읽다보면 얼마만큼 대단한 수법(일례로 개인이 ATM에서 돈 빼는 상황까지 다 파악한다고 하니...)이 등장하는지 깜짝 놀랄 것이다). 순진하게 안티 바이러스나 안티 스파이웨어 프로그램을 설치해놓고 나 몰라라 안심하고 있다가는 다 털릴지도 모른다는 불안감이 엄습하고 있다. T_T 그렇다고 해서 컴퓨터를 버리고 완전히 오프라인으로 돌아갈 수도 없는 상황이니 될 수 있으면 주의에 주의를 기울여야 겠다. 틈나는 데로 인터넷에서 개인 보안을 강화하기 위한 실용적인 지침을 여러분들께 소개하겠다.



EOB

토요일, 6월 18, 2011

[독서광] 디지털 휴머니즘



간만에 조금 머리 아픈 책을 하나 소개하려고 한다. 부제가 '디지털 시대의 인간 회복 선언'이라고 붙은 디지털 휴머니즘은 세컨드라이프와 Xbox 키넥트를 공동으로 설계한 제론 레이니어가 집필했으며, 원제는 'You are not a Gadget'이다(당신은 전자제품이 아니다?). 레이니어가 가상 현실 부문의 전문가이며 마이크로소프트 소속이며 작곡가라는 사실을 모르고 이 책을 읽으면, 어디서 듣보잡이 감히 소셜 네트워크, 클라우드 컴퓨팅, 모바일이 지배하는 세상에 딴지를 걸까하는 의문이 들지도 모르겠다. 딴지를 거는 목적이 무조건적인 기술 반대가 아니라 경각심을 불러일으키려는 목적이 있다고 서문에서 밝히긴 하지만, 1/3 정도까지는 읽는 사람을 무척 불편하게 만든다. 하지만 절반을 넘기면서부터 컴퓨터를 위한 사람이 아니라 사람을 위한 컴퓨터 기술이 중요하다는 자신의 목적을 확실히 들어내므로, 전반부의 불편함을 만회하고도 남는다.



이 책은 넘사벽인 GEB 만큼의 파괴력은 없지만, 나름 떠올리게 하는 부분이 많다. 음악을 강조하고(본문에서는 MIDI가 현대 음악에 미친 폐해에 대해 집중적으로 공격한다), 수학적인 문제 풀이를 예로 들고, 패턴을 찾고, 문화적인 내용을 컴퓨터 기술과 연결하는 내용을 읽다보면 여러 가지 생각할 거리가 떠오른다. 위키피디아가 종의 다양성을 없앰으로써 지식 전파에 부정적인 영향을 미치는 이유, 유투브와 같은 서비스들이 단편화된 컨텐츠를 퍼트리는 과정에서 문화를 퇴보시키는 이유, 롱테일이 부익부 빈익빈을 강화하는 이유, 파생 상품 등이 판을 치게 된 이유와 이에 대한 방어 방법 등 뜬구름 잡는 이야기가 아니라 오늘날 우리 주변에 벌어지는 현실과 관련해 날카로운 비판도 서슴치 않기 때문에 조금 삐딱한 시각으로 세상을 바라보기를 좋아하는 애독자분들이라면 이 책을 읽어보기 바란다.



그러면 본문 중 재미있는 내용을 살펴볼까?



정보기술만이 지닌 불안정한 특성은, 어떤 디자인이 우연히 틈새를 채워 일단 시행되고 나면 그 완성도와는 상관없이 이를 바꾸기가 매우 어려워진다는 데 있다. 그 디자인은 그 때부터 영구적인 고착물이 되어, 설령 그보다 더 나은 디자인이 나와도 그를 대체하지 못한다.


정말로 생명의 위협을 느끼는 상황이 아니라면 익명으로 글을 올리지 마라.


항공 공학자는 검증되지 않고 아직 추정일 뿐인 이론에 기반해 만든 항공기에 승객을 태우는 일이 절대 없다. 하지만 컴퓨터 과학자들은 그와 비슷한 죄악을 늘상 저지른다.


컴퓨터는 우리로 하여금 모든 단계에서 이진법적인 선택을 제시하는 불행한 경향이 있다. 익명으로 남거나 완전히 노출하기는 쉽지만, 꼭 충분한 만큼만 드러내기는 어렵다.


지배적이고 공식적인 디지털 철학의 가장 짜증스런 주장은 어떤 분야에서는 무보수로 일하는 군중이 보수를 받는 케케묵은 구식 전문가들보다 더 낫다는 것이다.


까다로운 언론을 상대하는 대신 부시 행정부는 시끌벅적하게 반대하면서 서로가 서로를 무효화하는 온라인 군중을 어렴풋이나마 인지하고 그를 이용하려 했다.


롱테일 효과는 창작자들의 매출은 별로 늘려주지 못하지만, 무지막지한 경쟁과 끝없는 가격 인하의 압력을 몰고 온다.


과거에는 투자자가 적어도 그 투자로 무엇을 얻게 될지 이해할 수 있어야만 했다. 새로운 유형의 엘리트 투자가와 실제로 현실에서 벌어지는 상황 사이에는 너무나 많은 층의 추상적 관념이 끼어들어서, 투자가는 자신의 투자가 실제로 어떻게 진행되는지에 대해 개념조차 파악하기 힘들다.


돈의 희소성은, 우리가 지금 아는 대로, 인위적인 것이다. 하지만 정보에 관한 모든 것도 인위적인 것이다. 일정 수준의 강요된 희소성이 없다면 돈은 무가치하다.


차를 훔치거나 집을 터는 일은 쉽지만 실제로 그런 일을 저지르는 사람은 극소수다. 자물쇠는 우리가 궁극적으로 혜택을 받는 사회적 합의를 상기시켜주는 불편한 부적일 뿐이다. 기술은 사람들의 선택을 부추길 수 있지만 선택 그 자체를 대체할 수는 없다.


경제학은 '변경 가능한 규칙들을 변경 불가능한 규칙들에 어떻게 가장 이상적으로 배합하는가'하는 문제를 다루는 학문이다.


엔지니어들은 때때로, 고의로 불완전한 기술을 그보다 약간 덜 불완전하게 만드는, 본질적으로 터무니없는 업무를 떠맡는다.


온라인의 소셜 네트워크 실험이 더욱 급진적이라고 주장하면 할수록, 그 결과가 실제로 보여주는 양상은 도리어 더 보수적이고 복고적이며 친숙하다.


1980년대 초 미디가 나타나기 전까지는 음에 대한 어떤 단일하고 정확한 개념도 음악을 만드는 과정의 필수적인 일부가 되지 못했다.


위키피디아는 이미 영구적인 틈새 사이트로 승격됐다. 미디나 구글의 광고 교환 시스템처럼 일종의 고착물로 자리잡은 셈이다. 그렇게 됨으로써 우리가 잃게 되는 것이 무엇인지를 인식해야 한다. 수학적 증명과 같이 이미 알려진 객관적 진실의 경우에도 위키피디아는 그것을 새로운 방식으로 대화 속에 끌어오는 법을 배울 수 있는 잠재성을 저해한다.


아마도 말을 잘한다는 것은 여전히, 부분적으로는, 성적 과시의 한 형태일 터이다. 말을 잘함으로써, 나는 내가 지적이며 정보가 많은 사람일 뿐 아니라 성공적인 파트너이자 유익한 짝이라는 점을 과시하는 것이다.


이들 회사에는 방 하나를 가득 채울 정도의 MIT 박사 출신 엔지니어들이 포진하고 있다. 그러나 이들이 추구하는 비지니스는, 암 치료제나 저개발 국가들을 위항 안전한 식수원이 아니라 소셜 네트워크으의 성인 회원들끼리 테디 베어와 용 등의 작은 디지털 그림들을 주고받게 해주는 모델이다. 기술적 정교함을 추구하는 길의 종착지에, 인류를 유치원 수준으로 퇴화시키는 놀이터가 놓인 꼴이다.


파편화된 현대 사회에 진절머리가 나는 분이라면 현재 상황 파악과 정리를 위해 머리가 조금 아플 각오를 하시고 주말에 여유롭게 차 한 잔 마시며 이 책을 읽어보시면 좋겠다. 오늘 뽐뿌질은 여기까지. ;)



EOB

일요일, 6월 05, 2011

[독서광] 클라우드 컴퓨팅 구현 기술



요즘 한창 인구에 회자되는 클라우드 컴퓨팅 기술을 파악하기 위해 지난 금요일 플랫폼데이 2011에 다녀왔다. 학생(?)으로서 마땅히 가져야 하는 기본 자세로 예습을 했는데, 바로 오늘 소개하는 클라우드 컴퓨팅 구현 기술이라는 책을 읽었다.



클라우드 컴퓨팅에 대한 이야기야 요즘 사방팔방에 나오므로 여기서 다시 한번 재탕할 생각은 없지만 노파심에서 잠시 위키피디아와 NIST 정의를 가져와봤다.



Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.


요약하지면 클라우드 컴퓨팅은 지역 컴퓨터가 아니라 네트워크 환경에서 구성 가능한 컴퓨팅 지원(자료와 소프트웨어 모두 포함)을 필요/요구에 따라 준비해서 사용 가능한 기술을 의미한다. 아주 신기하고 새로운 만병 통치약으로 보기는 곤란하고 과거에는 여러 가지 제약 사항으로 구현이 어려운 부분이 기술 발전으로 극복되면서 자연스럽게 일반에 퍼져나가는 문화적 현상(?)으로 보는 편이 더 정확할지도 모르겠다.



클라우드 컴퓨팅에 대해 대충 감을 잡았으므로 책을 한번 살펴보자. 이 책은 제목에 '구현 기술'이라는 단어가 붙어있는데, 소위 말하는 약파는 내용이 아니라(약파는 책들은 실체를 가리기 위해 듣도보도 못한 난해한 유행어를 계속해서 반복하는 특성이 있다), 애플리케이션 서버, 분산 코디네이터, 분산 파일 시스템, 대용량 자료 분석 프레임워크, 데이터베이스, 로그 시스템, 캐시 시스템으로 나눠서 실제로 어떻게 시스템을 구축하는지를 설명하고 있다. 구체적으로 쓰리프트, 에이브로, 주키퍼, 하둡, 맵리듀스, HBase, 카산드라, 클라우데이터, 몽고디비, MySQL, 척와, memcached 등을 설치하고 응용하는 방법을 예로 들어 설명한다. 이런 특성으로 인해 이 책은 실제 현장에 뛰어들 기술자에게 적합하다.



본문에서 블로그라는 예를 들어 클라우드 컴퓨팅 서비스를 어떻게 구축하는지 예를 보여주는 방법을 사용하고 있는데, 처음부터 끝까지 완결된 예제가 아니기 때문에(기술을 설명하다 중간중간 블로그에 적용하는 방법을 사용하므로 오라일리 책을 보는 느낌이 들었다) 조금 아쉬운 점이 있다. 또한 책을 읽다보니 기존 기술과 성능 비교, 장단점 파악, 배치와 구성 과정에서 요긴하게 사용할 팁 등이 아쉽다는 생각이 들었지만, 이런 사항은 각자 환경에 따라 천차만별일테니 일반화된 정답은 없기에 책에 담기에는 그리 용이하지 않았으리라는 생각이 든다. 결론적으로 말하자면 클라우드 컴퓨팅에 입문한 개발자가 실제 설치부터 구성, 배치, 간단한 예제 작성과 테스트 방법을 익히기는 부족함이 없다고 본다. 늘 그렇지만 실제 기술 적용 과정에서 풀어야할 숙제는 본인 몫이다.



책과 세미나 덕분에 예습에 이어 복습까지 마쳤으므로 클라우드 컴퓨팅에 대한 기본 개념은 익혔다. 어떻게 한번 써먹어볼지만 남았네?



EOB