| <colbgcolor=#fff,#1f2023><colcolor=#ff2b20> Laravel 라라벨 | |
| | |
| 종류 | 웹 프레임워크 |
| 언어 | PHP |
| 라이선스 | MIT 라이선스 |
| 개발 | Taylor Otwell |
| 최신 버전 | 12.11.1 |
| 유지 보수 버전 | 11.6.1 |
| 관련 사이트 | |
1. 개요
The PHP Framework for Web Artisans.
웹 장인을 위한 PHP 프레임워크
Laravel은 PHP 언어로 작성된 PHP로 웹 개발을 하기 위한 풀 스택 웹 프레임워크이며 오픈 소스이다. 2011년 6월 첫 버전이 출시되었다.웹 장인을 위한 PHP 프레임워크
라라벨은 Ruby의 Ruby on Rails의 설계에 영향을 받아 설계되었다. 그래서 개발 생산성을 높이는 방향으로 만들어졌으며 편리하게 개발 환경을 구축하는 툴과 cli 툴들이 있고 액티브 레코드 패턴을 적용한 ORM이 제공된다.
2023년 기준 스택 오버플로 개발자 설문 조사에서 PHP 프레임워크 중에서 인기가 높다. 심포니 프레임워크의 컴포넌트와 그 밖의 컴포넌트들로 구성되어 있다.
2. 업데이트, 지원 정책
라라벨은 심포니 프레임워크의 컴포넌트로 이루어져 있고 버전 8부터 연간 출시(매년 2월)로 변경되었다.옛날에는 심포니 릴리즈 주기에 따라 6개월에 한 번씩 메이저 버전이 업데이트되었다.
출시된 버전은 총 2년 동안 지원된다. 출시 1년 동안 기능 추가/보안 패치/버그 수정, 이후 6개월간 보안 패치/버그 수정, 나머지 6개월간 보안 패치만 지원된다.
3. 특징
- MVC 패턴의 아키텍처이다.
- 템플릿 엔진 블레이드(Blade) 가 내장되어있다.
- 데이터베이스 다루는 라이브러리 액티브 레코드 패턴의 ORM인 Eloquent(엘로퀀트)와 쿼리 빌더 제공.
- 설정이 간편하고 CSRF, XSS 방지, SQL 인젝션 방지 등 기본적인 보안 사항이 적용되어 있다.
- 의존성 주입, IoC(라라벨에서는 Service Container)
- 미들웨어를 통한 AOP(Aspect Oriented Programming)를 지원하는 등 현대적인 프레임워크들의 기능도 있다.
- CLI 기반의 아티즌(Artisan) 콘솔을 제공. 독립 서버가 아닌 웹 호스팅을 이용하게 되면 대부분 쉘 기능에 제약을 받게 되는데 이때 서버에서 아티즌 사용은 포기해야 한다.
- 파사드를 구현해서(내부는 서비스 로케이션 패턴) 라라벨 내장 클래스를 사용할 때 의존성 주입없이도 쓴다.
- 잡 스케줄러와 웹소켓 지원 패키지도 포함되어 있다.
- 그 밖에 자바스크립트를 명시적으로 쓰지 않고 동적 웹을 만들 수 있는 라이브와이어(컴포넌트 단위에서 래핑되어서 사용자는 신경 쓸 게 줄어든다), 프론트엔드의 자바스크립트를 위한 쉬운 웹팩 설정 패키지인
laravel-mix등 부가적인 패키지 등을 이용할 수 있다. (9 버전대부터는 웹팩보다 빠른 vite로 바뀌었다.)
3.1. 모던 생태계 (TALL, Inertia)
최근의 라라벨은 단순한 백엔드 프레임워크를 넘어 프론트엔드 개발 경험까지 통합하는 방향으로 발전하고 있다. 과거의 LAMP 스택을 넘어 다음과 같은 모던 스택이 주류로 자리 잡았다.- TALL Stack
Tailwind CSS, Alpine.js, Laravel, Livewire의 앞글자를 딴 스택이다. React나 Vue 같은 무거운 자바스크립트 프레임워크를 따로 구축하지 않고도, PHP(라라벨) 코드만으로 SPA(Single Page Application)급의 동적인 화면을 구현할 수 있어 1인 개발자나 소규모 팀에게 생산성이 매우 높다.
- Inertia.js
"모놀리식의 편안함으로 만드는 모던 모놀리스(Modern Monolith)"를 지향한다. 백엔드는 라라벨로 유지하면서 프론트엔드는 Vue, React, Svelte 등을 사용하고 싶을 때 쓰는 접착제 역할을 한다. 별도의 API 서버를 구축하고 라우팅을 분리할 필요 없이, 컨트롤러에서 뷰 컴포넌트를 바로 리턴하는 방식으로 개발할 수 있다.
- Laravel Octane
Swoole이나 RoadRunner를 기반으로 라라벨 애플리케이션을 메모리에 상주시킨다. 이를 통해 매 요청마다 프레임워크를 부트스트래핑하는 오버헤드를 없애, 처리 속도를 획기적으로 개선(벤치마크상 약 2~5배)하는 고성능 패키지다.
3.2. 한국형 게시판 (K-Board) 지원
서구권 웹 문화에 맞춰진 라라벨은 기본적으로 '포럼(Forum)' 형태의 구조를 지향하기 때문에, 한국에서 흔히 쓰이는 '계층형 게시판(답글, 댓글, 리스트형, 갤러리형)' 기능을 구현하려면 손이 많이 가는 편이다.이 때문에 국내 개발자들은 그누보드나 XE의 구조를 라라벨에 이식하거나, 이를 패키지화하여 사용하기도 한다.
- Laravel Board (`wangta69/laravel-board`): 라라벨 환경에서 한국형 게시판(BBS)을 쉽게 구축할 수 있도록 돕는 패키지. 계층형 답글, 댓글, 썸네일 생성, 관리자 페이지 등을 제공하며 Bootstrap 기반의 스킨 시스템을 갖추고 있다. 실제 서비스 적용 예시로는 길라(Gilra) 등이 있다.
4. 장점
- 루비온레일즈처럼 관례기반이라 설정이 별로 필요없다.
- Eloquent ORM이라는 강력한 액티브 레코드 구현체가 있어 SQL을 직접 짜지 않고도 직관적인 데이터베이스 조작이 가능하다. 초기 생산성이 매우 높다.
- 메시지 큐를 지원하는등 다양한 외부도구를 결합할 수있도록 확장성이 있다.
- PHP 의 배열 함수를 객체로 감싼 라라벨만의 컬렉션이 따로있다.
- 그 밖에 헬퍼메서드가 많다.
- 방대한 생태계: Livewire, Inertia.js 같은 모던 프론트엔드 도구부터 Octane(고성능), Sail(도커 환경) 등 개발 편의성을 위한 공식 생태계가 매우 잘 구축되어 있다.
컬렉션은 일관성있고 불변객체라서 편리하다.
5. 단점
- PHP 프레임워크 중에서는 느린 편이라 심포니 프레임워크와 비교된다. [1] 속도는 파이썬 장고랑 비슷하다
- 파사드패턴을 많이 사용하는데 이는 의존성 주입을 사용하지 않는 습관을 기른다는 비판이 있다.
- 메직매서드를 많이 사용해서 IDE 와 플러그인에 따라 개발 경험이 많이 나뉜다.
- 루비온레일즈와 같은 문제로 지적받는데 엑티브레코드 패턴은 SPR(단일 책임원칙) 을 위반하는 패턴이이라는 점. 모델이 하는일이 많아지고 약간의 성능 희생이 있다. 하지만 초기개발은 빠르게 해준다는 일장일단이 있다.
vscode 기본익스텐션으로는 되는게 없다. 멤버 함수 어시스트가 제대로 안된다거나, 타입추론이 제대로 안되는 등 vscode 에서는 phptools 를 설치하자, 그래서 ide helper 툴과 익스텐션을 사용하면 나아진다.
유료 IDE 인 php 스톰은 2024년까지 별도 플러그인이였다가 2025년부터 통합되었다.
6. 버전 리스트
| <rowcolor=#fff> Laravel 버전 | PHP 버전 |
| 12 (최신) | ^8.4 |
| 11 | ^8.2 |
| 10 | ^8.1 |
| 9 | ^8.0.2 |
| 8 | ^7.3 | ^8.0 |
| 7 | ^7.2.5 | ^8.0 |
| 6 | ^7.2.5 | ^8.0 |
| 5.6 | ^7.1.3 |
| 5.5 | >=7.0 |
| 5.3 | >=5.6.4 |
| 5.1 | >=5.5.9 |
| 5.0 | >=5.4 |
| 4.2 | >=5.4 |
| 4.1 | >=5.3 |
6.1. v11 이후의 주요 변화 (Streamlined Structure)
2024년 출시된 라라벨 11부터는 개발 생산성을 위해 애플리케이션 구조가 대폭 간소화되었다. 이는 루멘(Lumen)과 같은 마이크로 프레임워크의 장점을 흡수한 것으로 평가받는다.- 커널(Kernel) 제거: 기존에 라우팅과 미들웨어를 관리하던 `app/Http/Kernel.php`와 `app/Console/Kernel.php` 파일이 삭제되었다. 대신 `bootstrap/app.php` 파일 한 곳에서 애플리케이션의 모든 생명주기를 관리하도록 변경되었다.
- 설정 파일 최소화: `config` 폴더 내의 수많은 설정 파일들이 기본적으로 숨겨지며, 대부분의 설정이 `.env` 환경 변수 파일 하나로 제어되도록 바뀌었다. (필요한 경우 명령어를 통해 퍼블리싱하여 수정 가능하다.)
- 기본 DB 변경: 개발 편의성을 위해 기본 데이터베이스 연결이 SQLite로 변경되었다.
7. 라라벨을 사용 중인 사이트들
[1] 라라벨을 만든 개발자 오트웰씨는 라라벨이 느리면 상태유지할수있는 코드로 변경하고 octane 을 쓰라고 한다.