Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

[Book] 25개 애플리케이션으로 배우는 오픈 소스 소프트웨어 아키텍처

오픈 소스 소프트웨어 아키텍처

오픈 소스 소프트웨어 아키텍처 - 8점
에이미 브라운 외 지음, 류성호 외 옮김/인사이트


The Architecture of Open Source Applications 시리즈의 책이 처음 공개되었을 때 참 좋은 책이라는 생각을 했지만, 원서라서 읽지는 못했었다. 어느새 AOSA가 3권이나 나왔는데 그 중 국내에 2권이 번역되어 나왔다. 내가 알기로는 AOSA 2권이 번역 안 되었고 AOSA 1권과 POSA(The Performance of Open Source Applications)가 번역되었다. 한번 읽어봐야지 하면서도 책의 두께도 있고(644페이지) 하다 보니 늦장을 부리다가 이제야 다 읽었다.

아키텍처는 지속해서 검토되어서 이전에는 적합했던 아키텍처가 여전히 유효한지 확인해야 합니다. 현재 아키텍처가 새로운 기술을 받아들일 수 있는지? 커뮤니티의 성장을 장려할 수 있는지? 그리고 새로운 기여자에게 매력적인 아키텍처인지? 2007년 말 이클립스 프로젝트 커미터들은 이런 질문에 '아니오'라는 결론은 내고 이클립스의 새로운 비전을 설계하는 일에 착수했습니다.

"25개 애플리케이션으로 배우는 오픈 소스 소프트웨어 아키텍처"라는 제목대로 인기 있는 오픈 소스 프레적트의 참여자들이 프로젝트에 설계나 의도에 대해서나 프로젝트를 진행하면서 배운 내용을 정리해 놓은 책이다. LLVM, Graphite, Mercurial, Bash, Sendmail, Selenium Webdriver, HDFS, Eclipse 등 유명 프로젝트의 구조나 핵심 부분에 대한 설명이나 프로젝트의 진행 방식에 관해서 설명한다. 프로젝트도 특성이 다 다르지만 각 장의 저자도 다르므로 설명하는 방식이나 초점도 다 다르다. 그래서 연속적으로 읽지 못하고 한 장 읽고 쉬었다가 읽고 하다 보니 오래 걸렸는지도 모르겠다. 나는 원래 성격이 그래서 처음부터 다 읽었지만, 자신이 이미 알고 있는 프로젝트나 관심 있는 프로젝트만 골라서 읽는 것이 더 좋아 보인다. 사실 전혀 몰랐던 프로젝트나 언어나 환경이 달라서 전혀 쓰지 않는 프로젝트는 책을 읽으면서도 큰 감흥이 없었다.

관심 있는 프로젝트는 꽤 재미있게 읽었다. 관심만 가지고 있었지만 잘 몰랐던 프로젝트들은 그 상세한 내용이나 설계의 의도, 동작 방식을 이해할 수 있어서 재미있었고 많이 쓰던 프로젝트는 내가 몰랐던 역사나 무심코 사용하던 기술에 담긴 의도나 만들어진 과정 등의 내용을 읽는 게 재미있었다. 책은 두껍지만 25개나 되는 프로젝트가 포함되어 있으므로 각 기술에 대한 설명을 아주 깊지는 않다. 사실 이런 프로젝트는 책 한 권에 하나씩 설명해도 모자랄 것이므로 글쓴이가 관심 가지는 부분이나 설명하고자 하는 부분에 중점을 두고 설명하고 있다. 그래서 코드도 많이 나오지만, 프로젝트의 전체 아키텍처를 알기는 쉽지 않다. 이 책을 보면 해당 오픈 소스 프로젝트의 아키텍처를 이해할 수 있다기보다는 각 장에서 설명하는 부분을 구현하기 위해서 고민한 부분, 실패한 부분, 잘된 부분 등을 통해서 알게 되는 부분이 많다.

머큐리얼이 중점을 두는 또 한가지는 배우기 쉬워야 한다는 점이다. 머큐리얼 개발자들은 핵심 명령의 수를 줄이고 여러 명령에 사용되는 옵션이 일관성을 갖도록 하는 가운데 사용에 필요한 기능 대부분을 제공하도록 노력했다.

LLVM이 관심만 있으면서도 자세히는 몰랐지만, 이 책에서 컴파일러가 수행하는 단계가 어떻게 되고 LLVM이 어떻게 개선을 했는지를 잘 설명해 주어서 LLVM에 관해 어느 정도 이해를 하게 되었다. 이제는 사용하지 않지만 처음 배웠던 DVCS인 Mercurial은 Git과 달리 Mercurial이 시도했던 설계나 구현 방식들이 꽤 흥미로웠다. 개인적으로 Git도 있으면 좋겠는데 Git은 AOSA 2권에 포함되어 있다. Bash나 Selenium Webdriver는 많이 써보긴 했지만, 이 책에서 그 진행 과정과 역사를 알 수 있어서 무척 재미있었다.

아마도 샌드메일이 얼마나 중요한 소프트웨어가 될지 빨리 알아채지 못한 것이 가장 큰 실수일 것입니다. 세상을 올바른 방향으로 가게 할 몇 번의 기회가 있었지만 그러한 기회를 놓쳤습니다.

2016/06/14 20:50 2016/06/14 20:50