Glitter Gim

플랫폼 확장을 만들면서 드는 생각

· 2026-09-26 (토) 21:00:36 · 308 · 3
모듈이나 플러그인, 테마를 만들 때는 원하는 기능부터 구현하게 된다.
대부분의 CMS나 프레임워크에는
훅, 이벤트, 플러그인, 디렉터리 구조, 권한, 데이터 접근 방식 같은 확장 규칙이 있다.
이 규칙을 사용하지 않아도 기능은 만들 수 있다.
라라벨 기반 CMS라면
CMS의 확장 규칙을 거치지 않고 Laravel의 기능을 직접 이용해 구현하는 것도 가능하다.

여러 확장을 만들고 업데이트하다 보면
직접 구현하려던 기능이 이미 플랫폼에 있거나,
코어를 수정하지 않았는데도
내부 구현에 의존한 부분이 변경의 영향을 받는 경우가 있었다.
문서에서 찾지 못한 기능을 공식 샘플이나 코어에서 발견하기도 했고,
코어에 있는 클래스나 메서드가 확장에서 사용하도록 공개된 것은 아닌 경우도 있었다.
G7 CMS에서도 비슷했다.
코어에 기본 기능으로 보이지 않더라도 훅이나 플러그인 같은 확장 구조를 통해 구현할 수 있는 기능이 있고,
이미 다른 확장에서 구현된 사례도 있다.
반대로 코어에 있는 기능이라고 해서 모두 확장에서 직접 사용해도 되는 것은 아니었다.

자연스럽게 코드를 만들기 전에 공식 문서와 샘플을 먼저 보게 됐다.
필요한 경우 코어까지 확인하되,
코어의 구현을 그대로 가져다 쓰기 위해서가 아니라
플랫폼이 어떤 기능과 확장 지점을 제공하는지 확인하기 위해 살펴본다.
기능의 존재 여부뿐 아니라 확장에서 사용하도록 공개된 것인지도 확인한다.
사용할 수 있는 훅, 액션, API 등이 있다면 그대로 사용하고 부족한 부분만 구현한다.

AI를 이용하면서 이런 과정은 더 중요해졌다.
AI는 Laravel 같은 기반 프레임워크를 이용해 필요한 기능을 빠르게 구현할 수 있으나,
해당 CMS가 이미 제공하는 확장 방식을 건너뛸 수도 있다.
그래서 AI에게도 바로 구현을 맡기기보다 플랫폼의 문서와 실제 구현을 먼저 확인하게 한다.
이미 제공되는 기능을 찾으면 새로 만들 필요가 없고, 없다면 그때 필요한 코드를 만든다.

처음에는 특정 CMS에서 겪은 문제였다.
여러 확장을 만들고 업데이트하면서 비슷한 상황을 반복해서 겪다 보니,
요즘은 새로운 기능이 필요하면 어떻게 만들지보다 먼저 어디까지 만들어져 있는지 살펴본다.

플랫폼의 확장 지점을 존중하는 것과 마찬가지로,
내가 만드는 확장도 어디까지를 기능으로 제공할 것인지 경계를 정할 필요가 있다고 생각한다.
내가 만든 확장이 각자의 환경에 맞게 수정되어 사용되는 것까지 모두 고려해 만들 필요는 없다고 본다.
확장 소스를 공개할 때도 최대한 범용으로 사용할 수 있는 부분까지만 구현한다.
특정 환경이나 개별 요구에 맞추기 시작하는 지점에서는 닫는다.

- 지형을 읽다가, 💫Glitter Gim
총 12명이 반응했습니다
|

댓글 3개

예전에 제이쿼리를 잘 알지 못할 때는 그런 일들을 많이 하곤 했죠

이미 기능이 있거나, 간단한 조합으로 사용할 수 있거나, 작은 컴포넌트 정도만 다운로드해서 사용하면 될 일을
어렵게 제 방식대로 구현하고는, 이게 맞게 한 일인지 항상 찜찜해하곤 했습니다
 

같이 일하는 입장에서는 사용법을 동료들에게 전파하면 그만이지만,
2~3년이 지나고 보니 비슷비슷한 기능을 가진 프로그램들이 오히려 뒤섞이면서 전체적으로 지저분해진 느낌이 들더군요
 

제가 만들어 놓은 것은 다른 사람이 제이쿼리를 이용해서 다시 만들고, 또 다른 사람은 어디선가 다운로드한 기능을 가져다 쓰고…
결국 정리가 되지 않고 관리해야 할 것만 늘어나면서 필요 없는 돌봄도 더 많아집니다
 

또 제이쿼리의 경우 버전이 올라가면서 프로그램 간에 충돌이 발생해 기존에 사용하던 기능을 쓰지 못하는 경우도 생기곤 했죠
 

프로그램의 기능적 경계를 생각하지 않고 계속 확장하거나 만들다 보면 소스가 갈수록 지저분해지고,
결국 확장이나 업그레이드에도 좋지 않은 영향을 끼치게 되더군요

그누보드의 사용자 스킨 업그레이드가 쉽지 않은 이유도 아마 그런 부분 때문이 아닐까 싶습니다
 

문제없이 사용하는 것만 생각한다면,
아무래도 CMS 자체를 1부터 100까지 개발자가 모두 만들어 놓고 사용자가 소스를 추가하거나 수정하지 못하도록 하는 것이
가장 깔끔하게 사용할 수 있는 방법일 텐데,
디폴트 상태의 원본 그대로만 사용하는 분들은 거의 없을 테니 애초에 어느 정도는 타고난 문제일 수도 있을 것 같습니다



 
맞습니다.
비슷한 기능이 여러 방식으로 쌓이면
결국 관리할 것만 늘어나는 것 같습니다.
 
경계는 수정이나 추가 확장을 제한한다는 의미는 아니고,
공개하는 확장은 범용성이 있는 구현까지만 하겠다는 의미입니다. ^^
2026-09-27 (일) 16:37:16
글을 읽고서 드는 생각, ㅋㅋㅋㅋ 
단정적인 부분이 있다? ㅡ 뭐, 경험 서술이니 ㅡ
그누7 확장을 다양하게 연구 중이시군요. 음 ~
경계를 둬야 하니, 여기까지 ㅡ
댓글을 작성하시려면 로그인이 필요합니다.

자유게시판

203,051건
+
제목 글쓴이 날짜 조회
09-27 조회 224
09-27 조회 355
09-27 조회 270
09-27 조회 171
09-27 조회 235
09-26 조회 249
09-26 조회 270
09-26 조회 347
09-26 조회 309
09-26 조회 306
09-26 조회 228
09-26 조회 459
09-25 조회 429
09-25 조회 412
09-24 조회 349
09-24 조회 360
09-24 조회 381
09-24 조회 440
09-24 조회 229
09-24 조회 331