Open Mon - Fri 10:00-17:00
Status Contact Us Schedule a Call > Click Here

기술 부채와 마젠토 속도 이슈

기술 부채라는 용어는 워드 커닝햄이 처음으로 사용했습니다. 기술부채는 금융 부채와 비슷하게 우리의 어떤 결정들이 계속해서 미래에 선택할 수 있는 옵션들을 줄이게 되고 시간이 지날수록 해결하기 어려운 문제가 되는지를 의미합니다.

특히 빨리 일을 처리하기 위해 기술적인 완성도를 고려하지 않을 때 생기게 됩니다. 시간과 비용을 줄인 만큼 그에 대한 부작용으로 그 만큼의 기술 부채가 쌓이게 됩니다.

최근에 마젠토를 기반으로 이커머스를 운영하는 곳이 고객사가 되었습니다.

우리는 현재 몇몇 곳의 National Brand 기업들과 미라클 마켓플레이스 플랫폼 작업 때문에 신규 고객을 받지 못하고 있었습니다. 이 고객사의 경우 예전에 우리와 인연이 있었고, 들여다보니 상황이 많이 안좋아서 급하게 리소스 투입을 하게 된 경우였습니다.

고객이 해결하고자 하는 문제는 단순했습니다.

사이트의 속도 문제

마젠토를 서버 자원을 많이 먹는 무거운 플랫폼이라고 생각하시는 분들도 많겠지만, 사실 그렇지 않습니다. 정교하게 최적화된 마젠토 사이트는 네트웍 레턴시 문제만 없다면, 사이트 접속과 동시에 페이지 로딩이 끝납니다.

그런데 이 고객사의 웹사이트는 사이트 로딩이 30초 이상 걸렸습니다.

페이지 캐쉬도 지속적으로 리셋되고 다시 사이트가 느려지는 일이 반복되었습니다.

처음에는 마젠토 최신 버전임을 확인 후 단순한 서버 최적화 문제 또는 리소스 문제일 수 있겠다 생각했습니다.

그런데 실제 뚜껑을 열어보니 상태가 심각했습니다.

제일 처음 발견한 문제들

  1. 스크립트 오류들
  2. Front Theme 최적화 문제
  3. 스크립트 충돌
  4. 몇년전 라이브러리를 사용하는 스크립트
  5. 업데이트 되지 않은 수많은 모듈들

등이었습니다.

문제 해결을 위해 가장 먼저 서버 이전 작업을 하였습니다.

좀 더 강력한 서버 리소스를 위해 Dedicated Server로 마이그레이션 작업을 진행했습니다. (이전 매니지드 서비스에 비해 서버 리소스는 2배 이상 더 강력 비용은 절반이 되었습니다.)

그리고 하나 하나 속도 개선을 위한 디버깅 작업을 진행하였습니다.

스크립트 오류들을 잡고, 모듈들도 업데이트 작업을 진행했습니다.

이런 방식으로 초단위 속도 개선을 위한 작업들을 진행 하였지만, 여전히 너무 느린 상태였습니다.

그리고 가장 심각한 문제는 사용중인 Cache Warmer 모듈 때문인지 사이트가 주기적으로 다시 느려진다는 점이었습니다.

수없이 많은 상세 디버깅을 했음에도 여전히 페이지 로딩 속도는 스트레스 테스트 환경에서 이전 30초 40초에서 10초 ~ 15초대로 개선된 정도였습니다.

문제가 해결되지 않는 원인을 좀 더 고민해보기로 했습니다. 디버깅만으로 찾을 수 없는 무언가가 속도를 지연시키는 요인들이 분명 거기 있을테니까요. 몇가지 가설을 세워서 다시 처음부터 접근해보았습니다.

  1. 마젠토 코어에 문제가 있다.
  2. 업데이트 과정에 문제가 있었다면, 현재 디비에 문제가 있을 수 있다.
  3. Theme에 문제가 있다.
  4. 우리가 파악하지 못한 몇몇 모듈들에서 문제가 발생하고 있다.

1번과 2번은 사실 연관된 이슈입니다.

따라서, 제일 먼저 별도의 인스턴스에 마젠토를 클린 셋업 한 후 현재 데이타베이스로 속도 테스트를 해보았습니다.

