지난 게시물을 쭉 살펴봤습니다 > RESTful

RESTful

지난 게시물을 쭉 살펴봤습니다 정보

지난 게시물을 쭉 살펴봤습니다

본문

자유게시판도 보니 마젠토님이 2015년부터 건의해오셨군요. 지금은 2022년이 끝나가지만 그누보드에서는 변화가 없고요. 약 7년이 넘었네요.

 

다른 분들도 이미 포기한 것처럼 보입니다. 제가 보기에도 냑에서 구현하거나 이 게시판에서 오가는 것들을 PR로라도 받아주기는 힘들것같아 보입니다.

 

그누보드는 PHP 5.2를 지원하는데 5.2 환경에서 개발하는건 지옥입니다. 네임스페이스 조차도 못쓰니까요.

 

근데 사실 API 정도는 굳이 5.2를 지원하지 않고도 그누보드에 내장시킬수는 있죠. 동작에 필수기능은 아니며 사용을 원한다면 PHP 버전을 맞춰 올리라고하면 되니까요. API 관련 코드가 그누보드 기본 동작에 영향을 주지만 않으면 되니까요.

 

어쨌든 냑에서는 API 지원에 리소스를 투입하기에는 무리가 있거나 도입 의사가 없는 것으로 보입니다. 그래서 이 소모임을 비롯해 그누보드의 플러그인 형태나 다른 프레임워크나 아예 다른 언어로 만드는 작업을 하시는 것같네요.

 

저도 플러그인으로 만들어보려했었는데 많은 부분에서 비즈니스 로직이 분리되지 않아서 로직을 복사해다가 구현해야하는 것들이 너무 방대한것같아서 접었습니다. 유지보수가 너무 어려워지겠죠. 비즈니스 로직 문제 뿐만 아니라 데이터 정규화도 너무... 그렇다고 이걸 건드리긴 참으로 힘들겠죠. 보니까 그누보드 3시절부터 이어져온 구조라고 하더군요. 그때가 언제인지도 모르겠네요.

 

더구나 github 이슈를 살펴보니 PR 코드를 검토할 시간이 없다고 그냥 닫아버리는 모습을 보니 필요한 부분은 그누보드 코드 개선으로 처리할수있을거라는 기대감도 싸늘하게 식었고요. PR 보내기위해 5.2에서 테스트하는 것도 지옥입니다. 7은 감히 바라지도 않지만 5.6까지라도 올려줬으면 좋겠네요. 어쨌든 그누보드 자체의 코드 변화는 참으로 기대하기 어렵습니다. PR 보내기위해 테스트하는 것도 그것이 반영될 것이란 기대도 할수없으니까요.

 

 

그래도 필요하기는 합니다. SPA가 아니더라도 다른 플러그인을 개발하면서도 API가 필요한 일이 생기고 해당 플러그인 자체에서도 API를 제공해야할 때 아예 그 어떤 것도 제공되는 방법없이 echo json_encode()만으로 처리되는걸보면 정말 숨이 턱턱 막힙니다.

작은 플러그인 하나 만들면서 이런 구조를 만들어 붙이기에는 배꼽이 커져서 결국 저도 그냥 echo로 마무리했습니다만...

 

여튼 필요에의해 계속해서 API 구조를 갖춘 환경이 필요해서 또다시 REST API 구현을 기웃거리게되네요.

GraphQL API면 더 좋겠지만요.

 

그누보드의 전체에 대한 API 제공은 추가해나가는 것으로 잡고 "기반"을 만들자는것을 목표하기로 했습니다. 아직 작업을 진행할 것이라는건 아니고요. 진행하게된다면 그렇다는 이야기입니다.

 

일단 기반이 만들어져있어야하겠죠.

머릿속에서만 그려본 대략적으로 PHP 7.4 이상을 타겟으로하고 가능하면 심플한 라우터 라이브러리(이 게시판 살펴보니 이미 좋은걸 찾아서 사용중이시더군요)와 mysqli wrapper 라이브러리나 PDO 정도면 될것같네요. ORM이 욕심나긴하는데 의존라이브러리 덩치가 너무 커질것같네요.

 

oAuth 기반의 사용자 인증과 백엔드간에는 고정 토큰 발급으로하면 될것같네요. 어차피 외부가 아닌 내부 사이트내 요청은 세션인증하면 되고요. 사이트 내 요청에 별도로 토큰이나 oAuth 인증은 필요없죠. 고정 토큰은 어차피 용도가 정해진 것들이고 그외에는 oAuth로 모두 가능하니까요.

 

일단 가볍게 시작하는게 목표입니다.

- 그누보드 플러그인으로 제공. 분리된 설치나 서버를 요구하지 않도록

- 사이트 내에서만 사용(세션 인증)

- 기반만 만듬. 그누보드 자체 리소스에대한 API는 제공하지 않음

- 아주 작은 라우터 라이브러리 사용

- 아주 작은 mysqli 또는 PDO wrapper 사용

- 다른 여타의 플러그인 등이 리소스를 제공할수있는 확장성 구현

- API상 리소스로 아무것도 제공하지 않지만 기타 플러그인에서도 어차피 로그인 세션의 회원 권한 등의 검증은 해야할테니 헬퍼 제공

