|
응용 프로그램 개발자로 살다 보면, 원론적인 내용 보다는 당장의 개발에 필요한 기술에 관심을 가지게 되고 그 때 쌓인 경험으로 개발자 생활을 계속 영위해 가게 된다. 웹 개발도 마찬가지다. 지금까지 해오던 패턴이나 해결되지 않는 문제가 발견되었을 때, 간단하게 인터넷 검색을 통해 얻어지는 인스턴트 지식이 진짜 자신의 것처럼 으스대는 모습을 발견할 때도 있다. 이런 나에게 웹을 지탱하는 기술은 흥미를 끌기에 충분한 주제였다. 이 책은 “~을 지탱하는 기술”시리즈의 책이다. 이런 시리즈를 기획한 것인지는 모르겠지만 말이다. 이전에 “구글을 지탱하는 기술”을 흥미롭게 본 적이 있어 책을 구매해 보게 됐다.
|
|
보통 웹 개발을 한다고 할 때 그 기반이 되는 HTTP 프로토콜에 대한 RFC 문서를 보았을 개발자가 얼마나 있을까? 그것도 영어로 된, 긴 스펙(Spec) 위주의 설명을 담은 문서를 말이다. HTTP가 웹 기술의 기본이지만 굳이 그러한 규약이나 세부 명세를 모르더라도 개발자라는 타이틀을 가지고 일을 하는데 큰 무리가 없을 정도로 이미 많은 개발 언어와 관련 메소드 또는 라이브러리 들이 존재한다. 또한 상식적으로 내가 겪고 있는 문제를 다른 개발자도 겪었을 거라고 생각하고 접근하면 어떠한 문제에 부딪혔어도 이미 대부분 구글링으로 해결이 가능한 상태인 경우가 많다. 그렇게 게으르게 몇 년을 살아오다가 요즘 다시 개발 트렌드에 대해 여기저기서 많은 정보를 흡수하다보니 다시 기본(Basic)이 궁금해졌다. 구글링으로 여기저기 단편화된 나의 얕은 기본을 다시 한번 확인하고자 하는 생각도 조금 보태서... 그것이 큰 기대없이도 코드 한 줄 없는 이 책을 선택한 이유이다. 이미 이 책을 보았다면 알겠지만 이 책에는 단 한 줄의 실행해 볼 만한 예제코드도 없다. 제목처럼 웹을 지탱하는 기술이라 하여 HTML이나 HTTP, URI 등에 대해 다루고 있지만 그것을 예제를 통해 보여줄 생각은 애초에 없다. 때문에 눈과 손으로 확인가능한 코드가 있어야 안심(?)이 되는 초보 개발자나 아직 경험이 많지 않은 개발자라면 그다지 큰 감흥이 없을 수도 있다. 반대로 경험이 많은 개발자에게는 '머야 새로울게 없는 얘기를 하고 있잖아'라는 시덥잖다는 반응을 부를 수도 있다. 그리고 나처럼 많은 도움이 되는 허당 개발자도 있겠다. 어쨋든 이 책은 구체적인 구현보다는 개념을 이야기하는 책이다. 그 표현을 빌리자면 '아키텍쳐보다도 아키텍쳐에 대한 스타일을 이야기하는' 그런 책이다. 책을 다보고 다시 첫 장으로 돌아와 저자의 이야기를 보았다. 너무나 쉬운 웹이지만 그 웹을 웹답게 '설계'하는 것은 쉽지 않다고 얘기한다. 그렇다. 어쩌면 너무 쉽기 때문에 편하게 가려고 '그렇게 해서는 안되는 것'도 '그렇게 만들었던 경험'이 나에게도 많다. 그렇게 해서는 안된다라고 하지만 실상 그것을 어겼다고 해서 당장 어떤 문제가 표면적으로 발생할 가능성이 거의 없다는 것을 이미 알거나 또는 그 자체를 모르기 때문이다. 기실 그렇게 만들어 놨어도 그걸 머라 할 사람조차 없기 때문이기도 하다. 웹을 웹답게 설계하는 것 즉, 웹다운 설계가 여기서 얘기하는 단 하나의 핵심주제이고 이 책의 전체에 걸쳐 얘기되는 부분이다. 과연 웹다운 설계라는 것이 무얼까? 웹을 만들면서 데이터구조와 DB 설계를 고민한 적은 무수히 많았지만 지금 만드려고 하는 웹서비스가 어떻게 하면 정말 웹다운 서비스를 제공할 수 있을 것인지에 대한 근원적 설계(?)에 대한 고민을 해 본 적은 거의 없다. 그런 측면에서 웹다운 설계라는 것이 존재하고 또 그렇게 만들어야 할 필요가 있으며 그것을 위해서는 지금까지 대수롭지 않게 넘겼던 스펙을 진지한 자세(!)로 이해하는 것이 중요하다고 저자는 말한다. 그리고 그 기반위에서 좋은 웹서비스 설계를 위한 조금 더 구체적인 방법들을 제시한다. 스펙을 알아야 좋은 설계를 할 수 있다고 말하는 저자는 그러한 스펙으로 HTTP 프로토콜과 URI에 대해 설명한다. 사실 HTTP나 HTML, XML 등에 대해서는 익히 많은 경험이 있지만 URI에 대해서는 깊게 생각해 본적이 없다. 그냥 브라우저 주소창에 나오는 웹주소일 뿐인데 URI를 만드는 것도 설계의 범주안에서 생각해야 한다는 주장은 특별히 새롭지는 않았어도 충분히 의미있고 공감할 수 있는 내용이다. 좋은 웹서비스의 설계가 궁극적으로 이 책에서 얘기하고자 하는 주제이기 때문에 일본 우편검색 서비스를 예제로 하여 웹서비스의 설계방법에 대해 얘기한 후반부의 내용은 많은 도움이 되었다. 요즘 많이 들을 수 있는 REST한 (RESTful) 개발에 대해서도 좀 더 구체적으로 개념을 이해하는 계기가 되었다. 웹 개발 경험이 있는 모든 개발자를 대상으로 한다고 하니 이러한 내용에 관심이 있다면 추천할 만한 책이다. 내가 이 책을 선택한 것은 REST라는 아키텍쳐 스타일에 대한 궁금함과 JSON에 대한 개념 그리고 제목대로 웹을 지탱하고 있는 스펙에 대해 한번 더 확인하기 위한 목적때문이었지만 구체적인 이유가 없다하더라도 웹 기술을 사용하는 개발자에게는 도움이 될 만한 좋을 책으로 추천해주고 싶다. |
|
안 그래도 연초에 난데없이 촉박한 시일 내에 내부 인터페이스로 웹서비스를 구현할 일이 생겨서 무척 고생한 기억이 있다. 업계에서 XML이니 SOAP이니 하는 이야기가 화두가 되었던 것이 지난 2000년대 초반이었던 걸로 기억하는데, 새삼스레 옛날 기억으로 되돌아가야 했던 것은 물론이고, 오픈 소스였던 OSGi기반의 번들 서비스와 웹 서비스를 연결하여 조합하려니 관련 참조자료도 거의 없었기에 고생했던 것이다. 그 때 SOAP/RPC와 RESTful 방식의 웹서비스를 모두 구현해 본 경험을 바탕으로 이 책을 다시 접하니 이해가 더 잘되는 것 같았다. 이 책은 현직 프로그래머인 일본인 저자가 웹 서비스를 어떤 방법으로 웹답게 설계할 것인지를 테마로 기초적인 웹 개발 지식들과 설계 노하우들을 전달해주고 있다. 클라이언트와 서버는 어떻게 역할을 분담할지, 바람직한 URI는 어떤 것인지, HTTP 메서드는 어떻게 구분해 써야 하는지 등 현 시점에서의 베스트 프랙티스들을 소개하고 있는 것이다. 구체적으로 웹의 기술적인 백그라운드와 기본 사상, 웹 아키텍처부터 URI, HTTP, HTML, microformats, Atom, JSON 등 하이퍼미디어 포맷, 그리고 RESTful 기반의 웹 서비스 설계에 이르기까지 쉽게 설명되어 있다. 이 책에서는 다양한 예제들을 통해 웹 기반 아키텍처 설계와 통신 설계, 그리고 프로그램 코딩 규칙 등을 잘 설명해주고 있지만, 일반적인 매뉴얼 형식의 기술은 피하고 있다. 즉, 이해를 바탕으로 한 책이지, 프로그래밍 할 때 늘 옆에 끼고 참조하는 매뉴얼은 아니라는 말이다. 뒤편에서는 일본의 우편번호 검색 사이트를 만드는 것을 예제 삼아 웹 서비스를 설명하고 있다. 이 책을 통해 프로그래밍적인 지식뿐만 아니라 단순함을 무기로 삼는 HTTP 프로토콜과 웹의 역사에 대해 잘 알 수 있었다. 특히 SOAP과 REST에 대한 역사와 배경을 읽어보니 왜 현재 시점에서 RESTful 방식의 아키텍처가 인기를 끌고 있는지 이해할 수 있었다. 이 책의 마지막 부분과 몇 군데서 언급하고 있지만, 10여 년간 유지된 HTTP 1.1을 대체할 수 있는 HTML5나 XMPP 프로토콜에 대해서도 지속적인 관심을 기울여야 할 듯싶다. 현재 HTML5는 내부 스터디그룹을 통해 공부를 하고 있는 중인데, 웹 아키텍처와 웹의 표현방식이 점점 더 사용자 관점으로 바뀌고 있는 것을 체감할 수 있다. 웹이 인터넷과 정보혁명을 지금까지 이끌어 나갔듯이, 앞으로도 웹의 변화에 따라 정보의 생산과 배포에도 많은 변화가 일어나리라 본다. |