137호. 라라벨 7 시대의 업그레이드 free

2020-05-06

라라벨의 버전은 7로 넘어오면서 약간 복잡해 진 면이 있습니다. 라라벨 커뮤니티에서도 라라벨 버전이 빠르게 올라가는 것에 대한 막연한 두려움(?)도 있는 것 같고요.


이번 글에서는 라라벨의 버전이 무엇을 말하는건지 그리고 라라벨 업그레이드를 위한 하나의 팁을 알려드리려 합니다.


라라벨의 버전이란


공식문서에 따르면 라라벨의 버전은 이렇게 알 수 있습니다.


php artisan --version

방금 컴포져로 업데이트를 했다면 이렇게 나와야 합니다.


Laravel Framework 7.9.2

우리가 흔히 알고 있는 라라벨의 버전은 라라벨 프레임워크의 버전이며, Allication.php 파일에 아래와 같이 선언되어 있습니다.


// 경로 : vendor/laravel/framework/illuminate/Foundation/Application.php

class Application extends Container implements ApplicationContract, CachesConfiguration, CachesRoutes, HttpKernelInterface
{
/**
* The Laravel framework version.
*
* @var string
*/
const VERSION = '7.9.2';

...
}


라라벨 프레임워크의 저장소는 깃헙의 laravel/framework 저장소이며, 패키지스트에도 동일하게 등록되어 있습니다.



라라벨을 설치할 때의 버전은 다르다


반면 laravel new blog 혹은 composer create-project --prefer-dist laravel/laravel blog 등으로 설치할 때에는 라라벨 프레임워크가 아닌 laravel/laravel 저장소의 코드를 사용하며, 역시 패키지스트에도 동일하게 등록되어 있습니다.



laravel/laravel은 라이브러리나 패키지라기 보다는 일종의 보일러플레이트 혹은 스켈레톤 입니다. 프레임워크에 따라서 이 부분을 명시적으로 표기한 것도 있는데요, 대표적으로 초소형 프레임워크로 알려져있는 Slim 프레임워크입니다.


Slim Framework 4 Skeleton Application
Coverage Status

Use this skeleton application to quickly setup and start working on a new Slim Framework 4 application. This application uses the latest Slim 4 with Slim PSR-7 implementation and PHP-DI container implementation. It also uses the Monolog logger.

위의 설명에서 Skeleton이라는 표현을 볼 수 있습니다.


팁. laravel/laravel 코드를 업데이트하는 방법


laravel/framework의 업데이트는 컴포져가 해 주기 때문에 composer.json파일 수정만으로 끝납니다. 문제는 우리가 처음 프로젝트를 만들 때 이용했던 laravel/laravel 코드의 업데이트겠죠. 이 부분은 라라벨 공식문서에서 Upgrade Guide라는 이름으로 제공을 했습니다.


반면, 라라벨 7은 laravel/laravel의 버전이 업데이트가 되었는데도 불구하고 특별한 가이드를 제공하지 않습니다. 물론 시멘틱 버저닝을 충실히 지킨다면 하위호환성을 보장하기 때문에 별 문제는 없을 것으로 예상합니다만, hotfix의 경우는 어떻게 처리해야 할까요?


이 부분에 대해서 새로운 버전을 받아서 diff 툴을 이용해서 merge하는 분도 있습니다. 제가 추천하는 방법은 실제로 코드의 커밋 리스트를 보고 스스로 판단하는게 좋을 것 같습니다.


laravel/laravel의 버전은 깃헙의 tag를 이용하며, 글을 쓰는 현재 등록되어 있는 버전은 아래와 같습니다.


v7.6.0
v7.3.0
v7.0.0

깃헙이 제공하는 Compare changes를 보면 v7.0.0과 v7.3.0과의 비교에서는 총 19개 커밋과 12개의 파일이 수정되었다고 나옵니다. v7.6.0과의 비교에서는 28개의 커밋과 13개의 파일이 수정되었다고 나오죠.



이 정도의 수정은 한땀한땀 처리해도 될 만한 수준이라고 생각합니다. 게다가 꼭 처리해야 하는 커밋은 그다지 많지 않습니다.


정리


composer update를 이용해서 laravel/framework를 업데이트하는 것은 수시로 하는 것이 좋은 것 같습니다. 왜냐하면 버그가 지속적으로 수정되고 있기 때문입니다.


반면 전통적으로 라라벨을 업데이트한다는 의미로서의 laravel/laravel의 업데이트는 제가 위에 소개해 드린 커밋리스트를 보시고 처리하는 것을 추천드립니다. 실제 해 보시면 몇개 되지는 않습니다.


누가 라라벨 버전을 몇 쓰는지 물어보신다고요? php artisan --version의 값을 이야기하는건 반만 맞습니다. 전 앞으로 이렇게 이야기 하려 합니다.


라라벨 버전은 7.6.0 이고, 프레임워크는 7.9.2 네요!

오늘도 즐거운 라라벨 생활 되시기 바랍니다.


이삼구

이에쓰씨컴퍼니 개발 이사. 풀스택 프레임워크로서의 라라벨을 최대한 활용하기 위한 방법을 공부하고 현장에 적용하고 있습니다. 내가 만든 코드는 쉽게 삭제할 수 있어야 한다는 코딩 원칙을 가지고 있습니다.