- REST API와 GraphQL 동시 제공

 

쓰다보니 생각보다 크긴하네요. 적어둔 것외에도 구현하다보면 필요한 구조잡다보면 더 커질거고요. rest api와 graphql은 상당히 다르지만 내부 구현은 크게 다르지는 않을테니까요.

 

일단은 그누보드의 모든 리소스 데이터를 이쁘게 뽑아내는게 아니라 기반만을 다지는게 목표입니다. 어떤 외부와도 주고받지 않고 그저 사이트 내에서만 제가 다른 플러그인을 만들면서 꽂아넣을수만 있으면 된다는 것으로 방향을 잡고있습니다.

 

기반을 만들어두고 oAuth 붙이면서 그누보드 리소스를 하나하나 추가해나가면 되지않을까 합니다.

 

근데 생각만 그렇고 이걸 진행하게 될지는 모르겠습니다. 이미 만들어 사용하시는 분들의 각자가 따로 구현하신 것들이 있고 구현 방법의 차이나 목표가 달라서 참여를 기대하기는 어려울 것같기도하고요.

그래도 관심있는 분들이 있고 이와 같은 초기 목표에 호응해주시는 분들이 있다면 설계부터 함께 논의하며 진행하면 좋을것같네요. 

뭐 아직은 뜬구름 수준입니다. 

 

 

 

 

 

추천
0

댓글 11개

자유게시판에서 찾아보다가 이런들을 봤는데 농담이겠지만 냑 관계자분들의 댓글이 재밌네요 ㅎㅎ
https://sir.kr/cm_free/1608680
볼피드님이 잘 정리해놓으신게 있네요. 아직 조금씩 읽는 중이지만 저도 분석하면서 같은 생각을 했습니다.
https://sir.kr/so_app/1992
본문글을 읽고, 저도 다시한번 읽어 보았습니다. 참 열심히 했구나,,,,,, 근데 결과물이 없네요. 향상심이 부족했나 봅니다. 시간나면 다시 끊어진 걸 다시 이어봐야겠습니다.

사실 만들어서 쓰던거.. 코드 정리하기가 매우 귀찮네요. 이걸 이겨내야 하는데...
개인이 하기에는 힘든 일이죠.
이게 곧장 대단한 수익으로 이어지는 것도 아니고요.
사실 냑이 주도하거나 사용자 의견이라도 적극적으로 받으면서 참여형으로 개발을 해야하는 부분인데 그렇지 못하니 개인들이 각자 따로 구현하려니 아주 힘든 일이죠.
좋은 글 감사합니다.

제가 최종 목표로 하는 것은 Golang으로 로컬 API 서버, 만약 웹 호스팅등을 사용하여 외부 프로그램을 실행 못시킨다면 API 사이트 하나 만들고 외부에서 DB 접속하는 방식의 API 서버인데
아마 보안상 전자에서 끝날 것 같긴 하네요.

근데 그렇게만 되어도 그누보드 API 환경에 한 몫 하는거겠죠?

아직 restful api 개념이 미숙해서 손 놓고있지마는...

응원합니다!
만들고 취업할 때 포트폴리오로 써야지 하는 마음으로 꾸준히 들고 갈려고 하는데
확실히 초기 설계가 굉장히 중요한 것 같아요.
설계없이 그냥 API 만들어야지 -> 어? 이 기능도 필요하겠다. -> 어.. 기존 구조에서 기능을 추가하니 너무 복잡해지네 -> 아 게임해야지

루틴이 반복이 되니깐 참 어렵네요 ㅠㅠ
다른분들 정리하신 링크 쭉 봤는데요

요즘도 컴포저에 대한오해가 있군요
웹호스팅환경이랑 컴포저쓰는거랑 무관하죠 (여기서 말하는건 클래스 오토로딩기능)

라이믹스보시면 컴포저써서 클래스들 잘쓰고 있고
웹호스팅에 업로드 해서 씁니다

일본의 ec-cube 도 그렇고요...
웹호스팅에서 컴포저 사용 어려우니까 ftp로 업로드해야한다 뭐 그러신거겠죠.

웹호스팅에서 컴포저 쓰기 어렵긴하죠.
vendor가 노출되기 때문에 샘플페이지가 노출되어 이용될수도 있어서 조심해야하고 잘 걸러내서 업로드해야하고 배포할때도 걸러내야해요.

요즘 여러 플러그인을 만들고 있지만 보면 볼수록 그누보드는 참 낡았네요. 파일업로드부터 그 어느 페이지하나 십여년전 수준에 머물러 있네요. 사용자들이 스킨 테마 플러그인 배포해봤자 기본 시스템이 낡아빠져서 신규 유입된 사람들이 이걸 진짜 쓰는건가 싶을 정도입니다.

코드 살펴보다가 아니 이거 왜이렇지 싶은 것들 보다가 말도 안되는 11년 전에 알고도 방치된 보안취약점에 벙쪄있다가 왜인지 플러그인을 만들고 있는데 이거 만들어봤자 소용없는거 아닌가하는 생각이 들기 시작했습니다.
전체 96 |RSS
RESTful 내용 검색

회원로그인

진행중 포인트경매

  1. 참여4 회 시작24.04.25 20:23 종료24.05.02 20:23
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT