Skip to content
This repository was archived by the owner on Dec 14, 2024. It is now read-only.

Kwonkyu/SimpleBBS

Repository files navigation

현재 SimpleBBS 프로젝트는 Spring MVC에서 Node.js 기반 애플리케이션(Vue.js + Nuxt.js / 백엔드 프레임워크(미정))으로 기술 스택을 변경할 예정입니다.

SimpleBBS

스프링 프레임워크를 공부하면서 처음 만들었던 게시판입니다. MVC 패턴 및 서버 측 렌더링(SSR)에 대한 이해와 웹 애플리케이션을 개발할 때 어떤 식으로 접근해야 하는지 전반적인 감을 익히기 위해 기본적인 게시판 및 관리 서비스를 구현하였습니다.

유료 클라우드 서비스를 사용할 여력이 되지 않아 무료 플랫폼 서비스인 Heroku에 배포하였습니다. 그러면서 애드온으로 제공하는 데이터베이스와 파일 저장소를 활용하여 구성할수 있었습니다.

관련해서 배포 기록은 블로그에 작성하였습니다.

구현 기능

  • Spring MVC 기반 폼 제출 방식
  • Spring Security 기반 로그인, 인가 적용
  • Thymeleaf 기반 템플릿 렌더링을 통한 화면 구현
  • 회원가입, 로그인, 비밀번호 복구 기능 구현
  • 게시글 CRUD 기능 구현
  • 댓글 CRUD 기능 구현
  • 게시글 작성 시 첨부파일 업로드 기능 구현
  • 게시글, 댓글 관리용 백오피스 기능 구현

후기 및 개선 사항

SimpleBBS는 서버 측 렌더링을 활용하기로 한 만큼 일부러 API 엔드포인트를 최대한 배제하는 전통적인 폼 제출 방식으로 진행했습니다. 그래서 모든 요청 및 응답에 페이지 자체의 새로고침이 수반되는 단점을 경험할 수 있었습니다. 별도의 프론트엔드 애플리케이션 없이 화면을 작성하여 제공할 수 있다는 장점이 있지만 최근 웹 애플리케이션에서 지향하는 SPA 디자인과는 괴리가 있기 때문에 상황에 따라 프론트엔드 라이브러리를 webjar로 적용하거나 API 서비스를 일부 적용하는 것이 좋다고 생각하게 되었습니다.

ORM 기술(JPA) 프레임워크(Hibernate)를 활용하면서 JdbcTemplate 처럼 쿼리를 직접 작성하지 않아도 된다는 편리함과 쿼리 전송에 대한 불완전한 제어, N+1 문제 등 다양한 장단점에 대해 고민해보는 계기가 되었습니다. 복잡한 기술이지만 데이터베이스 테이블을 Java의 객체로 객체지향적으로 다룰 수 있다는 점은 매우 인상깊었기 때문에 추후 프로젝트를 진행할 때도 필수적으로 포함하여 사용하고자 합니다.

사용 기술 스택

  • Spring Boot 2.4.3
    • Spring Framework에서 클래스패스의 라이브러리를 자동으로 인식하여 설정해주고 내장 서버를 제공하는 등 많은 편의성을 제공하기 때문에 빠른 개발이 가능하다고 생각하여 Spring Boot를 사용하였습니다.
  • Spring Data JPA
    • Spring 애플리케이션에서 JPA의 구현체 중 하나인 Hibernate를 Spring Data Repository를 활용하여 간편하게 사용할 수 있는 라이브러리기 때문에 사용하였습니다.
  • Spring Security
    • 애플리케이션이 회원 기능을 지원하기 때문에 이에 필수적인 인증, 인가 기능을 적용하기 위해 사용하였습니다.
  • MariaDB 10.x
    • MySQL의 소유권이 Oracle이라는 기업에 넘어갔기 때문에 오픈 소스인 MariaDB를 사용하였습니다.
    • 역량이 부족하여 데이터베이스 튜닝 경험은 없습니다.
  • Cloudinary
    • Heroku에서 무료 티어 애드온으로 제공하기 때문에 적용해 볼 수 있었던 미디어 파일 위주 스토리지 서비스입니다.
    • 주로 이미지, 동영상이 업로드되는 게시판 특성상 적합하다고 판단했으며 다른 형식의 파일도 업로드할 수 있어 사용하였습니다.
  • Thymeleaf 3
    • Spring Boot 부터는 JSP를 지양하고 대신 새로운 템플릿 엔진인 Thymeleaf를 지원하고 이를 권장하기 때문에 사용하였습니다.
    • JSP와 달리 컴파일 없이도 HTML 태그에 따라 화면 구조를 그려낼 수 있으나 '템플릿'이라는 목적에 따라 다른 엔진(Mustache 등)으로 전환을 고려하고 있습니다.

개발 환경

  • Java 11
  • IntelliJ Ultimate(Educational License)
  • Windows 10
  • Lombok
  • JUnit 5
  • Gradle 7.x

About

스프링 프레임워크를 이용한 게시판 애플리케이션입니다.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published