https://github.com/lucid-architecture/laravel
clean architecture와 비슷한 형태의 아키텍쳐로, 라라벨 프레임워크 하에서 이 구조로 쉽게 개발을 할 수 있도록 스캐폴딩을 해주는 서비스이다.
lucid architecture의 두드러지는 구성요소는 다음과 같다.
service layer는 feature들을 구현하고 관리하는 곳으로, lucid archtecture에서 가장 바깥 쪽에 위치한다. service provider와 service container를 통해 커다란 프로젝트를 효율적으로 관리할 수 있는 라라벨 프레임워크와 좋은 시너지를 발휘할 만한 구조 설계라고 생각된다.
feature는 글자 그대로 어떠한 기능을 뜻하는데, 이 feature들이 모여 service가 완성된다. 주의할 점은 feature 단에서 기능에 대한 구현을 직접해서는 안되며, feature는 단지 아래 layer인 job을 통해 domain과 communicate하는 역할을 할 뿐이다.
repository를 통해 data와 소통하며, 원하는 기능을 구현하는 데 필요한 실제 로직들을 작성하는 곳이다. job은 Domain layer에서 관리된다.
lucid CLI를 사용해 프로젝트를 만들면 아래와 같이 4개의 디렉토리가 생성된다.
이 4개의 디렉토리는 각각 clean architecture의 domain - app - infra - interface와 어느정도 대응된다고 생각할 수 있을 것 같다.
이 lucid CLI가 얼마나 유용할 지는 실습을 좀 더 해보고 나서 알 수 있을 것 같다.