스프링 부트 게시판 웹 사이트 프로젝트 구현 회고
프로젝트 설명
스프링 부트를 기반으로 한 회원가입이 가능하고 CRUD가 가능한 게시판 웹 사이트 프로젝트입니다. 'XYAB'라는 닌텐도 스위치 게임을 좋아하는 사람들을 위한 커뮤니티로, 스위치 및 스위치 게임에 대해 자유롭게 이야기할 수 있는 공간입니다.
GitHub : https://github.com/ddukkung/xyab
GitHub - ddukkung/xyab: Spring Boot, Spring Security, JPA로 만든 게시판 웹 사이트 프로젝트입니다.
Spring Boot, Spring Security, JPA로 만든 게시판 웹 사이트 프로젝트입니다. - GitHub - ddukkung/xyab: Spring Boot, Spring Security, JPA로 만든 게시판 웹 사이트 프로젝트입니다.
github.com
왜 시작했는가?
학원 수료 후 몇 번의 면접을 통해 스프링 및 웹 사이트 제작 전반에 대한 배움이 너무 짧다고 느꼈고, 인터넷 강의를 통해 스프링 부트를 공부했습니다. 두 달 가량의 공부 끝에 강의에서 배운 지식을 활용해 체화시키고자 커뮤니티 프로젝트를 진행하였습니다.
왜 이 프로젝트를 기획했는가?
코로나 이후 외출을 자제하게 된 사람들은 집 안에서 즐길 수 있는 유희거리를 찾기 시작했습니다. 때마침 동물의 숲의 인기와 시기가 겹쳐져 콘솔 게임기기인 닌텐도 스위치가 폭발적인 인기를 얻게 됐습니다. 평소 게임을 하지 않던 여성 유저들의 유입으로 인해 스위치 유저의 풀이 더욱 커졌고, 그들이 손쉽게 게임에 대한 사담을 나눌 장소의 수요가 증가할 것으로 예상해 닌텐도 스위치 커뮤니티를 제작하게 됐습니다.
개요
- 명칭 : XYAB
- 개발 인원 : 개인 프로젝트
- 개발 기간 : 2022년 3월 22일 ~ 4월 2일
- 주요 기능 :
- 회원 가입 및 탈퇴
- 회원 정보 수정
- 로그인 및 로그아웃
- 전체 게시글 조회
- 게시글 CRUD
- 댓글 조회, 작성 및 삭제
- 페이징
- 검색
실행 화면
글이 너무 길어져 접은글로 작성했습니다. 자세한 실행 화면은 아래 접은글을 펼쳐 확인해주세요.
회원 가입

회원 정보 수정

회원 탈퇴

로그인, 로그아웃

게시글 CRUD

페이징

검색

댓글

