개발일지00. 다시 시작합니다.

PHP

(Update : 2018-05-30)

Language :

  15년 전, 나는 어느 한 사이트를 알게 되었다. 지금도 운영되고 있는 그 사이트는 비영리 사이트로 유저가 운영진이 될 수 있는 길이 열린 곳이다. 나는 선대 관리자에 의하여 그 곳의 운영진이 되었고, 당시 나의 대부분을 차지하고 있었다. 하지만 그 때까지만 하더라도 개발자가 된다는 생각은 없었다. 나는 의견과 아이디어를 제시할 뿐이었고, 소스 관리자(개발자라 부르지 않았다)가 구현을 해주었다. 그래서 개발을 배울 생각은 하지 않았다.

  하지만 15년이라는 시간은 매우 긴 시간이다. 갓난 아이가 중학생이 되고, 중학생이 사회초년생이 되기 충분한 시간이다. 시간이 흐르면서 한 명뿐이었던 코드 관리자는 개인사정으로 인하여 그만 두었고, 나의 의견과 아이디어를 구현해줄 자리가 비게 되었다. 처음에는 단지 그 뿐이었다. 스스로 아이디어를 반영하기 위해 시작하였을 뿐이다. 단지 취미였을 뿐이다.

  그러던 중 욕심이 났다. 만들고 싶은 것은 많은데, 스스로 구현할 수 있는 능력이 부족하였다. perl에 대한 자료는 당시에도 찾기 힘들었고, 비전공자인 나에게는 어려운 말이었다. 기존 코드에 의미 없어 보이는 로직도 보였으나, 그 로직에 대한 온전한 이해를 할 수는 없었다. 그래서였을까? 기존 로직을 배제하고 싶었다. 그렇게 개발에 한 발자국 다가가게 되었다. 그 중 하나로 14000줄짜리 파일을 10000줄 이하로 압축하였고, 의미 없는 로직을 의미 있는 로직으로 바꾸며 전반적인 틀을 고치기도 하였다. 내 손으로 직접 구현한다는 만족감에 즐거웠다.

  직업을 결정해야 하는 시기에 가장 즐거운 일은 여전히 반쪽짜리 개발이었다. 억지로 일을 하고 싶지 않았기에 개발자가 되었다. 내가 즐겁지 않으면 어느 누가 나를 즐겁게 해줄 수 있을까? 개발자가 되기로 정한 순간, 기존 코드를 리펙토링하고 싶었다. 굉장히 오래된 오픈소스 기반 코드는 여러 문제점을 가지고 있었고, model1의 구시대 방식이었다. 당연하다시피 데이터베이스가 아닌 파일시스템이었고 총체적인 난국을 가진 코드였다. 그래서 제대로 된 코드로 운영을 하고 싶었다.

  처음에는 어느정도 순항으로 나아갔다. 삽질을 많이 하였으나, 원하는 기능은 대부분 구현할 수는 있었다. 그동안 넣지 못 하였던 추가적인 기능도 넣었다. 그러나 개발 지식이 전무한 상태에서 짠 코드는 점점 스파게티가 되어갔고, 새로 짠 코드를 다시 리펙토링해야만 하는 상황을 맞이하였다. 그 때 마침 취업과 맞물리게 되며 시간이 없던 나는 개발을 중단한다. 기능 상으로는 90퍼센트 완성을 보였으나, 복합적인 사유로 오픈하지 않게 되었다.

  그렇게 3년이 지난 지금, 다시 시작하고자 한다. 어렴풋하게 느낀 당시 잘못된 코드가 무엇인지 지금은 무엇인지 명확하게 알고 있으며, 예전과 달리 충분한 실력을 쌓았다. 물론 여전히 부족한게 없는건 아니지만, 그 사이트를 리펙토링하는데는 부족함이 없으리라.

  리펙토링을 하며 바뀌게 될 점은 다음과 같다.

  첫 째, 언어를 perl에서 php로 변경한다. php개발자이기도 하지만, 그곳은 여전히 비전공자가 코드를 수정하는 곳이다. 앞서 말하였 듯이 누구에게나 운영진의 길이 열려있는데, 그만큼 인력은 부족하고 해야할 일도 많다. 굳이 러닝커브를 높일 이유가 없다. 이와 같은 이유로 Laravel이 아니라 Codeigniter를 도입할 것이다.

  둘 째, 파일시스템에서 데이터베이스로 전환한다. 파일시스템의 단점과 문제점을 그동안 운영을 하며 누구보다도 체감을 하였기에 이는 당연히 필수적인 사항이다. 3년 전 당시 인력에 의존하고자 했던 마이그레이션을 직접 프로그래밍을 통하여 자동화 할 것이다.

  셋 째, 웹호스팅에서 서버호스팅으로 전환한다. 그동안 perl이었기 때문에 지원하는 웹호스팅을 찾는 것은 어려운 일이었다. 또한 웹호스팅은 낮은 php버전을 지원한다. 원하는 세팅을 하기 위해 서버호스팅으로 전환할 것이며, 이는 이미 일주일 간 삽질로 마무리가 되었다. 당연히 직접 세팅하는 것이기 때문에 http2를 도입하며, 기초적인 보안을 서버 방화벽을 통해 처리하고자 한다. 리눅스 서버에 대해 아직 부족한 점이 많지만, 계속 공부하다보면 나아지지 않을까? 이는 프로그래머인 내게 원하는 dev 환경을 구축해주는 역할도 할 것이다.

  3년 전, 리펙토링을 그만두었고, 다른 운영진에게 맡기며 쉬었다. 바쁘기도 했고, 취업 후 배울 것도 많았지만 한 편으로는 매너리즘에 빠졌던게 아닐까 싶다. 이제는 3년 전에 스스로 쌓은 빚을 청산하고자 한다.

Devellany

back-end Developer

PHP, Java, JavaScript, MySQL, Redis, Ubuntu, Nginx
Codeigniter, Laravel, Zend, Phalcon, Spring Boot, JPA
PHPStorm, IntelliJ, Upsource, SVN, Git, Telegram Bot