Laravel: 버전 5부터 현재까지

Laravel은 단순히 변한 것이 아닙니다. 성장했습니다.

오래된 Laravel 5 프로젝트를 열어보면, 서로 다른 시대의 방들이 섞여 있는 집을 보는 것과 같습니다. 작동은 하지만, 컨트롤러가 너무 많은 일을 하고 있습니다. 미들웨어는 낡았고, 헬퍼 파일은 지저분합니다.

하지만 핵심은 그대로입니다. 여전히 routes, Eloquent, migrations, 그리고 Blade를 사용합니다.

Laravel은 다른 프레임워크가 된 것이 아닙니다. 동일한 아이디어의 성숙한 버전이 된 것입니다. 즉, 깔끔한 기본 설정을 제공하여 개발자가 인프라 구축(plumbing)과 싸우지 않고 제품을 출시할 수 있게 해주는 것입니다.

기술의 진화

Laravel 5는 탄탄한 도구 상자였습니다. PHP를 다시 진지한 플랫폼처럼 느껴지게 만들었습니다. 다음과 같은 기능들을 제공했습니다:

  • 요청 필터링을 위한 Middleware.
  • 검증 로직을 깔끔하게 정리하는 Form requests.
  • 백그라운드 작업을 위한 Jobs와 queues.
  • 표현력이 풍부한 데이터베이스 모델을 위한 Eloquent.

Laravel 6, 7, 8은 일상적인 작업을 더 원활하게 만드는 데 집중했습니다.

  • 시맨틱 버저닝(Semantic versioning)을 통한 안정성 확보.
  • 테스트 데이터를 쉽게 만드는 Factories.
  • 코드 중복을 방지하는 Blade components.
  • API 인증을 간소화한 Sanctum.

Laravel 9와 10은 현대적인 PHP를 수용했습니다.

  • 타입이 지정된 속성(typed properties)과 더 나은 반환 타입(return types)을 사용할 수 있게 되었습니다.
  • 테스트가 워크플로우의 핵심 부분이 되었습니다.
  • 생태계가 단순히 코드 그 이상으로 확장되었습니다.

현대의 Laravel은 완전한 작업장(workshop)입니다. 배포, 모니터링, 그리고 AI를 고려한 워크플로우를 포함합니다.

생태계가 진정한 힘이다

Laravel은 단순한 프레임워크 그 이상입니다. 서비스들의 도시와 같습니다. 첫날부터 모든 것이 필요하지는 않지만, 그것들이 존재한다는 사실은 알고 있어야 합니다:

  • 배포(Deployment): Forge는 서버를 관리합니다. Vapor는 AWS에서의 서버리스 스케일링을 처리합니다. Envoyer는 무중단 배포(zero-downtime deployments)를 보장합니다.
  • 관리(Management): Nova는 프리미엄 관리자 패널을 제공합니다.
  • 가시성(Visibility): Horizon은 Redis 큐를 모니터링합니다. Telescope은 디버깅 어시스턴트 역할을 합니다. Pulse는 성능을 추적합니다.
  • 실시간(Real-time): Reverb는 네이티브 WebSocket 지원을 제공합니다.
  • 핵심 유틸리티(Core Utilities): Cashier은 결제를 처리합니다. Scout은 검색을 처리합니다. Sanctum은 API 인증을 처리합니다.

프레임워크에서 생태계로의 전환

가장 큰 변화는 활용할 수 있는 레버리지의 수준입니다. Laravel 5가 PHP를 정리하는 것을 도왔다면, 현대의 Laravel은 구축, 배포, 모니터링, 확장 및 검색을 돕습니다.

무거운 배낭을 메고 가는 것에서 잘 정리된 기내용 가방을 사용하는 것으로 변화한 것입니다. 짐은 줄어들지만 모든 기능은 그대로 유지됩니다.

레거시 앱 업그레이드를 위한 조언

업그레이드를 모든 것을 다시 쓰는 미션으로 취급하지 마세요. 사람이 살고 있는 집을 리모델링하는 것처럼 다루어야 합니다.

  • 한 번에 하나의 메이저 버전씩 업그레이드하세요.
  • 비즈니스 로직을 보호하기 위해 테스트를 활용하세요.
  • 패키지 의존성을 먼저 확인하세요.
  • 릴리스 노트뿐만 아니라 업그레이드 가이드를 읽으세요.

지루한 인프라는 아름답습니다. 그것은 배선 작업 대신 제품 로직에 에너지를 쏟을 수 있음을 의미합니다.

Source: https://dev.to/nazar_boyko/laravel-from-version-5-to-today-the-framework-grew-up-with-us-3cil