보완 사항
이 프로젝트는 이전에 제 능력을 넘어서는 거대한 기획으로 인해 프로젝트를 실패한 뒤 작은 것부터 시작하자는 마음에서 시작했습니다. 그래서 기본 중의 기본 게시판 커뮤니티를 만들었지만, 이것 또한 쉽지 않다는 것을 프로젝트를 진행하며 느낄 수 있었습니다. 그 기본적인 기능을 구현하는 것도 지금의 저로써는 힘에 부치는 것들이 있어 지금 당장은 구현하지 못했지만, 앞으로 꾸준히 보완해나가며 언젠가는 배포까지 진행해 사람들에게 직접 선보일 수 있는 커뮤니티로 성장시키고 싶습니다. 다음은 프로젝트를 진행하며 구현하지 못했던 기능과 추가하고 싶은 기능입니다.
보완 사항
- 회원가입 아이디 중복 체크 및 유효성 검사 구현
- REST API 제대로 구현하기
- 댓글 수정 기능 구현 성공하기
- 페이징
- 페이지 수가 점점 늘어나는 것 고치기
- 제일 마지막 페이지에서 next 버튼 클릭 시 막히는 것이 아닌 빈 화면이 나오는 것 고치기
- 페이지 처음, 끝으로 이동하는 버튼 추가하기
추가 사항
- 파일 업로드 기능
- OAuth2 로그인 기능
- 메인 페이지 따로 제작하기(바로 글 목록 페이지로 가지지 않도록)
- 관리자 페이지
- 마이 페이지(자신이 작성한 글, 댓글 관리 기능)
- 북마크 기능
- 게시판 수 늘리고 분리하기
- 채팅
- 대댓글
느낀점
배움에의 갈증
처음으로 혼자 프로젝트를 진행하며 가장 많이 느낀 감정은 배움에의 갈증이었습니다.
프로젝트를 진행하며 어떠한 기능을 구현하기 위해 인터넷에 검색해 글을 보며 참고할 때마다 처음 보는 개념이 등장하곤 했습니다. 처음에는 그런 것들을 하나하나 모두 찾아보며 나름대로 공부하고 기록하기도 했지만, 꼬리에 꼬리를 무는 새로운 기능과 개념에 이대로 가다가는 프로젝트를 완성할 수 없고 공부도 제대로 못하겠다는 생각이 들었습니다. 그래서 우선 당장 필요한 개념만 공부하고 기록한 뒤 부가적인 것들은 따로 메모만 한 뒤 넘어갔습니다.
프로젝트를 진행하며 이러한 일이 굉장히 잦았고, 저는 제가 공부할 것이 한참 많이 남았다고 생각했습니다. 분명 막막하긴 하지만, 그보다 공부를 통해 기초를 튼튼히 하고 싶다는 갈증 또한 끊임없이 느꼈습니다. 컴퓨터 전반에 대한 지식이 부족하다고 느꼈기에 앞으로 CS 공부와 함께 자바 기초 등 기반을 다지기 위한 공부를 해나갈 것입니다.
기록하는 습관
또한 기록하는 습관을 가지게 되었습니다.
이전에는 모르는 개념을 보게되면 그것에 대해 찾아보더라도 기록은 따로 하지 않고 한 번 읽고 이해했다 생각하며 넘기곤 했습니다. 하지만 나중에 또 그 개념과 마주쳤을 때 분명히 이름은 들었지만 그것에 대한 지식은 휘발된 경우가 잦았습니다. 그러나 이번 프로젝트를 진행하며 모르는 개념을 마주칠 때마다 그것에 대해 공부하고, 블로그에 직접 기록하는 연습을 했습니다. 그 결과 나중에 그 개념이 헷갈릴 때 다시 찾아서 볼 수도 있고, 무엇보다 기록하며 한 번 더 머릿속에 정리가 돼 이해할 수 있는 점이 좋았습니다. 특히 오류 로그를 남긴 것이 큰 도움이 되었습니다.
기본적인 게시판 만들기도 쉽지 않다.
맨 처음 스프링 부트 강의를 완강하고 프로젝트에 돌입했을 때 저는 제가 기존에 사용해오던 완전한 커뮤니티를 상상하며 프로젝트를 기획했습니다. 게시판도 9개나 있고, 내 글과 댓글을 관리할 수 있으며 글에 이미지도 업로드 할 수 있고... 하지만 맨 땅에 헤딩으로 프로젝트를 시작하고 깨달은 것은 자신의 능력의 부족함이었습니다. 제게는 게시판 하나도 벅찼습니다. 그것마저 맨 처음 시작했던 (실패한) 프로젝트를 진행할 때는 기본적인 프로젝트 구조조차 어떻게 짜야할지 몰라 우선 감이 가는대로 만들고 거기에 얼기설기로 나중에 알게 된 것을 추가하곤 했습니다. 그렇게 프로젝트는 엉켜만 가고, 이미 엉망진창이 된 프로젝트를 어떻게 풀어야할지 손조차 댈 수 없었습니다. 모든 것을 혼자서 진행한다는 것이 이렇게 막막하고 어려운 일이구나 하는 것을 느낄 수 있었습니다.
그 뒤로 책을 참고해 프로젝트를 진행해보기도 했지만 해당 책이 나온 지 몇 년이 지났다는 것을 꽤 진행한 후에 알게 되었고, 진행하는 동안 수 많은 오류를 마주했습니다. 시간은 날렸지만 그래도 이 과정에서 얻은 것이 있다면 오류를 스스로 해결하고 오류 로그를 남기는 것입니다. 학원을 다닐 때는 수업을 따라가기에 급급해 오류 로그를 남길 시간이 없어 아쉬웠는데 이때를 통해 오류 로그를 남기는 습관을 다질 수 있어 다행이라고 생각합니다. 하지만 너무나 많은 오류로 인해 더 이상 책을 통해 프로젝트를 완성하기는 어렵다고 판단하고 새로 프로젝트를 시작했습니다.
그렇게 완성된 것이 이번 프로젝트입니다. 욕심 다 빼고 나의 수준을 인정해 기본 중의 기본 게시판 프로젝트를 만들었습니다. 하지만 이것조차도 쉽지 않다는 것을 느꼈습니다. 스프링을 사용하지 않고 모델2 방식을 사용할 때는 오히려 쉬웠던 아이디 중복 체크와 유효성 검사가 스프링 부트를 통해 구현하려니 이것저것 고려할 것이 더 많아져 어렵게 느껴질 때는 아이러니를 느꼈습니다. 스프링 부트를 공부할 때 '아 모델2 방식에서는 그렇게 수고스럽게 했던 것이 스프링에서는 이렇게 간단하게 구현할 수 있구나' 하고 느낀 적이 많았기 때문입니다. 그래서 간편히 이용할 수 있다는 것은 그것에 대한 정확한 이해가 동반되어야 한다는 걸 깨달았습니다.
아쉬운 점
시간이 부족했다
앞서 말했듯이 저는 두 개의 프로젝트를 실패했습니다. 그 기간은 짧지 않았습니다. 벌써 학원을 수료한 지 5개월이 되었고, 더 이상 취업을 지체할 수 없었습니다. 그래서 이 프로젝트의 완성도를 높일 시간이 많이 부족했습니다. 앞의 실패가 없었다면 시간이 충분했겠지만, 그 시간을 마냥 후회하지만은 않습니다. 아직 내가 배울 것이 한참 많이 남았다는 것도 느낄 수 있었고, 충분한 기획을 거치지 않은 채 돌입한 프로젝트는 엉망이 되기 쉽다는 것 또한 깨달을 수 있었습니다.
하지만 시간이 부족한 건 사실입니다. 그래서 구현하지 못한 기본적인 기능이 많아 아쉬움이 남았습니다. 앞으로 점진적으로 보완해나갈 것입니다.
강의를 들으며 배운 것을 적용하지 못했다
스프링 부트 강의를 들으며 예제를 따라 칠 때는 제가 그것을 이해했다고 느꼈습니다. 하지만 그것을 프로젝트에 적용시키는 것은 별개의 문제였습니다. 예제와는 다른 프로젝트 구조에 자주 당황했습니다. 제대로 이해했다면 구조에 상관없이 적용시킬 수 있었을 것입니다. 사실은 제대로 이해하지 못했던 것입니다. 이 경험을 통해 앞으로 공부할 때는 예제만 따라치는 것이 아니라 실제로 나만의 프로젝트를 따로 만들어 그곳에 백지 암기하듯이 적용하며 공부해야겠다고 느꼈습니다.
테스트 코드를 작성하지 못했다
초반을 제외하곤 테스트 코드를 작성하지 못하고 로직을 작성한 뒤 런타임으로 바로 실행하며 확인했습니다. 반성해야할 점이라고 생각합니다. 앞으로는 테스트 코드를 작성하는 것을 더욱 연습할 것입니다.
마치며
여러모로 아쉬움이 많이 남는 프로젝트입니다. 하지만 혼자 처음으로 완성시킨 프로젝트인 만큼 애착도 생겼습니다. 보완 사항과 추가해야 할 사항을 앞으로 꾸준히 수정 및 추가해나가며 아쉬움을 상쇄시키고 싶습니다. 또한 언젠간 배포를 해서 사람들에게 직접 선보이고 싶습니다. 그러기 위해선 더욱 더 공부하고 로직을 이해하는 데 시간을 더 들여야 할 것입니다. 갈 길이 멀지만 내일은 더 나은 자신이 되길 바라며 오늘 더 노력할 것입니다.