inlee's blog

고도몰5 Pro 기반 자사몰 기능개발 / 유지보수 하며 느낀점들

· inlee

고도몰5 Pro 기반으로 제작된 자사몰(이하 고도몰)을 빠져나오는 것을 목표로 했지만 현실적으로 고도몰 기능추가 / 유지보수를 담당하게 되었다. 이 글은 지난 1년간 담당했던 고도몰의 기능개발 / 유지보수를 하며 개발자 관점에서 느낀 점이다.

고도몰은 무엇인가

고도몰은 국내 인터넷 쇼핑몰 호스팅 업체로 결제 후 몇 가지 설정을 통해 쇼핑몰을 바로 구축할 수 있도록 제공하는 솔루션이다. 경쟁업체로 카페24, 메이크샵, 글로벌 업체인 쇼피파이가 있다.

장점 / 단점

고도몰을 이용하면 손쉽고 빠르게 쇼핑몰을 구축할 수 있고 매출을 빠르게 만들 수 있다. 문자, 마케팅, 앱 등 부가서비스 등이 무료 혹은 유료로 제공되며 손쉽게 사용할 수 있다. frontend / backend 모두 직접 개발할 수 있도록 제공해주며, 호스팅 서비스이기 때문에 서버 관리도 담당해준다.

하지만 고도몰 소스코드의 품질은 좋지 않아 유지보수가 힘들며 개발 가이드 문서 또한 부실하다. 예상치 못한 고도몰의 코드 및 서버의 잦은 이슈(Issue)로 인해 매출에 손해가 발생하는 경우가 다반사다. 이를 문의해도 수정할 것이란 답변이 있을 뿐 실제 수정되지 않은 경우가 많다.

개발하며 느낀 점들

고도몰이 비즈니스 입장에서는 손쉽고 빠르게 쇼핑몰을 구축할 수 있어 매출을 낼 수 있다는 큰 장점이 있지만, 매출을 내기 위한 기능 추가 / 유지보수는 힘들다. 고도몰을 개발하며 개인적으로 느낀 점들을 정리하면 아래와 같다.

1. 개발 환경

고도몰5 Pro의 frontend, backend는 아래와 같이 개발한다. 사실 frontend / backend 가 명확히 구분되지 않는 구조이나, 편의상 분리하였다.

  • frontend(스킨): 워드프레스 스킨과 유사하게 개발. 관리자 페이지에서 개발 or 로컬에서 개발 후 ftp 업로드, 테스트, 배포. 렌더링 엔진은 템플릿언더바(template_) 기반. 고도몰에서 Widget 이라고 부르는 컴포넌트 같은 기능 제공.
  • backend: PHP 7 기반(고도몰5) 으로 구현된 자체 프레임워크. 필요한 기능은 상속받아 구현, 상속받지 않으면 자체 프레임워크 Core 코드 동작. 로컬개발 불가. ftp 업로드 후 테스트, 배포. composer를 이용한 패키지 직접설치 불가.

정리하자면, 사실상 서버에서만 개발 / 테스트를 할 수 있도록 되어 있다. 개인적인 경험으로는 개발 시간과 유지보수를 위한 디버깅을 하는데 로컬 개발, 배포에 비해 시간이 늘어났으며 늘어날 수 밖에 없다는 생각이 들었다.

2. 코드 품질과 부실한 개발문서

훌륭한 소프트웨어의 기능은 복잡한 것을 간단하게 보이게하는 것입니다. - 그래디 부치

고도몰5 Pro 기준으로, 소스코드를 분석하고 구현하면 위의 인용구가 생각난다. 고도몰에서는 고도몰5 개발 가이드 라는 문서를 공개하고 있으나 큰 도움이 되지 않았다.

3. Side Effect

고도몰의 장점 중 하나는 기능 오류나 수정이 필요한 패치를 제공해준다는 점이다. frontend는 스킨 패치 라는 것으로 제공하고, backend 코드는 고도몰이 직접 본인들의 core 코드를 수정한 후 적용한다.

문제는 이 패치 과정, 고도몰에서 수정해서 배포하는 frontend / backend 패치 이후 예상치 못한 Side Effect(부작용, 또다른 오류) 발생이 있는 편이다. 자사몰에 특화된 기능들이 이로인해 오류가 발생하는 경우가 발생하기도 하며, 고도몰 기본 기능 또한 오류가 발생하기도 한다.

이러한 리스크가 발생할 가능성을 항상 인지하고 있어야 했으며, 수정이 필요한 경우 최대한 빠르게 수정을 진행해야 했다.

4. 버전관리

ftp를 이용해 배포하기 때문에, 사실상 개인이 소스코드를 별도로 관리하는 수 밖에 없다. 그래서 ftp에 올라온 파일 버전과 버전관리로 관리되는 파일 버전이 다른 경우가 종종 발생하였고 발생할 수 밖에 없었다.

