https://github.com/lucid-architecture/laravel

clean architecture와 비슷한 형태의 아키텍쳐로, 라라벨 프레임워크 하에서 이 구조로 쉽게 개발을 할 수 있도록 스캐폴딩을 해주는 서비스이다.

lucid architecture의 두드러지는 구성요소는 다음과 같다.

  • service
  • feature
  • job

service

service layer는 feature들을 구현하고 관리하는 곳으로, lucid archtecture에서 가장 바깥 쪽에 위치한다. service provider와 service container를 통해 커다란 프로젝트를 효율적으로 관리할 수 있는 라라벨 프레임워크와 좋은 시너지를 발휘할 만한 구조 설계라고 생각된다.

feature

feature는 글자 그대로 어떠한 기능을 뜻하는데, 이 feature들이 모여 service가 완성된다. 주의할 점은 feature 단에서 기능에 대한 구현을 직접해서는 안되며, feature는 단지 아래 layer인 job을 통해 domain과 communicate하는 역할을 할 뿐이다.

job

repository를 통해 data와 소통하며, 원하는 기능을 구현하는 데 필요한 실제 로직들을 작성하는 곳이다. job은 Domain layer에서 관리된다.

lucid CLI를 사용해 프로젝트를 만들면 아래와 같이 4개의 디렉토리가 생성된다.

  • Data
  • Domain
  • Foundation
  • Service

이 4개의 디렉토리는 각각 clean architecture의 domain - app - infra - interface와 어느정도 대응된다고 생각할 수 있을 것 같다.
이 lucid CLI가 얼마나 유용할 지는 실습을 좀 더 해보고 나서 알 수 있을 것 같다.