책 소개
I. 이 책은?
이 책은 PHP 프로그래밍 언어로 작성된 웹 프레임워크인 라라벨을 다룬다.
라라벨 프레임워크는 2011년 세상에 처음 공개됐다(이하 '라라벨'로 쓴다). 2013년 버전4가 공개된 후 줄곧 PHP 개발자들에게 가장 사랑 받는 웹 프레임워크의 자리를 지키고 있다.
이 책은 풀 스택(full stack)과 데브옵스(DevOps) 웹 개발자를 지향한다. 이는 라라벨이 지향하는 바이기도 하다. 라라벨은 웹 프레임워크 뿐만아니라, 개발 환경, 서버 프로비전, 코드 배포까지 웹 서비스 개발에 필요한 모든 도구를 제공한다.
라라벨만 알아서는 웹 서비스를 만들 수 없다. 기획, UI와 사용자 경험, 데이터 모델링, 비즈니스 로직, HTTP 프로토콜, 서버 준비 및 운영 등 웹 프로그래머가 갖추어야 할 소양들도 소개한다. 지금 웹 개발에 입문하려는 독자라면, 이 책을 통해서 웹 프로그래밍을 위해서 어떤 기술을 더 익혀야 할 지 힌트를 얻으시기 바란다.
I.1. 목적
이 책은 다음 목적을 가지고 있다.
- 라라벨 입문을 돕는다.
- 모던 웹 개발 방법론과 모범 사례를 전파한다.
- 실전 프로젝트를 통해 중급 개발자로 성장할 수 있도록 돕는다.
I.2. 대상
이 책은 다음 독자들을 대상으로 한다.
- PHP 언어로 웹 개발에 입문하려는 독자
- 라라벨에 입문하려는 독자
PHP 언어로 웹 개발에 입문하려는 독자라면, 저자는 라라벨로 시작하라고 강력히 권한다. 입문이 어렵다고 알려져 있지만 오해다. 다른 PHP 프레임워크 또는 다른 프로그래밍 언어로 웹 개발을 한 경험이 있는 독자라면 이 책이 라라벨의 매력을 경험해 보는 좋은 기회가 될 것이다.
라라벨은 다른 프로그래밍 언어로 작성된 웹 프레임워크i-1 대비 부족함이 없이 모든 기능 요소를 포함하고 있다. 그래서 풀 스택 웹 프레임워크라 부른다. 라라벨 공식 문서를 처음 보는 사용자는 그 완결성뿐만 아니라, 처음 보는 무서운 용어들에 지레 겁을 먹고 어렵다고 느낄 수 있다. 그런데 라라벨에서만 쓰는 용어는 몇 개뿐이다. 그리고 그 용어들도 흔히 쓰는 기술용어에 새로운 이름을 붙인 것일 뿐이다. (예: 블레이드, 엘로퀀트)
라라벨은 입문자부터 고급 사용자까지 다양한 사용자층을 두루 포용한다. 사실 라라벨 입문은 쉽다. 입문 지식만으로도 웹 서비스를 개발할 수 있다. 다만 잘하기가 어려울 뿐이다(이하 '웹 서비스 개발'은 '웹 개발'로 표기한다).
PHP 언어와 객체지향 프로그래밍에 익숙하지 않는 독자는 부록 B와 C를 먼저 읽고 이 책을 볼 것을 권장한다.
I.3. 이 책에서 자세히 설명하지 않는 내용
- HTML, CSS, 자바스크립트 등 프런트 엔드
- 데이터베이스와 데이터베이스 쿼리 (라라벨은 클래스 문법으로 데이터베이스를 조작할 수 있다.)
이 책에 실린 실전 프로젝트에서는 바로 써도 될 만큼 완성도 있는 서비스들을 개발한다. 그 과정에서 HTML, CSS, 자바스크립트 등 프런트 엔드 코딩을 하고, 데이터베이스를 설계하고 쿼리하는 작업을 한다. 이 책은 라라벨을 주제로 하기 때문에, 나머지 기술들은 꼭 필요한 경우에만 설명한다.
I.4. 이 책의 구성
이 책은 중급자들이 필요한 부분만 사전식으로 찾아보기 위한 형식의 책이 아니다. 총 5부에 걸쳐 라라벨을 처음 접하는 독자들을 위한 단계별 학습을 제공한다.
1부 라라벨 입문
입문자가 알아야 할 내용만 추렸다.
- 라라벨의 전역 환경 설정법을 익히고, 라우팅, 템플릿을 배운다. 이것만 알아도 간단한 프로젝트를 할 수 있다.
- 데이터베이스와 모델, 컨트롤러 등 MVC 구조를 익힌다. 여기까지 익히면 좀 더 나은 구조의 코드를 짤 수 있다.
- 사용자 인증, 메일 보내기, 이벤트, 유효성 검사 등 고급 웹 서비스 구성에 필요한 요소들을 학습한다.
개발 환경 준비와 실습을 포함해서 이틀을 온전히 투자하면 공부할 수 있는 양이다(저자가 오프라인 강의로 경험한 사실이다). 여기까지 학습하면 라라벨의 MVC 구조를 이해하고 심화 학습을 할 준비가 된 상태가 된다.
2부 ~ 4부 실전 프로젝트
- 2부 실전 프로젝트 I - 마크다운 뷰어
- PHP의 표준 의존성 관리 도구로 외부 컴포넌트를 가져와 라라벨의 기능을 확장하는 방법을 배운다.
- 라라벨의 캐시 기능과 프런트 엔드 리소스 빌드 자동화 기능 등을 학습한다.
- 3부 실전 프로젝트 II - 포럼
- CRUDi-2를 마스터한다.
- 클라이언트와 서버간의 HTTP 통신 원리를 이해한다.
- 사용자 인증과 인가, 파일 업로드, 소셜 로그인, 다국어 지원, 풀 텍스트 검색, 콘솔 명령 등의 기능을 학습한다.
- 4부 실전 프로젝트 III - RESTful API 서비스
- 3부에서 만든 포럼에서 생성된 데이터를 다양한 클라이언트에게 제공하는 서비스를 구현한다.
- HTTP의 무상태(stateless) 특성과 API 클라이언트 인증 방법 배운다.
- 사용량 제한(rate limit), 캐싱, 보안 등 고급 주제들을 경험해 본다.
5부 코드 배포
우리가 개발한 웹 서비스를 운영(production) 서버에 배포하는 방법을 학습한다.
- 서버를 구축한다.
- 라라벨의 원격작업실행도구 사용법을 배운다.
- 배포 자동화 스크립트를 작성한다.
부록 A 운영체제별 개발 환경 준비
Mac OS X El Capitan, Ubuntu Desktop 14.04, Windows 10 운영체제에서 개발 환경을 준비하는 방법을 다룬다.
부록 B 속성 PHP 프로그래밍 입문
PHP 언어를 처음 접하는 독자들을 위해 변수와 자료형, 연산자, 제어 구조, 함수, 클로저 등을 소개한다.
부록 C 속성 PHP 객체지향 프로그래밍 입문
클래스와 클래스 멤버, 캡슐화, 상속, 인터페이스 정도만 소개한다. 부족한 부분들은 본문 중간중간에 설명한다.
i-1. 다른 프로그래밍 언어로 만든 웹 프레임워크_ 대표적으로 루비 언어로 만든 루비온레일즈(Ruby on Rails)와 파이썬 언어로 만든 장고(Django)를 들 수 있다. ↩
i-2. CRUD(create, read, update, delete)_ 데이터베이스의 테이블에 새로운 레코드를 생성하고, 기존 레코드를 조회하고 변경하거나 삭제하는 행위. ↩