Kiến trúc hệ thống trên Laravel – phần 8

Đây sẽ là 1 series gồm 1 số phần như sau:


Hôm nay chúng ta sẽ đi lướt các component mà có thể cả nhà chưa sử dụng trong Laravel. Đây sẽ là 1 bài chán nhất trong series này ^^.

1. Mở đầu

Làm gì cũng thế, chúng ta phải có kiến thức cơ bản đủ vững để có thể bắt đầu vào dự án thật. Mình thấy có nhiều công ty cho các bạn join ngay vào dự án sau vài ngày tìm hiểu 1 framework mới mà hoàn toàn không có 1 lộ trình cụ thể để verify xem bạn đã sẵn sàng với framework mới đấy chưa.

Với Laravel, mình nghĩ để có thể join được vào dự án 1 cách vững vàng thì các bạn nên nắm bặt được trong đầu Laravel có thể làm được những gì (nắm bắt chứ không phải thành thục nhé :)).

Một resource rất hay mà các bạn có thể xem là trên trang laracasts.com:

L5.1: https://laracasts.com/series/whats-new-in-laravel-5-1

L5.2: https://laracasts.com/series/whats-new-in-laravel-5-2

L5.3: https://laracasts.com/series/whats-new-in-laravel-5-3

L5.4: https://laracasts.com/series/whats-new-in-laravel-5-4

2. Các component hay trong Laravel

2.1. ACL (Access Control List)

https://laravel.com/docs/5.4/authorization

Nói nôm na là hệ thống phân quyền user – role – permission -> Bình thường chúng ta hay sử dụng các package ngoài cho vấn đề này, nổi tiếng nhất là entrustSentinel … Nhưng hiện tại, chúng ta hoàn toàn có thể làm hệ thống ACL trong Laravel vì nó đã chuẩn bị sẵn sàng trong core cho chúng ta rồi, các bạn hãy click vào link trên để tìm hiểu nhé.

2.2. Live chat với Laravel: broadcasting + pusher

https://laravel.com/docs/5.4/broadcasting

Làm live chat, notification, websocket hiện tại với Laravel khá là dễ dàng. Mình đã từng build 1 server socket.io riêng để thử với Laravel (cũng có hỗ trợ sẵn trong core) nhưng với pusher thì đơn giản hơn rất nhiều -> cần tăng tốc độ thì các bạn hãy áp dụng vào ngay nhé.

2.3. Notification với rất nhiều dạng: mail, sms, slack, markdown, broadcast …

https://laravel.com/docs/5.4/notifications

Không chỉ gửi email, bạn có có thể notify user bằng rất nhiều cách khác nhau, và với Laravel thì làm việc đó thật là đơn giản … Không biết có bạn nào từng sử dụng notification package ngoài nào làm việc này chưa ?

2.4. Browser test với Laravel Dusk

https://laravel.com/docs/5.4/dusk

Thực sự rất tuyệt vời khi Laravel release Laravel Dusk, chúng ta giờ có 1 tool quá, quá là tuyệt với để thực hiện integration test –> nếu bạn nào còn chưa sử dụng Laravel Dusk, các bạn phải nghiên cứu và áp dụng vào dự án ngay lập tức. Nhắc lại 1 lần nữa, đây là 1 phần mà bạn phải nghiên cứu ngay và luôn nhé, cực kỳ có lợi cho bạn.

2.5. Official Packages 

Được viết và hỗ trợ chính hãng Laravel nên các bạn an tâm sử dụng các packages này nhé:

Cashier: hỗ trợ các payment gateway online

Envoy: hỗ trợ chạy task ngầm trên server (giành cho các bạn có kinh nghiệm deploy trên server sử dụng ^^)

Passport: build cả  OAuth2 server trên Laravel chỉ trong vòng 30′ >.< -> kể cho các bạn biết, hồi trước bên mình tự build OAuth2 server mất 1 tháng trời T_T.

Scout: Full-text search với eloquent ^^ trên Algolia (mình chửa sử dụng thằng này bao giờ nên ko dám chém)

Socialite: quá nổi tiếng rồi, social authen ^^

2.6. Viết 1 package của riêng bạn

https://laravel.com/docs/5.4/packages

Bạn có thể tích hợp rất nhiều package ngoài vào Laravel -> thế sao bạn không viết các package của riêng bạn cho người khác sử dụng. Bạn hãy thử chia nhỏ dự án của bạn thành các package xem sao -> nó sẽ luyện cho bạn nhưng tư tưởng rất hay về việc chia để trị :))

3. Kết luận

Ở trên là mình chỉ list các component lạ và hay của Laravel mà có thể các bạn chưa sử dụng. Ngoài ra các bạn các bạn phải nắm vững cách sử dụng cache, queue, middleware, routing, sử dụng interface, DI và IoC với Service Provider trong Laravel. Nếu viết API thì cần sử dụng Fractal vào để viết nhé, sẽ đẹp hơn rất nhiều ^^ –> các kiến thức này sẽ được rèn luyện dần nhưng các bạn phải luôn có ý thức tìm cách áp dụng nó vào những cái bạn viết hàng ngày nhé.

Cám ơn các bạn

P/S: ăn gian 1 tí, bên mình đang tuyển dụng nhân tài Laravel nhá, mong gặp bạn trong 1 ngày gần đấy

Portal Beanz Việt Nam tuyển dụng tháng 04 – 2017