[리뷰] 라라벨 실전 웹 애플리케이션 개발



제이펍 출판사의 "라라벨 실전 웹 애플리케이션 개발(다케자와 유키, 구리우 가즈아키, 오무라 소타로 저/김모세 역)"를 읽고 작성한 리뷰입니다.

표지


PHP 기반의 웹 애플리케이션 프레임워크인 라라벨을 활용한 실전 개발을 목적으로 한 책으로 아키텍처, 라라벨의 특수한 도구 및 기능, 테스트 주도 개발을 통한 실전에의 적용법 등을 다루고 있다.

개인적으로 PHP를 손 뗀지 거의 15년 만에 다시 접하게 되었다. 2003년 즈음 PHP4 버전의 출시를 목도하고 Zend 엔진의 등장으로 가능성을 보긴 했으나 JSP의 출현과 국내 시장의 Java 점유율을 보고 대세가 Java로 기울어졌다 판단하여 손을 떼었다.

하지만 PHP를 사용하며 느꼈던 간결함, 생산성, 용이함의 매력은 Java를 활용하면서도 늘 그리웠던 요소였다. 하지만 PHP의 간결함은 카멜레온 같았고 그 생명력은 상상 이상이었다. 기존의 장점을 잘 살리고 특수 목적 언어의 특수한 위치를 이용하여 더욱 강력한 언어가 된 느낌이다.

어느덧 페이스북에서 PHP를 도입해서 활용한다는 말을 들었고 코드 이그나이터와 같은 프레임워크가 등장했다는 말을 들었다. 그리고 Java 진영에 스프링 프레임워크가 십년 이상 독주한 것과 마찬가지로 최근에는 라라벨이 PHP 세계를 천하통일했다는 말을 들었기에 늘 궁금했는데 마침 이런 좋은 책을 만나 라라벨의 실체를 마주할 수 있었다.

라라벨이 가진 아키텍처나 기능은 스프링과도 상당히 유사하며 데이터 과학 진영에서 자주 활용되는 Python의 기능과도 유사하다. 특정 언어가 여느 언어와 닮았다는 말보다는 사실 프로그래밍 세계의 아키텍처가 상호 장점을 교환하며 동시 발전한다는 표현이 더 옳을 것이다.

어쩄든 그 상호 교류 덕분에 PHP를 손 뗀지는 오래되었으나 내부 메커니즘을 이해하는데 큰 어려움은 없었다. 리조브, 바인드, DI, MI와 같은 개념들은 스프링을 다루며 익숙했고 OAuth나 이벤트 큐 처리 등은 금융권 프로젝트에서 경험한 적이 있었기에 무리없이 소화할 수 있었다. 덕분에 기본 개념을 넘어 이 다양한 기능과 설계를 어떻게 라라벨이 하나로 흡수하는지 그 관계에 주목할 수 있었다.

그런 측면에서 이 책의 적정 독자 수준을 평하자면 적어도 PHP의 기초 문법 정도는 알고 있어야 한다 말하고 싶다. 또, 프로그래밍 세계에 자주 활용되는 프레임워크, 아키텍처, 디자인 패턴의 기본 개념 정도는 알아야 책을 온전히 이해할 수 있을 것이다.

그도 그럴 것이 이 책에서 PHP와 웹 기초는 사실 챕터1에서 한방에 정리해버린다. 라라벨 세일과 홈스테드를 한번에 설치하고 웹 애플리케이션까지 약 50페이지 분량에 다 끝낸다. 기본예제

그 과정에서 PHP 기본 문법은 물론 도커, Virtual Box, 베이그런트, 깃, DB 등의 기초 지식이 필요하다. 일일이 각각의 기능을 설명하지 않고 바로 실습으로 진행하기에 적어도 어느 한 언어의 중급자 이상 실력자는 되어야 이해에 무리가 없을 듯 하다.

무엇보다 마음에 든 가장 중요하다고 생각한 부분은 파트1이다. 파트1을 조금 더 자세히 다룬다면 자체만으로 책 3권의 분량은 나올 것이다. 하지만 가장 필수적이고 깔끔한 부분을 잘 압축 설명하고 있어 제한된 시간 내에 효율적인 학습이 가능하다.

