php 프로젝트를 접하는경우 많은 회사들이 자체 프레임워크는 커녕
컴포저를 올리지도않고 사용하는 케이스가 많습니다
대표적인사례라고하면 워드프레스와 그누보드를 기반으로 커스터마이징하는 케이스가 많습니다
프레임워크를 배우고자한다 혹은 프로젝트를 프레임워크로 전환하고자 희망하는경우에 대한
잡설에 가까운 가이드라이닝을 적고자 합니다
1.시간과 계획
보통 포스팅을 검색 혹은 관심을 가지고 들어왔을경우 당신은 매우 높은확률로 혼자서 진행하게 될겁니다.
팀장은 커녕 같은 개발자 팀동료들조차 기본적으로 동작하는데 뭔 걱정인가 다음에 하면되지 라는 생각을 합니다
실은 그런 마인드로 접근하면 할말은 없습니다. 혼자 작업하는경우에는 자기만족 혹은 장점을 자신이 찾아보거나
아니면 계획단계에서 각을재는 계획등이 매우중요합니다. 어디서부터 어디까지를 프레임워크로 전환할것인가
내가 목표한 기간내에 마무리가 가능한가등은 매우 중요한 요소입니다.
목표의경우...제가 경험했던 케이스(라라벨)를 기반으로 설명드리겠습니다.
2. 목표
2-1. 리뉴얼 (난이도 : 하드코어,성공확률 : 0%,기간 : n년이상)
혼자서는 절대불가능한 영역이라 생각합니다.제 실력이 부족한거라 생각하기에는 생각해야 할것들이 많았습니다.
쌓여있는 레거시데이터베이스가 많으면 많을수록 문제가됩니다. FK를 잡아서 ORM을 통한 작업등을 하고자 하는건
생각할수도없습니다. 여러분들의 레거시데이터베이스는 데이터가 많으면 많을수록 무결성이 지켜지지 않을거니까요
무결성이 지켜지지않는걸 확인했다면 신규프로젝트에 맞추어 마이그레이션을 해줘야합니다. 와..신난다!
만에하나 만들어져서 리뉴얼을 하게되는경우 데이터유실또한 생각해서 개별적 마이그레이션의 형태로 만들어줬다면
괜찮겠으나 만들때 당시의 나를 증오하며 욕만 하는 당신을 볼수 있을겁니다.
2-2. 백엔드로직 리팩토링(난이도 : 어려움,성공확률 30~100%,기간 : ~6개월)
여기서부터는 혼자서도 어느정도 진행이 가능해집니다.
레거시코드를 전부 옮긴다는 마인드가 아닌 단계를 거쳐 하나씩 하나씩 옮긴다는 마인드를 가지는게 좋습니다.
가급적이면 컨트롤러메소드 기반을 생각하고 작업해주시면 좋습니다.
컨트롤러메소드를 추가적으로 리턴하거나 view로 페이지를 호출하거나
json을통하여 리턴을 하더라도 어떻게든 써먹을수있습니다.(그만큼 컨트롤러 메소드가 중요합니다 ㅠㅠ)
또한 엘로퀀트모델을 사용한다면 좋을수있으나 이미 2-1의 케이스에서 확인했듯이 무결성처리는
물론이거니와 FK도 안잡혀있어 모델을 쓴다고 하더라도 모델만 불러놓고 쿼리빌더만 사용하게 됩니다.
목표단계도 잡기가 쉬워집니다. 예시로 보자고하면 아래와 같이 진행합니다
레거시에 있는 select쿼리를 컨트롤러메소드로 분리->백엔드로직(Create,Update,Delete) 분리->뷰페이지 이식 작업
여기까지 진행이 되었다면 회사에서 진행할지 안할지 이야기가 나올수 있습니다.
이제 남은건 백엔드로직에 들어가야할 밸리데이션체크 및 데이터 리턴이 실패했을경우의 따른 익셉션로직 추가등이 남습니다.
2. 사후처리
목표를 달성해 이제 라이브에 반영을 하게되었습니다 축하드립니다!
이제 남은건 다음 리뉴얼을 위한 마이그레이션을 준비해야합니다.
데이터 마이그레이션 준비등을 거쳐갑니다. 프론트엔드의 프레임워크 또한 고려사항이 될수있겠군요!
해야할것은 많습니다 하지만 해야할 리소스는 매우적습니다(...)
당신은 리팩토링을 성공적으로 끝냈습니다. 하지만 연봉은 오르지않고 일만 늘어났습니ㄷ
2. 결론 및 사족
제 케이스는 데이터를 가끔씩 조회해서 엑셀로 요청이 오는케이스가 많은편이기에 쿼리를 짜두기보다는
컨트롤러를 통해서 만들어두고 로컬에서 데이터베이스커넥션만 교체하여 내려받는형태로 자주 사용합니다.
현재 직장내에서 저같은 케이스와 유사하다고하면 세팅해서 접근하기도 좋습니다.
프레임워크를 배우려고하는데 마땅히 할게없다고 하시는 분들에게는 강력하게 추천드립니다.
가급적이면 절대로 혼자 하지마세요 대가리만 빠개집니다
'개발' 카테고리의 다른 글
맥os 마이그레이션 (0) | 2021.11.04 |
---|---|
NodeJS 에뮬레이터 glitch (0) | 2017.12.23 |
mysql date_format() 관련 (0) | 2016.09.20 |
[linux] 특정 문구,특정 파일내 특정문구가 들어가는 명령어찾기 (0) | 2016.09.20 |