간단한 테스트만을 진행했고, 이 경우 속도 문제가 전혀 발생하지 않는걸 확인하였습니다.

나중에 안 사실이지만, 특정 기능 등을 위해 별도로 모듈화하지 않고 코어 소스를 고친것들이 있었습니다. 그런 상태에서 버전 업데이트들을 몇차례 진행하였고 이 때문에 발생하는 많은 오류들을 이전 개발 회사에서 그냥 무시했던거 같습니다.

그리고 3번째인 클린 인스톨한 마젠토 인스턴스 + 현재 라이브 DB의 조합에 현재 Theme을 셋업했습니다.

Theme 적용전 괜찮았던 속도가 Theme 적용 후 느려지는걸 확인하였습니다.

최종적으로 진단을 아래와 같이 내렸습니다.

  1. 마젠토 1.9X에서 2.X로 최초 마이그레이션 할 때 필요한 단순한 기능을 위해 모듈화하지 않고 일부 코어 파일을 직접 수정 함
  2. 이 상태에서 계속 마젠토 업데이트를 몇차례 더 진행함
  3. 몇몇 마젠토 2의 필수 코어 기능을 강제로 Disable 시킴
  4. Theme은 최초 셋업 후 마젠토 업데이트에 맞춰 별도 업데이트가 이루어지지 않음
  5. 이 과정에서 데이타베이스에도 문제가 생김
  6. 여전히 많은 모듈들이 업데이트 되지 않은 예전 모듈들을 사용

빠른 해결을 위해 아래와 같은 방식으로 진행하였습니다. 각 단계마다 면밀하게 속도 문제와 다른 이슈들은 없는지를 계속 반복적으로 확인하였습니다.

  1. 마젠토 2 최신 버젼 클린 인스톨
  2. 데이타 마이그레이션, 데이타 오류 수정
  3. Front Theme 셋업
  4. 기존 Theme의 Look & Feel을 최대한 동일하게 이식 / 이 과정에서 많은 스크립트 변경
  5. 필수 모듈들 마이그레이션 / 최신 버젼으로 업데이트 작업 진행

이렇게 마무리 된 후 최종적으로 사이트 로딩 속도 이슈가 완전히 해결되었습니다.

총 4개의 개발 인스턴스를 별도로 셋업해서 각 단계마다 여러가지 이슈를 2번 3번 반복하면서 문제를 하나씩 해결해 나갔는데요.

그냥 새로운 사이트를 하나 만드는 것보다 휠씬 더 어려운 작업이었습니다.

+

보통 이런 문제를 우리는 기술 부채라고 얘기합니다. Technical Debit

몇가지 문제점들을 알면서도 이로 인해 지금 당장 큰 문제가 발생하지 않을 경우 그냥 무시하는건데요.

당장 그 때엔 편했을지 모르지만, 이런 기술 부채는 나중에 크게 쌓여서 이번 일 처럼, 페이지 로딩 속도가 느려지고 그로 인해 엄청난 사업적 손실로 이어지게 됩니다.

정작 더 큰 문제는 이미 쌓인 기술 부채의 문제를 알게 되었을 때 이 문제를 해결하기 위해서는 과거 그냥 무시하고 지나왔을 때 들였을 품 보다 몇 배는 더 큰 고생을 하게 된다는 점입니다. (마치 빚에 이자가 붙듯이)

각 비즈니스 성장의 단계 마다 많은 해결해야할 문제들은 필연적으로 발생하게 됩니다. 또 이 문제들 중 몇가지는 새로운 기능을 붙히는 등 기술적으로 풀어야 하는 경우들이 있습니다. 이 때 너무 빠른 방법만으로 해결하려고 하거나 미숙해서 실수를 하거나 또는 몰라서 못하는 경우 등등 우리는 이미 빚을 지게 되고, 이 빚은 나중에 눈떠미처럼 불어나 엄청난 페이백을 요구하는 때가 옵니다.

따라서, 이런 점들을 충분히 고려하는게 중요합니다.

가장 중요한건 온라인 비즈니스에서 되도록이면 기술 부채를 지지 않는게 가장 좋습니다. 참고로

기술 부채와 빠른 개발 방법론인 애자일과는 전혀 다른 개념입니다.

Leave a Reply