PHP의 기초 애플리케이션을 만드는 과정에서 서드 파티들과의 관계를 쉽게 파악할 수 있음은 물론 PHP 언어가 쉽게 정리되며 추상적인 개념 이해에 앞서 구체적으로 프레임워크가 어떤 모습을 띠고 있는지 눈으로 이해할 수 있다. 이런 구성은 뒤에 등장할 추상적인 아키텍처의 개념을 심도 있게 이해하는데 큰 도움이 된다.

가장 매력적인 부분은 챕터2 ~ 3이다. 보통 아키텍처나 프레임워크를 다루는 책을 볼때 마다 늘 불만인 요소가 있었다. 바로 프레임워크의 아키텍처와 프레임워크 위에서 동작하는 애플리케이션의 아키텍처를 구분하지 않는 구성이 마음에 들지 않았다. 라라벨

이 책은 지금까지 만난 책 중에선 거의 처음으로 둘을 분리하고 있다. 둘은 다른 레이어에서 동작하며 논리적으로도 다른 위치에 존재하기에 확실한 이해를 위해서는 반드시 분리가 필요하다. 이를 분리하여 서술한 덕분에 PHP를 손 놓은지 오래 되었음에도 빠른 이해가 가능했다. 애플리케이션

거기에 일본 책 특유의 꼼꼼함과 친절함이 더해져 정말 나무랄데 없는 양서라는 생각을 했다. 비록 PHP를 만난지 오랜 시간이 되었으나 손을 뗀 입장인지라 아주 객관적인 평을 내리긴 어렵겠지만 시중 어느 책보다도 훌륭한 책이라는 생각이 든다. 적어도 다른 언어를 10년 이상 만지니 잘 모르는 언어일지라도 책의 좋고 나쁨은 구분이 간다.

챕터2에서는 라라벨이 품은 기능들이 대부분 소개된다. 특히 데이터베이스나 HTTP는 늘 활용될 수 밖에 없는 요소들이기에 정독이 필요하다.

반면 인증, 콘솔 애플리케이션, 이벤트 큐, 테스트 등의 내용은 주류이기보다는 일시적 혹은 보조의 개념으로 활용되기에 필요할 때마다 참조하는 것도 나쁘진 않을 것 같다.

어쩄든 라라벨 프레임워크가 타 언어 대비 많은 기능을 내포하고 있어 신기했다. 아마도 PHP가 범용언어가 아닌 웹을 위한 특수 목적 언어에 가깝기 떄문에 가능한 일이 아닌가 싶다.

범용 언어의 경우 제 아무리 뛰어난 오픈 소스 진영의 시너지가 더해질지라도 상호 종속성의 제약때문에 이렇게 많은 기능을 녹이긴 어려울 것이다. 대신 라라벨은 웹에 국한되는 제한된 범위 위에 더 많은 기능을 올릴 수 있다는 장점을 충분히 활용한 느낌이다.

파트2는 분량은 상당하지만 가볍게 한 번 읽고 실전에서 필요한 순간마다 반복 참조하는 것이 학습에 효율적일 것 같다는 생각이 든다.

마지막 파트3에서는 실전 그 자체이다. TDD 그러니까 테스트 주도 개발로 일련의 프로젝트 개발 과정을 거의 전부 다루고 있는 것이 특징이다. 소제목만 보면 단위 테스트라 오인할 수도 있는데 단위테스트는 파트2에서 다룬다.

이 파트에서는 고객 방문 기록을 관리하는 모바일 애플리케이션 API 개발을 예시로 처음 부터 끝까지 테스트 주도 개발을 적용하는 방법을 다룬다.

최소한의 구현에서 데이터 베이스, 밸리데이션, 유스케이스, 클래스 분리 등의 개념이 모두 적용되는데 테스트 개발 도서에서 이렇게 까지 상세하게 개발 과정을 있는 그대로 담은 책은 보기 힘들기에 매우 희소성있는 가치를 지닌 책이라고 할 수 있다. 그대로 따라하다보면 자연스럽게 사내에 훌륭한 개발 절차를 수립할 수 있을 듯 하다.

결론적으로 이 책은 PHP, 라라벨을 넘어 타 언어 진영에서도 배울만한 것들이 가득한 웹 애플리케이션과 프레임워크 및 테스트 주도 실전 기법을 배울 수 있는 매우 훌륭한 책이다.

PHP와 라라벨이 가지는 민첩성을 타 언어에서도 배우고 차용할 부분이 있을 거라는 생각이 들기에 웹 어플리케이션을 개발자라면 누구에게나 추천하고 싶은 도서이다.







© 2019.04. by theorydb

Powered by theorydb