일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- HTTP
- 배우기 쉬운 언어
- 라라벨
- 별별 웹 용어
- php
- 마크다운 문법
- NPM
- 태그
- Java
- .md
- C
- 아누북스
- laravel
- 웹 개발
- 웹 강의
- go언어
- 웹
- 통합 개발 환경
- composer
- 소프트웨어융합학과
- 백엔드
- 객체지향프로그래밍
- C++
- 라라벨 설치
- 개발 환경 구축
- 경희대학교 국제캠퍼스
- 새로운 언어
- HTML
- tailwindcss
- 구글
- Today
- Total
세상의 모든 지식
Laravel을 6개월 정도 써본 후기 본문
0) 도입
라라벨로 개발을 시작한지 6개월 정도 되었다. 그전에는 CodeIgniter를 사용해서 개발을 하다가 라라벨로 넘어 오면서 느낀 점들을 간략하게 정리해보고자 한다.
우선은 PHP 프레임워크들에 대한 소개다.
https://www.hongkiat.com/blog/best-php-frameworks/
대략 정리를 해보자면,
- Laravel
- Symfony
- CodeIgniter
- Yii 2
- Phalcon
- CakePHP
- Zend Framework
- Slim
- FuelPHP
- PHPixie
CodeIgniter는 2006년에 개발된 프레임워크이다. 그리고 베타 버전과 1, 2, 버전을 거쳐서 지금 3.1.7버전까지 다다랐다.
CodeIgniter는 기본적으로 MVC 패턴을 기반으로 하고 있다. 웹 어플리케이션의 구조를 Model, View, Controller의 세 부분으로 나눠서 각각
- Model : 데이터베이스에서 값을 불러 오는 등의 역할을 수행함.
- View : 웹 프런트와 관련된 작업을 처리함.
- Controller : Model과 View를 연결해 주는 역할을 수행한다.
- index.php는 CodeIgniter을 시동하기 위한 기본적인 리소스들을 초기화 하는 Front Controller로서의 역할을 수행함.
- Router은 각각의 HTTP 요청이 어디로 연결되는지, 어떤 역할을 수행해야 하는지 알려줌.
- 만약 캐시 파일이 있으면, 기존의 시스템 실행 과정을 건너뛰고 브라우저에 캐시를 바로 보낸다.
- 보안. Application Controller가 로드되기 전에 HTTP 요청의 값들을 필터링한다.
- Controller가 특정 요청을 처리하기 위한 Model, Core Libraries, Helpers, 그리고 그 외 리소스들을 로드한다.
- 데이터 등이 모두 처리된 View가 최종적으로 브라우저에 띄워진다. 만약 캐싱이 켜져 있다면, View는 바로 다음 요청에 응답될 수 있도록 일단 먼저 캐시에 저장된다.
Laravel은 위의 CodeIgniter에서 지원하지 않던 Namespace를 지원하고 PHP 패키지 매니저인 composer와 node 패키지 매니저인 npm을 활용하여 개발에 엄청난 편의를 준다. 뿐만 아니라 거대한 커뮤니티를 바탕으로 다양한 도움을 받을 수 있는 것 또한 장점이다.
Laravel Requirement (5.6)
- PHP >= 7.1.3
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
- XML PHP Extension
- Ctype PHP Extension
- JSON PHP Extension
Laravel의 장점)
0. Artisan
https://laravel.com/docs/5.6/artisan
자세하게 설명하기는 복잡하지만 라라벨의 Artisan이라는 CLI(Command Line Interface) 정말 많은 기능을 제공한다. 파일을 일일이 생성하는 코드이크나이터와 다르게 php artisan make: 라는 명령어를 통해서 모델, 컨트롤러, 데이터베이스 마이그레이션 등 다양한 파일들을 자동으로 생성할 수 있다.
Artisan이 있기 때문에 라라벨의 개발 효율성이 높은 것 같다. 확실히 코드이그나이터를 이용해서 파일을 만들고 이전 파일에 내용을 복사해 와서 클래스를 바꾸는 작업을 하지 않아도 된다는게 얼마나 편한일인지 모른다.
1. Namespace를 지원한다.
Namespace를 지원하는 것은 위에서 언급했듯이 엄청난 장점이다. Namespace를 통해 컨트롤러나 모델의 이름을 명명하는데 있어서 엄청난 자유도를 확보할 수 있다.
예를 들어서 컨트롤러를 만드는데, 같은 게시판 기능에 대해 관리자에서 사용된 컨트롤러와 사용자들이 사용할 컨트롤러를 따로 만들어야 하는 상황을 떠올려 보자
기존의 PHP같은 경우 클래스 이름을
- AdminBoardController
- BoardController
- Admin\BoardController
- User\BoardController
라라벨을 거대한 커뮤니티를 바탕으로 다양한 지원을 받을 수 있다는게 또 다른 엄청난 장점 중 하나이다. 오류의 수정은 물론 라라캐스트 같은 경우는 라라벨의 강좌 등을 제공함으로써 다양한 배움의 기회를 가질 수 있다. (물론 유료다.)
나는 laravel.io에서 오류와 관련된 다양한 도움을 받고 있다. 라라벨은 사용자층이 두텁기 때문에 다양한 지원을 받을 수 있다는게 다른 프레임워크에 비해 장점인 것 같다.
4. git에 대한 지원
라라벨은 프레임워크 구조를 체계적으로 잘 구성해 놓았다. 다른 서버에 대한 이식성도 좋고 git을 통해서 다른 사람과 협업하기도 굉장히 좋은 구조이다. 특히 파일을 일일이 올리고 config.php 파일을 수정해 주어야 했던 코드이그나이터와 다르게, 파일을 올리고 .env 파일을 통해 디비 등의 설정을 변경할 수 있다는 점이 굉장히 좋은 것 같다.
그리고 데이터베이스 마이그레이션 기능도 쓸만하다. 테이블에 column을 추가하고 빼는 등 서비스 버전 관리에 많은 편리함이 있다.
Laravel의 단점)
1. 낮은 접근성
내가 코드이그나이터만 사용해 봐서 인지는 모르겠지만, 라라벨을 처음 시작하는데 고생을 많이 했다. 하지만 익숙해 지고 나니까 라라벨만큼 편리한 프레임워크도 또 없다는 생각이 들만큼 좋긴 하다.
2. 느리다.
이제껏 내가 개발한 서비스들은 그닥 크지 않기 때문에 많이 느끼지는 못했지만, 다른 개발자들의 의견을 들어보면 다른 프레임워크들에 비해 많이 느린 편이라고 한다. 특히 위의 코드이그나이터와 비교하면 많이 느린 편이다.
하긴 라라벨을 처음 설치하는 과정에서도 알 수 있겠지만 엄청난 량의 패키지들을 로드하기 때문에 느릴만도 하다. 하지만 개발 속도 만큼은 보장한다. 엄청 빠르다.
3) 마치며
라라벨과 코드이그나이터의 차이에 대해서 아아아ㅏㅏㅏ주 주관적인 관점에서 분석해 보았다.
개발을 하는 과정에서 느낀 주관적인 생각이고, 아직 프레임워크의 모든 기능을 다 다뤄본 것이 아니기 때문에 생각의 차이는 있을 수 있다.
궁금한 점이나 다른 의견은 댓글을 통해서 문의하고 나누면 개발을 하는 나도, 글을 읽는 독자들도 도움이 될것 같다.
'Web > PHP & Laravel' 카테고리의 다른 글
Laravel 설치하기. 라라벨 개발 환경 구축하기 (2) | 2018.03.04 |
---|---|
[PHP] 의존성 관리 도구 Composer 설치하기 (0) | 2018.03.03 |
[PHP] APM 개발환경 구축하기 (0) | 2018.03.03 |
Laravel Middleware 정의와 사용법 (2) | 2018.02.26 |