이한결 블로그 ✍️ 💻 📷 🍻

아무도 읽을 필요 없는 최근 코딩 근황

그런트Grunt 와 걸프Gulp 가 자바스크립트 태스크 러너로서 자웅을 겨루고 있을 시절 나는 걸프를 선택했다. 대개의 초보자들이 그렇듯 큰 이유없이 즐겨 사용하는 보일러플레이트가 걸프를 사용했기 때문이다. (당시에 사용하던 보일러플레이트는 백본 보일러플레이트로 지금은 이름만 봐도 흑백TV의 느낌이 나는 걸프, 브라우저리파이Browserify, 라이브리로드LiveReload, 백본Backbone 등이 아름답게 조합되어 있는 보일러플레이트다.) 그러던 중 어딘가에서 웹팩이 쩐다는 이야기를 들었다. 세팅 초반에 적잖이 애를 먹었음에도 모듈이 하나 하나 맞아들어갈 때마다 머리와 마음으로 느껴지는 변화가 어마어마했고 순식간에 올라가는 메이저 버전을 따라가기 위해 부단히 노력했다. 지금은 자랑스러운 웹팩 3.x 사용자가 되었고 다른 태스크는 몰라도 "웹사이트"를 위한 무언가가 필요한 사람에게는 주저없이 웹팩을 추천하는 사람이 되었다. 물론 내게 그렇게 조언이나 의견을 묻는 사람은 없다.

나의 PHP에 대한 악감정의 대부분은 사실 그 프로그래밍 언어 자체가 주는 고릿고릿한 느낌에 기인한다. PHP를 손에 익힌 뒤에 곧바로 배우기 시작한 언어가 루비(이자 이제는 루비 그 자체라고 해도 크게 문제 없는 ROR)였음을 생각하면 더더욱 힘을 얻는 추론이다. 웹 클라이언트 코딩을 하면서 자바스크립트의 ES6 문법을 보게 되었고 아무래도 미래(의 일부)는 이쪽에 있다는 생각이 강하게 들었다. 장기라면 장기인 빠르게 익혀서 빠르게 실무에 투입하는 그 능력을 발휘해 익스프레스express.js 로 넘어갈 준비를 했다. 기존 라라벨Laravel 로 만든 API 서버 전부를 노드로 포팅했고 그 와중에 어싱크async.js 라이브러리와 자바스크립트의 네이티브 Promise API를 통해 비동기 코드를 처리하는 방식에 익숙해졌고 모카mocha 와 이스탄불istanbul 등을 이용한 TDD의 기본기를 익혔다. 이제 내가 관리하는 코드 베이스는 일부의 JSX나 css 등을 제외하면 전부 자바스크립트다.

리액트 생태계의 메이저한 라이브러리들의 메이저 버전을 최신으로 올렸더니 역시나 신세계다. 특히나 사용자들에게 많은 반발을 받은 리액트 라우터의 4.x 업데이트는 나 역시 처음에 대체 왜 이렇게 바꿔놔서 손이 가게 만드는 건지 이해를 못했지만 코드 베이스를 점점 바꿔감에 따라 "리액트 웨이"를 외치던 이 메이저 버전의 업데이트가 무슨 의미인지 고개를 끄덕일 수밖에 없었다. 리액트 핫로더와 웹팩의 핫모듈 리플레이스먼트HMR 의 콤비는 자바스크립트 프론트엔드 개발이 어느 수준에까지 이르렀는지 여실히 보여주는 대목이라고 생각하며 리덕스Redux 와 접점을 만들어주는 리액트 리덕스 라이브러리로 전체 웹사이트를 리듀서와 액션으로 통제하는 것은 웹사이트 기획과 설계에 있어 거대한 패러다임의 전환점이라고 본다. 모듈, 리액트식으로 이야기하면 컴포넌트 기반의 디자인이 확실히 구축된 프로덕트라면 스타일드 컴포넌트Styled components 같은 라이브러리도 써보고 싶지만 아직은 때가 아니다. 아주 간단하게 아니메anime.js 를 경험한 정도로 일단은 만족.

하지만 부족한 점은 여전히 많다. API의 측면에서는 사실상 운영&관리 경험이 전무하다고 봐야 하기 때문에 스케일러빌리티 이슈나 배포 등에 있어 아직 걸음마 단계에 불과함을 절실히 느꼈다. 같은 프로덕트의 여러 플레이버flavor 를 하나의 코드 베이스로 관리를 해나가는 것에도 어려움을 겪고 있다. 짧은 나의 코딩 인생(…)을 되돌아봤을 때 결국 절실히 필요해지면 다 익혀왔으니 조금 더 이런 어려움의 시간이 길어지면 자연스럽게(?) 배우게 될 내용들이라는 희망은 잃지 않는다. 우리 존재 화이팅.