라라벨

김석재·2023년 5월 19일
0

PHP

목록 보기
5/6

모델

사용자에게 나타내고자 하는 데이터로서, 코드상으로는 하나의 데이터베이스 테이블에 대해 클래스로 매핑한 것을 의미한다.

모델 팩토리

라라벨에서는 모델을 사용해 더미 데이터를 생성하는 모델 팩토리와 이것으로 생성된 더미 데이터를 데이터베이스에 심는 시딩기능을 제공한다.
모델 팩토리는 데이터를 생성해주고 시더는 생성된 데이터를 가지고 데이터베이스에 심는다. 모델 팩토리를 사용하면 모델 생성시 더미 데이터가 채워진 상태로 생성할 수도 있는데, 실질적으로 작성할 코드는 더미 데이터가 어떻게 채워질지를 정의하는 것이라고 볼 수 있다. 이렇게 정의한 모델 팩토리는 일반적으로 시더에서 호출된다.

시딩

시더를 만들기 위해서는 다음의 명령어를 사용한다.

$ php artisan make:seeder UserSeeder

엘로퀀드 ORM

엘로퀀트는 모델을 통해 사용할 수 있고, 일부 추가된 메서드가 있는 것을 제외하곤 쿼리빌더 또한 가지고 있어서 쿼리빌더도 사용할 수 있다. 엘로퀀트는 모델을 통회 조회하므로 엘로퀀트 컬렉션의 각 요소는 모델이다.

블레이드 템플릿

블레이드 템플릿의 기본적인 내용들과 자주 사용되는 디렉티브인 @yield, @section, @show, @parent 등이 있다. 블레이드 템플릿은 다른 템플릿들처럼 레이아웃을 별도로 구성하는 것이 가능하고, 그러한 레이아웃을 다른 템플릿이 상속받아서 구성할 수 있다. 이러한 레이아웃을 사용하게 되면 자연스럽게 코드의 중복이 제거됨으로 유지보수하기 좋다.
@extend 는 자식템플릿에서 레이아웃을 지정할 때 사용한다.
@yield 는 자식에서 섹션을 지정하여 내용을 채워 넣어주기 위해 사용한다.
@show 는 자식에서 @section~@endsection으로 지정하지 않고도 렌더링된다.

라우팅 & 컨트롤러

라우팅은 프론트 컨트롤러를 지나 라우터와 미들웨어를 거쳐 컨트롤러에 도달하도록 만들어준다. 컨트롤러는 어플리케이션의 주요 로직이 담겨있다. 즉 라우팅은 사용자가 입력한 URL과 그에 해당하는 컨트롤러를 매핑하는 일이라고 볼 수 있다.
라우팅을 위한 라우트들은 routes 디렉터리에 있다.

미들웨어

로그인으로 예를 들었을때 게시글을 작성하는 페이지에서 User가 로그인해야만 로직을 수행하고, 그렇지 않으면 로그인 페이지로 리다이렉트시키고 싶은 경우 미들웨어를 사용하게 되면 간단하게 이런 반복적인 작업을 분리하여 컨트롤러에 요청이 도달하기 전에 처리할 수 있다.

OAuth2

OAuth2는 JWT처럼 토큰을 기반으로 움직이지만 둘은 상당히 다르다. JWT는 토큰에 자체적으로 정보를 가지고 있는 반면 OAuth2는 그 자체로는 아무런 정보도 가지고 있지 않다. 다음은 OAuth2 인증 절차이다.
1. 로그인 페이지에서 특정 사이트로 로그인하기 클릭.
2. 특정 사이트에 이미 로그인이 되어 있는 경우, 인증 버튼 누르기, 로그인이 안된 경우 로그인 먼저 진행
3. 인증이 완료되고 나면 다시 어플리케이션으로 돌아온 뒤 로그인 완료

OAuth2의 인증방식으로는 Code Grant, Password Credentials, Client Credential, Implicit이 있다. 주로 많이 사용되는 방식은 Code Grant이다.
Code Grant 방식에는 Code, Access Token, Refresh Token, Explire, Authentication, Authorization등의 개념이 있다.

라라벨의 큐는 데이터베이 큐를 포함한 Redis, Amazon SQS 같은 서비스를 사용함에 있어서도 일관된API를 제공하므로 백그라운드에서 어떠한 큐 서비스를 사용하는지도 코드에 있어서는 크게 문제되지 않는다.
큐는 Job, Batch 등 관련된 내용이 상당히 많다.

큐 워커

큐는 기본적으로 별도의 프로세스에서 동작하기 때문에 큐 커넥션 드라이버에서 지정한 큐 서비스에 기록된 작업들을 가져와서 처리하는 프로세스가 별도로 필요한게 라라벨에서는 큐 워커가 내장되어 있다.

$ php artisan Queue:work

queue:work는 부팅된 어플리케이션의 상태를 메모리에 저장하므로 코드가 업데이트된 경우 상태를 즉각적으로 반영할 수 없다. 그래서 다시 반영하려면 큐 워커를 다시 시작해야 하는데, 이떄 queue:listen을 사용할 수도 있다.
기본 큐 대기열은 queue.connections.database,queue 설정에 따라 default인데, 이메일을 보내는 큐를 emails 라는 이름을 가진 대기열에 작업 배치할 것이라고 가정했을때 다음과 같이 사용할 수 있다.

vagrant@homestead:~/code$ php artisan queue:listen --queue=emails, default

큐 워커를 한 개만 쓰면 100개의 알림을 보내는 데에도 많은 시간이 소요되기 때문에 큐 워커를 여러 개 띄워서 병렬로 처리하는 것도 가능하다. 큐 워커 프로세스를 다중으로 띄우면 알아서 큐 대기열에 있는 큐들을 분산하여 처리할 수 있어서 메일, 알림, 이벤트 리스너를 빠르게 처리해서 사용자에게 알릴 수 있다.

라라벨 호라이즌

라라벨 호라이즌은 큐를 Redis를 기반으로 사용할때 볼 수 있는 큐를 위한 모니터링 대시보드이며 큐 처리량과 실패한 큐 등을 볼 수 있다.

0개의 댓글