@senspond

>

개발기>Web 개발기

왜 나는 굳이 블로그를 직접 개발하게 되었을까?

등록일시 : 2023-09-03 (일) 11:35
업데이트 : 2023-12-07 (목) 01:13
오늘 조회수 : 7
총 조회수 : 1810

    안녕하세요 RgbitCode 블로그를 개발하고 운영하고 있는 개발자입니다. 🍎 이 글은 블로그의 기본적인 기능을 개발하고 나서 처음으로 작성하는 글입니다. 이 블로그를 굳이 개발을 하게 된 동기와 고려했던 사항들을 적어봅니다.

    프롤로그

    필자는 개발자가 아닌시절 부터 꾸준히 글을 써오며 10년 넘게 네이버 블로그를 운영해왔다. 네이버 블로그는 사진 위주의 글을 올리는데는 편리한 부분이 있지만, 코딩관련한 글을 정리할 때는 불편함을 자주 느끼면서 중간에 티스토리, Velog, Github 블로그 등 여러 블로그 들을 사용해보면서 다른 블로그로 이전 하려고 했지만..


    그 어느 것도 100% 만족스러운 블로그 서비스가 없었다.

    그리고 나의 끝없는 블로그 방황은 시작되었다. 이거 썼다 저거썼다~ 하면서...


    다음은 블로그 형태를 크게 4가지로 나누어 정리해보았다.


    블로그 형태 4가지 ?

    1. 1. 서비스 가입하여 이용하는 블로그

      대표적으로 네이버, 티스토리 같은 블로그 서비스에 가입하며 이용하는 것이다. 아무런 기술적인 지식이 없어도 누구나 쉽게 이용이 가능하며 무료이다. 단점은 플랫폼이 만든 테두리 안에서만 가지고 놀 수가 있다.


    2. 2. 정적사이트 생성기(SSG) 블로그

      벡엔드/데이터베이스 구성 없이 Jekyll, Gatsby 같은 정적사이트 생성기(SSG) 를 이용해서 적당한 테마를 선택하고 컨텐츠들만 작성하고 배포를 하면 되는 형태의 블로그를 만드는 것이다. 실제로 많은 개발자들이 기술블로그를 만들때 쓰는 방식이다. github 호스팅을 하면 유지비용이 발생하지 않는 장점이 있다. 하지만 글이 많아지게 되면 될수록 빌드시간이 오래 걸리며 컨텐츠 관리가 어려워 진다.


    3. 3. 설치형 블로그 (CMS)

      서버사이드 랜더링을 지원하는 설치형 블로그인 워드프레스와 같은(CMS)를 사용해 컨텐츠를 관리하는 방법이다. 서버 호스팅이 필요하다는 단점이 있지만, 데이터베이스/백엔드 개발이 전혀 하지 않고 컨텐츠를 관리할 수 있다. 약간의 IT 지식이 있다면 블로그를 운영하는데 최고의 선택지라고 생각된다.


    4. 4. 직접 자체 구축한 블로그

      하나부터 열까지 직접 코딩을 하며 만들어 나가는 방식으로 모든것을 나의 입맛대로 만들수가 있다. 하지만, 모든것을 직접 만들어야 하는 수고비용이 들며 유지비용이 발생 할 수 있다. 그리고 해보면 알겠지만... 생각보다 굉장히 많은 시간이 들어간다.


    그리고 보니 필자는 1번 부터 2번, 3번, 4번 순으로 블로그를 이용해왔다. 처음에는 2번의 방법으로 개발을 했다. 개발이라고 할것도 없이 깃허브에서 적당한 테마를 하나 찾아 적용하면 하루면 뚝딱하고 블로그를 만들 수가 있었다. 그런데 쓰다보니 재미가 없었다. 그리고 3번의 방법으로 구상을 해보았다.


    마케팅 용도나 수익형 블로그라면 목적에 맞게 1, 3번을 운용하는 것이 가장 좋은 선택이라고 생각이 된다. 네이버 검색노출을 노린다면 네이버 블로그가 확실히 유리하고, 구글 검색을 노린다면 워드 프레스가 좋다고 생각된다. 네이버/다음/구글 적당히는 티스토리? ㅎㅎ 필자는 워드프레스 기반으로 개발을 고려해본적 있었는데, 워드프레스 기반으로 커스텀 마이징해서 내입맛대로 바꾸는 것이 그리 간단 하지가 않았다. 우선 PHP 를 어느정도 다룰 수 있어야 하고 서비스 회사들의 실무개발서 요구 하는 스텍과는 거리가 너무 멀었다. 아무튼 워드프레스 PHP를 수정해가며 만지작 하다... 이럴거면 귀찮아도 직접 만드는 것이 낳겠네? 하는 생각이 들었다.


    앞으로 블로그를 할아버지 될 때까지 평생 할 텐데, 오래걸리더라도 나를 만족시킬 수 있는 블로그를 만들어보자! 🍎

    그리하여 시작하게 되었는데, 기본적인 요구사항을 정리하자면 다음과 같다.


    기본적인 요구사항

    1. 개발자를 위한 컨텐츠 생산도구 (웹 에디터)

    가장 중요한 기능이라고 할 수 있다. 블로그의 본질은 글쓰기 행위 즉 블로깅에 있기 때문이다.

    그런데, 개발자의 글쓰기는 코딩관련한 글을 잘 정리하는데 목적이 있다.

    필자가 생각했을때 개발자의 글쓰기에 필수 요구조건은 아래와 같은 크게 3가지로 생각을 했다.


    • 1. 마크다운 문법지원

    • 2. 이미지 업로드 기능

    • 3. 소스코드 하이라이팅


    마크다운 문법으로 포스팅을 깔끔하고 빠르게 정리할 수 있으며 네이버 블로그처럼 클립보드에 저장된 이미지를 Ctrl + C , Ctrl + V로 업로드가 가능하며, 코드 블럭을 구분해 소스코드를 보기 좋게 하이라이팅 해주는 기능이 있어야만 했다. 이러한 요구조건을 만족시키는 웹 에디터는 NHN 사에서 개발하여 오픈소스로 공개한 Toast ui editor 가 있다. 초기개발 당시 고려했던 웹 에디터 이기도 하다. 하지만 커스텀마이징이 어려운 단점이 있어서 그외 몇가지 다른 에디터 들도 고려해봤었는데, 최종적으로 Prosemirror 기반으로 개발을 하게 됬다.


    ( 웹 에디터)

    2. 회원가입 / 로그인 기능 / 관리자페이지

    최종적으로 회원가입하고 로그인하여 컨텐츠를 관리 할 수 있는 블로그 서비스 형태로 만들고 싶었기 때문에 회원가입 / 로그인 / 관리자 페이지 단의 기능들이 필요했다. 더 많은 기능들을 생각하고 있지만 정말 필수적인 기능들이라면 아래와 같다.

    🍊 관리자페이지 요구사항

    • 블로그 컨텐츠 관리(CRUD) 기능

    • 카테고리 / 태그 관리 기능

    • 대문이미지 관리 기능

    • 사용자정보 관리 기능


    (초기 버전 카테고리 관리)

    3. 사용자 페이지

    • 모든 사용자들의 게시물을 보여주는 페이지

    • 특정 사용자의 블로그를 보여주는 페이지

    • 카테고리 / 태그 검색 페이지

    • 연관포스팅 / 댓글

    4. 기타

    블로그의 필수 기능은 아니지만, 그 어떤 사이트에도 없는 개발자 친화적인 UI/UX 를 구현해보고 싶었다.

    • 애플 맥북 느낌의 디자인

    • 키보드 단축키 지원

    • 웹 터미널


    개발자에게 친숙한 명령어를 사용해 페이지를 이동하거나 환경설정을 할 수 있도록 하는 기능이다.

    지금 글을 쓰는 이 시점에는 모양새만 구현이 되어있고, 초기 테스트 배포버전(ver0.0)에는 빠져있다.

    기술스택

    블로그를 개발하기 위한 개발환경을 구성해야 했다.


    데이터베이스

    • postgresql 15

    회사에서 일을 하며 주로 다루던 데이터베이스는 Oracle 이지만 여긴 회사가 아니다 보니 라이센스 문제에서 완전히 자유로운 데이터베이스가 적합해 보였다. 초기에 고려했던 데이터 베이스는 mysql/mariadb 와 postgresql 이였다. 단순 select 가 많은 간단한 웹사이트에는 mysql 이 좀더 낳을 수도 있겠지만, Oracle에 준하는 엔터프라이즈급 기능이 있는 postgresql 로 선택했다.


    백엔드

    • JAVA 17

    • Spring Boot 3.x

    • JPA / QueryDSL


    백엔드를 Spring 으로 결정한 이유는 필자가 Java 개발자이기 때문에 NodeJs 백엔드 개발보다는 Spring 기반 백엔드 개발에 익숙하기 때문이다. 아마 프론트엔드 개발자였다면 백엔드도 JS 기반으로 만들지 않았을까 싶지만, 개인적으로 자바스크립트는 TypeScript를 적용해도 유지보수가 Java 만큼 쉽지가 않다고 느끼는 부분도 한몫 한것 같다.


    프론트엔드

    • Typescript

    • React18 / Next13

    • TailwindCSS


    전문 프론트엔드 개발자가 아니다보니 공부를 해가면서 진행을 하게 되었고 가장 진도가 안나오던 파트였다.

    React 로 직접 SSR 를 구현해보려고 했지만 NextJs를 사용해 보다 쉽게 SSR를 구현하기로 했다.

    필자에게 가장 어렵고 시간이 오래걸렸던 부분은 UI 개발이었다.


    개발하면서 느낀점

    단순 블로그가 아닌 블로그 플랫폼 형태로 기능들을 개발하는 과정은 그렇게 쉽지 않았다. 당장은 아무도 모르는 나혼자 쓰는 블로그 이지만... 우선 클라우드 서버 인프라 구성부터 시작해서 디자인, 프론트엔드, 백엔드, DB 등 많은 정성이 들어가야 했다. 하지만 조금씩 완성이 되가는 모습을 볼때 뿌듯함 ? 🍇 결국 자기만족이다.


    결론

    블로그 자체개발은 정말 자기만족을 위한게 아니라면 추천하지 않는다. 왜냐하면 생각보다 많은 시간이 소요되며 돈이 되는것도 아니다. 직장인이라면 여가시간이 사라진다 ㅎㅎ 지금 다시 과거로 돌아가면 워드프레스를 설치해 백엔드 개발을 생략해버리고 워드프레스 API를 통해 데이터를 가져오고 프론트엔드를 최신 프레임워크를 사용한 JS 환경으로 개발할 것 같다.


    senspond

    안녕하세요. Red, Green, Blue 가 만나 새로운 세상을 만들어 나가겠다는 이상을 가진 개발자의 개인공간입니다.

    댓글 ( 0 )

    카테고리내 관련 게시글

    현재글에서 작성자가 발행한 같은 카테고리내 이전, 다음 글들을 보여줍니다

    @senspond

    >

    개발기>Web 개발기

    • [현재글] 왜 나는 굳이 블로그를 직접 개발하게 되었을까?

      안녕하세요 RgbitCode 블로그를 개발하고 운영하고 있는 개발자입니다. 🍎 이 글은 블로그의 기본적인 기능을 개발하고 나서 처음으로 작성하는 글입니다. 이 블로그를 굳이 개발을 하게 된 동기와 고려했던 사항들을 적어봅니다.
        2023-09-03 (일) 11:35
      1. 웹사이트에 명령프롬프트(터미널) UI 개발

        이번 글은 이 웹사이트(RgbitCode)에 명령프롬프트(터미널) UI 를 개발했던 과정을 정리해보았습니다.
          2023-12-07 (목) 02:15
        1. 블로그 서비스로 혁신창업스쿨 지원했던 후기

          RgbitCode 웹 사이트의 기원이 되는 이야기를 하나 들려드릴까 합니다. 저는 개발자 특화 블로그 서비스로 혁신창업스쿨이라는 정부지원 사업에 지원 했었는데요. 그때 광탈했던 이야기입니다.
            2023-09-05 (화) 01:27