티티닷컴
티티닷컴은 유머, 소설, 이미지, AI, 오디오, 정치/시사, 스포츠 등 다양한 주제에 대해 토론하고 공유할 수 있는 대한민국 온라인 커뮤니티입니다.
기존 대형 온라인 커뮤니티의 복잡한 메뉴 구성과 폐쇄적인 운영정책을 개선하고자 자체적으로 온라인 커뮤니티를 구축하고자 프로젝트를 시작하게 되었습니다.
기존 온라인 커뮤니티들과 최대한 유사한 구성을 가지면서 직관적인 UI를 지향했으며, 현대 SPA 프론트엔드 개발 프레임워크들이 주는 느낌은 커뮤니티에서 일반적으로 느끼게 되는 클래식한 느낌은 반감시켜 배제하고자 하였습니다.
또한, 너무 많은 라이브러리나 프레임워크에의 의존을 줄이고자 하였습니다.
따라서, 클래식한 온라인 커뮤니티의 경험, 좀 더 심플하고 직관적 UI, 깔끔한 디자인, 프레임워크과 라이브러리 의존성 최소화를 바탕으로 개발 방향을 잡게 되었습니다.
처음에는 최신 기술 스택들을 적용하여 온라인 커뮤니티를 구성하려 하였으나, 클래식한, 전통적인 웹 개발 방식에 따라 기존 온라인 커뮤니티의 경험을 그대로 전달하고자 하였습니다.
너무 세련되고 다이내믹한 SPA 웹 서비스 보다 클릭 시 깜빡임이 있어도 수많은 커뮤니티 글의 안정적인 SEO 지원 등을 위해 전통 웹 개발 방식으로 기술 스택을 정하였습니다.
완벽한 클래식 경험을 제공하기 위해 기존의 국내 커뮤니티가 주료 사용하고 있는 PHP
를 기본 웹 개발 언어로 결정하였습니다.
클라이언트와 서버 간 실시간 반응성을 구현하기 위해 Node.js
+ Express
환경에서 웹소켓을 구현하였습니다.
DB는 PHP
와 가장 잘 어울리는 MySQL 8
을 선택하였습니다. Javascript는 외부 라이브러리나 프레임워크 없이 순수 VanillaJS
를 사용하였습니다.
정리하면 아래와 같습니다.
티티닷컴의 주요 기능은 다음과 같이 정리할 수 있습니다.
관리자 기능과 더불어 온라인 커뮤니티들이 제공하는 기본적인 기능들은 대부분 지원하도록 개발하였습니다. 간단하게 정리하면 몇가지 특징은 다음과 같습니다.
댓글 이미지 첨부
글 작성 데이터의 경우, TinyMCE 에디터의 마지막 MIT 라이센스 버전인 6.8.5를 차용하였으며, 커뮤니티에 맡게끔 몇가지 튜닝을 하였습니다.
티티닷컴에 적용된 TinyMCE 6 기반 에디터
티티닷컴에서는 글이나 댓글 작성 시 작성자의 현재 국가를 표시하게됩니다.
클라우드플레어서 요청 헤더에 자동으로 국가정보를 넘겨 서버로 보내주어 이 정보를 활용할 수 있지만, 서비스 의존성을 없애기 위해서 GeoIP2를 이용하여 국가 정보를 가져옵니다.
IPv6도 지원하기 때문에 모바일 환경 등에서도 적절하게 대응할 수 있습니다. (이를 위해서는 클라우드플레어에서 IPv6 정보를 Psuedo IPv4로 변환시키거나 하면 안됩니다.)
GeoIP2에서 제공하는 MMDB파일을 다운로드 받고, GeoIP2 패키지를 컴포저로 설치하면, 다음과 같은 Wrapper 클래스로 만들어 두어 국가 정보를 쉽게 조회할 수 있도록 합니다.
글 또는 댓글 작성 시 국가 표시
# ... 중략 ...
use GeoIp2\Database\Reader;
// GeoIP 관련 클래스
class GeoIP
{
private static $reader = null; // 전역에서 사용할 MMDB 리더 변수
private static function get_reader()
{
if (self::$reader == null) {
self::$reader = new Reader(Config::GEOIP_DB_PATH);
}
return self::$reader;
}
/**
* IP주소의 국가 코드 가져오기
*
* @param string $ip_address IP 주소 문자열
*
* @return string 국가 코드 (ISO 3166-1 alpha-2)
*/
public static function get_country_code(string $ip_address): string
{
$reader = self::get_reader();
$record = $reader->city($ip_address);
if ($record) {
return $record->country->isoCode;
}
return "";
}
function __destruct()
{
if (self::$reader != null) {
self::$reader->close();
}
}
}
게시판 개발은 기능 추가 등을 고려하면 끝이 없을 정도로 매우 많은 작업을 요하는 건입니다. 국내 온라인 커뮤니티 서비스들의 대부분은 오픈소스 게시판을 기반으로 만들어져서 오랜 기간 수정을 거쳐서 현재의 모습으로 진화를 거듭해왔습니다.
티티닷컴은 Legacy 게시판 솔루션을 이용하지 않고, 클래식한 웹 개발 환경을 이용하여 게시판을 구현하고 이를 통해 커뮤니티 서비스를 개발하였습니다.
개인 취미 혹은 개인적인 니즈로 인해 개발을 시작하게 되어 많은 시간을 할애하여 개발을 진행할 수 없었지만, 짧은 기간 내에 최대한 여러가지 기능들을 개발하고 커뮤니티 사용자들이 좀 더 편리하게 서비스를 이용할 수 있도록 신경써서 유지보수를 진행했습니다.
티티닷컴은 아래 사이트 링크를 통해 접속하여 실제 서비스를 확인할 수 있습니다.
긴 글 읽어주셔서 감사합니다.