이러한 불편을 해결하고자 배포 프로세스를 구축하려 했으나, 결정적으로 배포 과정 구축 시 기존 운영 코드를 잘못 건드릴 경우 서비스에 매우 큰 문제를 (중단, 복구 오랜 시간 소요 등) 야기할 수 있다고 판단되어 적용 하지 않았다.

최종적으로, 개발 결과물을 Git을 이용해 버전관리를 하기도 했지만 이와 별개로 주기적으로 frontend / backend 코드를 백업받아 적용하였다.

5. 확장성

확장은 가능하지만 번거롭다. 패키지 매니저 사용이 불가능하기 때문에 필요한 패키지가 있으면 직접 ftp를 이용해 업로드한 후 사용하는 수밖에 없었다.

이 확장 과정을 고도몰에서는 이를 “튜닝” 이라는 단어로 부르며 이들을 전문적으로 해주는 업체들이 존재한다. 개인적인 경험으로 어떤 업체가 튜닝한 코드를 보았는데, 코드 품질이 기본도 되어 있지 않아 이를 수정하여 사용하는데 어려움이 있었다. 튜닝 업체를 사용할 경우 어느정도 리스크가 발생할 수도 있을 것 같다는 생각이 들었다.

추가로, 고도에서 제공하는 코드가 아닌 React / Vue를 고도몰 페이지 일부 영역에 적용할 계획이라면 신중히 생각해야 한다. 이 곳에서 오류가 발생할 경우 찾고 수정하여 번들링하고 스크립트 업데이트 하고 확인하는 과정이 기존 고도몰 코드보다 훨씬 복잡하다.

그리고 …

개발과 연관은 있지만, 고도몰이 가지는 문제로 인해 개발에 애로사항이 생겼던 점을 정리하면 아래와 같다.

1. 주체

쇼핑몰 호스팅이라 당연한 이야기겠지만, Core 소스코드와 서버를 제어하는 주체는 회사가 아닌 고도몰이다. 그래서 서버 설정 변경, Core 코드 이슈 문의 및 수정은 별도로 요청해야 한다.

반대로 말하면, 고도몰 Core 코드와 서버에 이슈가 발생하면 내부에서 할 수 있는 것은 손 놓고 기다리거나 고객센터에 전화걸어 해결방법을 찾아볼 수 밖에 없다. 원인을 알더라도 신속히 대응하기가 힘들다.

가장 큰 문제는 이러한 이슈가 자주 발생하는 편이다. Core에 오류가 있으면 상속받아 수정하기도 했다.

2. 도메인 설정 직접 불가

이해가 되지 않는 부분이지만, 도메인이 고도몰에 등록되어 있을 경우 DNS 설정을 직접 할 수 없다. 고도몰에서 설정 메뉴를 제공하고 있지 않으며, 1:1 문의 게판을 통해서만 가능하다. 설정 완료되었다는 답변이 언제 올지 예상할 수 없다. 그래서 도메인 A 레코드 하나 추가하는데 오랜 시간이 걸린다. DNS 갱신시간 포함하면 일정을 미리 잡아야 한다.

그래서 고도몰에 입점한 업체 중 일부분은 AWS 와 같은 외부 DNS를 사용하기도 했으며 고도몰에선 세팅이 변경될 경우 외부 DNS 를 사용하는 업체들에게 주의 및 확인하라고 공지사항을 통해 알려주기도 한다.

3. 잦은 이슈

이슈가 자주 발생하는 편이다. 이슈 발생 시 구현한 소스코드에서 대응이 가능하면 다행이지만 고도몰 코어(Core) 코드나 서버 설정 등의 오류는 무작정 기다릴 수 밖에 없다.

솔루션 자체 오류 때문에 1:1 문의를 남겨보았지만, 해결되지 않고 추후 수정할 예정이라는 답변이 온 것들이 몇 건이 있었으며 수정되지 않은 것들도 있었다.

4. 개발자가 필요한 CS 대응 불가

CS 대응은 (매뉴얼대로 진행해주지만) 친절하다. 그러나 개발자와 직접 통화해서 해결해야 하는 이슈들이 종종 있는데, 개발자와 직접 통화가 불가능하며 관련 내용을 전달하겠다는 답변만 받았다. 그 전달한 내용에 대한을 답변을 받으려면 1:1 문의 게시판을 통해 다시 남겼어야 했다.

결론

개인적으로는 고도몰 유지보수를 통해 발전을 기대할 수 없었다. 하지만 고도몰과 같은 서비스는 빠르게 쇼핑몰 구축이 필요한 곳이라면 필요하다고 생각하고 필요로 하는 곳이 반드시 존재한다. 비즈니스를 하는 입장에선 환영을 할 수 있으나 개발자 입장에서는 양날의 검과 같다고 생각한다.