GeekNews에서 받은 질문들에 대한 답변 공유

1 1 339 2024-05-21

안녕하세요! TSBOARD 개발자 시리니입니다.


어젯밤에 TSBOARD v0.8.26 업데이트 후 처음으로 외부 사이트에 TSBOARD 홍보를 게시했습니다.

평소에 GeekNews (https://news.hada.io) 사이트에서 유용한 정보들도 많이 보고 해서 처음 홍보는 GeekNews로 정했는데

예상외로 따뜻한 관심과 응원의 댓글을 받아서 감동이었습니다…!


그 중에 첫 댓글에서 받은 질문 내용이 아무래도 다른 분들도 궁금해 하실 것 같아

아래에 다시 정리해서 공유드리고자 합니다.


GeekNews [Superwoou] 님:

글을 보고 궁금한게 생겨 댓글을 남겨봅니다. (코드를 보진 않았습니다)

백엔드를 Nodejs compatible로 개발하지 않은 이유가 궁금합니다 (말씀하신 단점을 상쇄하기엔 너무 퍼포먼스가 안나오나요?)
CSR이면 SEO 처리는 어떻게 하실 계획인가요? 커뮤니티는 검색 유입도 신경써야될 것 같은데요


저의 답변

안녕하세요! 댓글 남겨 주셔서 감사합니다. (사실 무관심 속에 뭍힐 거라 생각했는데 감동입니다)


질문해주신 내용들이 저도 고민을 굉장히 많이 했었는데, 그냥 이런 생각도 있구나 하고 봐주시면 좋겠습니다.
아, 참고로 저는 PHP 이후로는 현생에서 단 한번도 웹개발을 이어간 적이 없었습니다. Node.js 개혁의 시대도, React가 웹 세상을 바꿀 때도 관심을 두지 않았었기 때문에 다소 생소한 관점도 있을 수 있겠습니다. ㅎㅎ


  1. 백엔드를 왜 Node.js 호환되게 하지 않았나?
    저는 처음에 TSBOARD를 개발할 때, 이미 Node.js 기반의 (제가 모르는) 유명한 게시판이나 블로그나 여하간 제가 만들려던 거랑 유사한 게 있을거라고 지레짐작했습니다. 서두에도 언급했지만 현생에서 웹개발을 할 일이 없기도 했고, 따로 사이드 프로젝트라는 걸 해본적이 없어서 더 그랬던 것 같습니다. 저는 당연히 Node.js 기반으로 나온 뭔가가 있을텐데 내가 또 새로운 걸 하는 건 큰 의미가 없겠다 싶어서 기왕 새로 배우는 거 Bun 기반으로 해보자, 하고 결정한 게 지금까지 오게 되었습니다.

    퍼포먼스 문제를 고민해보면, 사실 제가 목표로 했던 소규모 커뮤니티 사이트 (동접 10명 미만) 에서는 Node.js 로 충분하다고 생각합니다. Bun 검토하기 전에 Node.js + Hono 기반으로도 테스트를 해봤었는데 사실 제 생각엔 문제가 없었습니다. 그러나 Bun 이 제시했던 압도적인 퍼포먼스와 더불어, 그 Bun 을 기반으로하는 ElysiaJS 퍼포먼스가 정말 인상적이어서, 이걸 포기하고 싶지 않았습니다. 이미 다른 누군가가 Node.js 기반으로 훌륭하게 만든 게시판이 있을 거라 생각한 저는 그 가상의 게시판과 경쟁하려면 더 높은 퍼포먼스가 필요하다고 생각했고, 결국 Node.js 호환성을 포기하고 Bun 의존적으로 설계를 하게 되었습니다. (지금은 살짝 후회중입니다. Node.js 기반으로 그누보드나 라이믹스, XE 같은 유명한 게시판이 없...더라구요. 제가 못찾은 걸까요??)

  2. CSR을 선택하면 SEO는?
    말씀하신 부분이 전적으로 맞습니다. 검색 유입을 하려면 어쨌든 구글 크롤러가 내용을 읽어드리고, 검색 매칭이 되도록 해야 합니다. 이 부분은 아직 구현하지 않았습니다만, 사용자가 원할 경우 마치 RSS 피드를 노출하는 것처럼 최신 컨텐츠들을 정적 형태로 따로 공유하면 어떨까 생각하고 있습니다. JSON 형태로 외부 노출을 하면 수집기가 더 편하게 데이터를 갱신할 수 있지 않을까? 하는 생각을 가지고 있는데 좀 더 고민해 보겠습니다. (RSS 를 생각했었는데 요즘엔 이걸 대부분 안쓰시더라구요?? 제가 너무 오래 웹을 안했나봐요 ㅠ)

    SEO 보완책과는 별개로, CSR로 간 이유는 서버 부담을 좀 더 적극적으로 줄이고자 했기 때문입니다. 최근에 생긴 다모앙(이거 커뮤니티 이름을 막 공개해도 되나 모르겠네요) 사이트의 경우에도 트래픽 부하나 서버 부담이 상당히 되는 걸로 알고 있습니다. 커뮤니티 빌더라는 걸 생각했을 때 SEO도 중요하지만 우선 비용과 직결되는 문제부터 해결해야겠다는 생각에 CSR를 우선적으로 선택하였습니다. PHP를 여전히 사랑하는 저로서는 SSR이 오히려 익숙합니다만, 클라이언트가 좀 더 적극적으로 컴퓨팅 파워를 쓰면 서버가 더 여유를 되찾지 않을까? 하는 생각으로 한 선택이라 보시면 되겠습니다.


궁금증이 좀 해소되셨으면 좋겠습니다. 아울러 제가 한 선택들은 장단점이 명확해서 사실 TSBOARD가 정답이라고 생각하진 않습니다. 여러 트레이드오프를 고려했고, 저의 짧은 생각으로 내린 결정들이라고 보시면 될듯 합니다. 추후에 TSBOARD가 좀 더 많이 활용된다면 언제든지 제 생각을 바꿔서 다른 시도를 해볼 수 도 있겠습니다. ㅎㅎ

웹 생태계에는 이미 그누보드나 XE(라이믹스) 같은 훌륭한 게시판 엔진들이 존재하고,

각 엔진마다 선택한 전략이 비슷한 것도 있고 다른 것도 있을 겁니다.


TSBOARD는 그런 선택에 있어서 조금 뭐랄까요, 좀 더 극한의 케이스를 고려해서 만들고 있다고 생각해주시면 좋겠습니다.

서버의 부담을 줄이고, 클라이언트에서 JS엔진이 좀 더 많은 일을 하도록 하면서 빠르게 동작하도록 했습니다.

또한 더 작은 서버에서 더 많은 트래픽을 소화해 내도록 하는데 집중했다고 봐주시면 좋겠습니다.


디자인 과정에서 선택한 전략이 어떤 경우에나 정답은 아닙니다.

만약 여러분들에게 필요한 전략이 제가 선택한 것과 조금 다르다면, 다른 언어/엔진을 선택하시는 것이 당연히 더 좋습니다.

혹은 TSBOARD를 포크해서 본인의 입맛에 맞게 수정하여 쓰셔도 좋구요!


이번에 GeekNews를 통해서나 혹은 다른 경로로 TSBOARD를 접하신 분들께

언젠가 필요해질 그 날을 기다리며 계속해서 더 개선해 나가도록 하겠습니다. :D


감사합니다!

geeknews
홍보
tsboard
소개
댓글
문답
인용
그누보드
xe
라이믹스

시리니님

프로필

최근 댓글들

시리니
24/05/22 18:49:45

추가로 비회원 기능 지원과 관련된 문의가 있었습니다. 아래에 좀 더 정리해서 답글을 남겨놓고자 합니다.


TSBOARD는 현재 구조상 사용자가 회원 가입을 해야만 제대로 사용할 수 있도록 되어 있습니다.

물론 비회원도 게시글을 읽거나 목록을 보거나 혹은 사진을 구경하는 정도는 가능합니다만,

TSBOARD가 제공하는 게시판마다의 레벨 및 포인트 설정에 따라 비회원의 경우 해당 작업이 안될 수도 있습니다.


글작성의 경우는 현재 구조상 더더욱 비회원이 하기 어렵도록 되어 있는데, 설계상의 단순함을 유지하려면

어쩔 수 없는 선택이었습니다. 예외 케이스가 많아지는만큼 고려되어야 할 부분들이 많은데,

한정된 개발 리소스를 고려하지 않을 수 없었습니다. TSBOARD가 내부적으로 회원 번호 기반으로 의존하는 부분들이

적지 않기 때문에, 앞으로도 비회원에 대한 글쓰기나 포인트/레벨 제한이 걸린 게시글 열람 등은 어려울 것으로 예상합니다.

(v2.0.0 에서는 근본적으로 가능한 방안을 좀 더 고려해 보겠습니다)


대신 회원가입을 아무리 단순화해도 번거롭기 때문에, 소셜 로그인 기능을 처음부터 고민했었고

현재 나름 성공적으로 반영된 것 같습니다. 게시글을 남기거나 사진을 올리고 싶을 땐 소셜 로그인으로 보다 편하게

해당 작업을 하실 수 있습니다. 장기적으로는 커뮤니티라는 것이 회원들이 더 많이 활동하도록 유도하는 게

중요하다고 생각하고 있어서, 비회원 관련 기능들은 앞으로 한동안 반영되지 않게 되는 점 미리 양해를 부탁드립니다!


TSBOARD는 빠르게 동작해야 한다는 제 나름의 목표 아래 여러 디자인적인 선택을 했었습니다. (비회원 기능 포함)

앞으로도 이런 얘기들은 많이 나누고 또 그 과정에서 대안을 발견할 수 있길 희망해 봅니다. ㅎㅎ