3 분 소요


회고

지금까지 프로젝트를 진행하면서 한 생각이나 느낀 점들을 정리해보려고 한다.


1. 프로젝트 주제 선정

프로젝트 선정부터 보면 마침 포트폴리오를 위해 프로젝트를 진행해야 하는 상황이었다.
프로젝트 주제에 대해서 고민을 많이 했었는데, 우연히 지인들을 만나서 식사를 하려고 하다가 앞 뒤로 같은 음식을 파는 다른 식당이 존재했다.
각자 각 식당을 찾아보면서 리뷰를 비교 했었는데, 여기서 영감을 받아서, ‘두 식당을 동시에 비교할 수 있는 사이트를 만들면 어떨까?’라는 생각이 번뜩 들었다.

그래서 구상을 해 보았는데, 전국 식당을 비교하려고 했지만 마땅한 API가 있지 않았고, 네이버 지도를 통한 크롤링을 생각했었다.
하지만, 크롤링을 통해서 데이터를 가져온다고 해도, 고려해야 할 것이 너무 많았다.

  • 예를 들면 식당 이름을 검색했을 때 체인점이면 여러 검색어가 뜰텐데 이를 어떻게 해결할 것인가.
  • 정확한 식당의 이름으로 검색을 해야 제대로 된 데이터를 찾을 수 있을 것 같은데, 이를 어떻게 해결할 것인가.

등 여러 문제가 있었다.
단순히 지역 식당을 검색해서 보여주는 정도라면 간단하지만, 특정 식당을 검색하여 비교하려면 생각보다 많은 것을 고려해야했고, 첫 프로젝트라서 정말 어디부터 시작해야 할지 감이 잡히질 않았다.
그래서 처음 시작을 식당에 구애받지 않고, 조금 넓혀서 다른 것부터 비교할 수 있는 사이트를 만들고, 차차 늘려가자는 목표를 가지고 진행하게 되었다.
가장 데이터를 쉽게 구할 수 있는 것이 영화라고 생각했고, 영화 비교 사이트를 만들기 위해 네이버 영화 API를 통해서 개발을 시작했다.


2. 사전 준비

프로젝트를 진행하기 전까지 Java에 대해서도 대충 알고 있는 정도였기 때문에, 처음 공부를 시작할 때 ‘Do it’책을 보면서 코드를 다 작성해 보면서 정확한 개념을 알게 되었고, 인러런에서 Spring Boot, JPA 관련 강의들을 보면서 지식을 쌓았다.

inflearn

Front 단을 개발하기 위한 Html, css는 유튜브에 있던 클론 코딩을 보면서 기본 개념만 알아두니, 조잡하지만 어느정도 코드를 가져와서 작성할 정도는 되었다.


3. 개발 스펙

environment

당장 사용할 수 있었던 개발 스펙은 Java를 이용한 Spring Boot, JPA, html, css 정도 였다.
처음 개발 시작 단계에서는 H2 DB로 간단하게 개발을 하고, 어느정도 개발이 완료 되었을 쯤에 MySQL로 변경하였다.
Front단은 Html, css를 기본으로 가져가고, 동적으로 필요한 부분은 Thymeleaf, 필요하면 중간 중간에 JS 코드를 작성하였다.


4. 개발 기간

개발 일정을 정하고 시작한 것이 아니었고, 하면서 시행착오가 많아서 시간이 오래걸린 것 같다.
예를 들어 처음 예정에서는 Spring Security를 도입하여 사용자의 강제 접근을 막고, 패스워드 암호화를 진행하려고 했다.
동작은 잘 됐지만, Front 단에서 로그인된 회원 정보를 유지하는 코드가 맘에 들지 않아서 한참 고민하다가 Spring Security 대신 Interceptor를 도입하게 되었다.
지금 다시 생각해보면 Spring Security를 적용하고, 당시에 존재했던 문제도 해결할 수 있을 것 같다는 생각이 들긴 한다..
또한, 화면을 제일 먼저 만들어 두고, Back-end 부분을 나중에 개발을 하려고 했는데..

alien 오래되서 그런지 JPA를 어떻게 썼었는지 까먹었다..

그래서 강의 보면서 정리했던 Blog의 JPA 부분을 한 번 훑어 보느라 시간이 더 오래걸렸다..


5. 느낀 점

우선 개발 초반부터 제일 많이 생각한 것이 ‘Front-end 개발자 한 명이 있으면 좋겠다.’ 였고, 지금 와서 생각해도 그렇다..
배치도 뜻대로 잘 되지 않고, 특히 디자인에 대한 감각이 너무 떨어져서 뼈대만 잡는 것도 힘들었다. 결과적으로 Front단 개발에 너무 많은 시간을 소모한 것 같다.
Front단 개발에 신경을 안쓰고, 오로지 Back-end단 개발만 했다면 시간을 훨씬 단축할 수 있었을 것 같다.
하지만 이 과정에서 html, css를 보다 많이 사용하게 되면서 처음보다 코드에 대한 이해가 깊어지기도 했고, 동적인 부분은 thymeleaf를 많이 사용하면서 템플릿 엔진인 Thymeleaf에 대한 공부도 많이 된 것 같다.

Back-end 부분은 MVC 패턴을 통해서 개발하였고, Repository 부분은 다양하게 써보기 위해서 JPA, Spring Data JPA, QueryDSL 골고루 사용해 보았다.
분명 공부할 때는 다 안다고 생각했지만, 개발 당시에는 까먹어서 헤맬때도 많았다..
확실히 개념을 공부했다고 해도 사용하지 않으면 금방 까먹는 것 같다.

개발해 보면서 기존에 공부했던 개념이나, 코드를 많이 사용하긴 했지만, 오히려 처음 사용해보는 부가적인 코드가 더 많았다.
예를 들면 API를 처음 사용해 보기도 했고, 이 과정에서 JSON을 다뤄 보기도 하며, 크롤링이라는 개념을 처음 알고 도입해 보기도 했다.
처음엔 크롤링이라는 것이 마냥 어렵게만 느껴졌었는데, 코드를 작성해보고 사용해 보니 그렇게 어려운 코드는 아니었다.
이렇게 새로운 것을 배우며 사용하는 이 과정이 나름 재밌었던 것 같다.

전체적으로 코드와 주석을 최대한 신경 쓰면서 작성은 했지만 아직 많이 부족하고, 실무에서는 내가 작성한 코드가 쓰여질 수 있는지, 아니면 다르게 작성하는 방법이 있는지 등 모르는 부분이 너무 많았다.

이 과정에서 공부를 통해 배우는 것도 있지만, 역시 실무에서 배우는 것이 훨씬 더 많을 것 같다는 생각을 다시금 하게 되었다.


6. 마무리 이후

처음은 영화로 시작하여 더 다양한 것을 비교할 수 있는 사이트를 만들 목적으로 진행되었고, 우선 영화 비교 사이트가 완성되면서 1차 막을 내렸다.
그리고 Blog나 Git에 프로젝트에 대해 정리하는 중에 갑자기 프로젝트가 돌아가지 않는 것이다..
코드를 여기저기 봐도 애초에 잘 되던 프로젝트가 갑자기 안되는 것이었기 때문에 작성한 코드 문제는 아니라고 생각했고, 오류에 대해서 찾아보니 API 부분에 문제가 발생했다는 것이다.

그리고 찾아본 결과..
naver_notice

네이버 공지에서 보게 된 충격적인 공지..
이로써 나는 내 프로젝트를 잃었다..
나의 원대한 꿈은 저 멀리 날아가고.. 이 아이템으로 서비스를 생각했던 나는 이 프로젝트를 다시 서비스 할 수 있는 단계까지 끌고 가려면 코드를 다 엎어야 된다는 생각에 의욕을 상실했다..
아마 시간이 된다면 나중에 다시 코드를 고치면서 다시 만들 것 같지만 그게 당분간은 아닐 거 같다..

댓글남기기