너는 ㄷㄷㅊ 무엇이냐

이름이 참 예쁜 그대

 


"장단점 정리는 중간부터! 급하신 분은 스크롤 다운하세요!"

 

 생활코딩 PHP수업을 졸업하고 제 첫 프로젝트는 프레임워크 없이 진행되었습니다. 로그인, 이메일 비번 찾기, 데이터베이스 등 제 손으로 한 땀 한 땀 코딩을 했습니다. 1개월 정도 그 프로젝트에 빠져 살았던 것 같아요. 그때는 그게 맞는지 틀렸는지 모르고 막 코딩을 했습니다. 구현이 되면 성공한거고, 안되면 실패하는 단순하지만 강력한 피드백이 있었죠.

 

 그런데 그런데 그 이후 다른 프로젝트를 진행할 일이 생겼습니다. 그 프로젝트가 개인정보를 다뤄야 하는 프로젝트라서 두려움이 앞섰습니다. 코딩은 하면 됐지만 초보인 저에게는 "직접 코딩했다가 누군가에게 해킹을 당할지도 몰라!"라는 막연한 두려움이 가장 컸습니다. 

 

 그래서 알아보았습니다. 물론 초보이긴하지만 가장 자신 있는 PHP 언어로 만든 안전한 프레임워크를 검색해보았습니다. 그래서 찾은 것이 라라벨(Laravel)이었죠.

 

우오옷!

 제가 하려고 하는 모든 기능이 다 들어있었습니다. 없는 게 없는, 말 그대로 종합 선물 패키지!

 처음 라라벨을 실행하고 그 화면을 보는 순간 그 경이로움은 이로 말할 수 없었습니다. 그제서야 제가 왜 그 이전 프로젝트를 직접 코딩했는지 이해할 수 있었습니다. 그렇습니다. 그 날의 그 환희를 느끼기 위해서 1개월을 고생한 것이었습니다.

 

 맨땅에 헤딩을 해 본 자만 느낄 수 있는 도구의 경이로움!

 

 그렇게 시작된 저의 프레임워크 입문기는 시작되었습니다.

 

 처음 공식문서를 읽을 때 욕이 나왔습니다. 초보들은 이해하지 못할 말들의 향연이었죠. 지금은 그게 당연하다고 생각되지만 초보의 눈에 전체를 보는 눈 따위 개나 줘버렸..

 

 오픈 채팅방에 들어가서 너무 초보 같은 질문이었는지(지금은 생각나지 않지만) 질문을 올리면 하면 공식문서 정독하고 오라는데... 서비스 컨테이너 읽다가 포기한 게 몇 번인지 기억도 나지 않습니다. 그렇게 포기를 반복하다가 안 되겠다 싶어서 그냥 무작정 프로젝트를 시작했습니다. 어떻게든 되겠지라는 생각으로요. 그리고 프로젝트는 성공했습니다. 물론 메이저급의  서비스가 아니라 프로토타입 정도니까 가능했겠죠.

 

 써보니까 좀 알겠더군요. 그리고 생각했습니다.

내가 시작부터 너무 큰 놈을 만났구나. 

 프로그래밍 도구를 사용하는데 순서가 있다면 끝판왕을 만난 것이었어요. 도구치고는 너무 큰 도구를 만나버렸달까. 아기에게 전동드릴을 쥐어준 것 같은 상황이었던 것입니다.

 

그렇게 3년이 지난 지금도 공부 중입니다...

 

 그래도 성과라면 성과랄까. 어느 정도 어떻게 돌아가는지 알게되니 다른 프레임워크(예를 들어 express같은)를 쓰는데 보는 눈이 생겼습니다. 어떤 기능이 부족하고, 어떤 기능이 편리한지. 어찌보면 힘들었지만 좋은 공부가 되었던 것이었죠. 그래서 앞으로 라라벨에 입문할 사람들을 위해 무엇인가를 알려드리고 싶습니다.

 

 어느정도 어려운 것은 동기부여가 되지만 포기할 정도로 어렵지 않았으면 좋겠습니다. 그래서 제가 이해한 내용을 앞으로도 시리즈 형식으로 포스팅하려고 합니다. 짧게 짧게 이해하기 좋게 간단하게요. 어차피 전문적인 내용을 이해가 되게 설명할 정도로 내공이 깊지 않아요.


 그래서 그 첫 번째, 제가 느낀 라라벨이라는 프레임워크의 장단점을 나열해보려고 합니다.

 

1. 장점

① 폭넓은 커뮤니티

 커뮤니티가 좁거나 정보가 적으면 처음 시작하는 사람들은 프레임워크가 아무리 좋아도 시작하기가 어렵습니다. 공부가 어려운 정도가 아니라 불가능해지죠. 놀랍게도 라라벨은 깃헙스타가 2020년 11월 2일 기준 62000개가 넘습니다. 백엔드 프레임워크 중에는 탑급입니다. 프로그래머들 사이에서 인정받고 있다는 근거입니다. 인기가 있는 만큼 커뮤니티도 잘 구성되어있습니다. 라라캐스트라라벨IO 같은데서 필요한 정보들을 잘 알려주고 있습니다. 대부분의 정보들을 얻을 수 있지만 영어인 탓에 접근이 어려운 분들을 위해 한국인 라라벨러들이 모여있는 카카오톡 오픈 채팅방도 있으니 참고하세요.

 

빠른 생산성

 라라벨을 이용하면 빠르게 어플리케이션을 시작할 수 있습니다. 기본적으로 로그인이나 이메일 인증, 레이아웃 등이 지원되기 때문입니다. artisan 이라는 CLI(command line interface)를 이용하면 더 빠르게 적용할 수 있죠. 최근에는 라라벨 Jetstream이라고 불리는 스캐폴딩 기능까지 제공하면서 SPA(single page application)를 빠르게 만들 수 있습니다. 제가 좋아하는 tailwindcss도 자동으로 더해지다니 놀랍지 않을 수가 없어요.

 

2. 단점

① 비동기 처리

 아쉽게도 많은 양의 정보를 동시에 처리하는 기능이 조금 떨어집니다. 제가 앞에서 포스팅했던 Nodejs로 크롤링하기 같은 비동기적인 처리가 아쉽게도 구현이 어렵습니다. 불가능하진 않아요. 찾아보면 방법은 있습니다. 하지만 비교해보면 비동기적인 처리를 하기에 PHP가 불편해요.

 

② 느린 속도

 라라벨이 많은 기능을 포함하고 있어서 그런지는 몰라도 요청을 처리하는데 다른 프레임워크에 비해 느린 속도를 보입니다.

출처: https://decorus.postype.com/post/3538443

 위는 초당 요청 개수를 나타내는데 라라벨은 정말 느린 속도를 보입니다. 장단점이 확실한 프레임워크라는 것이죠.

 

3. 그 외

 제가 라라벨을 사용하면서 구글링을 하면 좀 이상했습니다. PHP를 평가하는 글에는 항상 부정적인 댓글들이 있었거든요. PHP를 옹호하는 사람들과 비판하는 사람들의 의견이 제 눈에는 어려워서 평가를 못하겠지만, 시작한 지 얼마 안 되는 저의 눈에 PHP는 뭔가 아쉬운 언어고, 라라벨은 대단한 프레임워크 같아요. 

 

 그래서 저는 장단점이 확실해서 빠르게 뭔가를 만들어봐야 하는 프로젝트나 홈페이지 같은 가벼운 애플리케이션 같은 경우에는 라라벨을 쓸 것 같아요. 그 외에 많은 데이터를 요청하거나 처리해야하는 프로젝트에는 라라벨을 쓰지 않을 것 같아요. NodeJS, express를 사용할 거고, 연습 프로젝트는 NodeJS, express로 진행하고 있어요.

 

 모든 것을 만족하는 프레임워크를 찾기보다 여러 가지를 익혀서 본인의 목적에 맞게 쓰는 게 답인 것 같습니다. 다음 라라벨 포스팅부터는 심플한 사용기를 포스팅할게요.

 

 

laravel/laravel

A PHP framework for web artisans. Contribute to laravel/laravel development by creating an account on GitHub.

github.com

 


그림 출처 : Human, All Too Human https://decorus.postype.com/post/3538443

홈페이지 정도는 뚝딱 만들어요. 신세계!

+ Recent posts