JAVA 웹개발 과정 국비 파이널 프로젝트 후기

1. 프로젝트 후기

프로젝트 기간은 1/12 ~ 2/9일까지 명절 포함 총 29일이었다.
AWS로 배포하고, 이것 저것 정리하다 보니 파이널 프로젝트 후기가 너무 늦은 감이 있지만 그래도 정리해본다.
아래는 Github 주소와 사이트 주소이다.

Github 바로가기 : https://github.com/kkongkeozzang/UnderTheMoon
사이트 바로가기 : http://3.38.240.8:9999/

1) 조장이 되다

세미 프로젝트를 하면서 파이널 프로젝트는 조장을 한 번 해보고 싶었다.
새로 시도해보고싶었던 것도 많았기 때문에, 이걸 다 해보려면 조장을 하는 방법 밖에 없을 것 같았다 ㅋㅋㅋ
파이널 프로젝트는 원하는 사람들끼리 모여서 할 수 있게 해주셔서 다행히 처음 국비를 시작할 때부터 친해졌던 조원들과 함께 프로젝트를 할 수 있었다.
조장 지원자가 (다행히) 나오지 않아서 조장을 순조롭게 할 수 있었다.
조장으로서 함께 프로젝트를 하게 된 것을 절대 후회하지 않게 해줘야겠다고 다짐했다!

2) 프로젝트 기획 단계

세미 프로젝트 때의 경험으로, 기획은 빠르게 그리고 깊게 할 수록 좋다는 것을 깨달았다.
그래서 본격적으로 파이널 프로젝트를 시작하기 전에 사전 회의를 해서 기획 단계부터 철저하게 역할 분담을 해서 진도를 많이 뺄 수 있었다.
요구사항 정리, ERD, Wire Frame, 배포, PPT, 발표, GIT, DB…
운이 좋았던 것은 모두 관심사가 달랐고, 잘 할 수 있는 것(?)이 달라서 역할 분담은 순조로웠다.
이 단계에서 가장 중요한 것은 맡은 부분에 누구보다 자세히 알아야 한다는 것이다. 다른 사람들을 알려줄 수 있게끔.. 그래서 각자 역할에 대한 이해도 높여오기로 했다.

3) 프로젝트 시작

프로젝트 주제는 무난하게 정해졌다.
기획에 많이 힘을 싣지 말자는 것에 모두 동의해서 쇼핑몰을 하되 기능 구현에 집중하는 것으로 정했다. 간단한 기능이여도 완성도 있게 하려면 생각보다 많은 노력이 들어가야했다.
모두 백엔드를 지망하고 있었기 때문에 프론트에는 힘을 많이 빼자고 했는데, 역시나 마지막이 되어갈수록 프론트도 신경을 쓰게 되었다. 어쩔 수 없는 부분인 것 같다.

우리는 새로운 라이브러리나 해보고 싶었던 (우리 기준으로는 어려운) 기능을 많이 시도하기로 했다. 처음에는 스프링 부트와 타임리프를 사용해서 프로젝트를 하려했는데, 많은 회의 끝에 그냥 스프링 레거시 프로젝트로 시작하기로 했다.
지금 생각해보면 부트로 했어도 잘 했을 것 같다. 조원들이 워낙 열정이 넘쳤기 때문이다.

4) 기능 구현

여러가지 기능들 중에서 가장 기억에 남는 기능을 몇가지 꼽자면, 아래 정도가 있을 것 같다. 물론 쓰자면 끝도 없이 많지만.. 뭔가 딱 생각했을 때 많이 고민했고 우여곡절이 많았던 기능이지 않나 싶다 ㅋㅋㅋ

  1. 문자 인증 API (Coolsms)
    가장 신기했던 API 기능이다. 문자 하나에 50원이라는 유료 서비스이지만 조원이 처음 구현에 성공하여 문자 발송이 실제로 되었을 때의 짜릿함은 아직도 생각난다. 생각보다 구현이 쉬웠다는 조원의 말이 기억나기도 한다.
  2. 스프링 시큐리티
    현업에서도 많이 쓴다는 스프링 시큐리티.. 깊이 들어가면 한도 끝도 없다고 해서 겁을 집어먹고 시작했지만 겉핥기(?)는 그럭저럭 해냈다고 생각한다. 스프링 레거시에 시큐리티 적용하는 것은 자료를 찾기 어려워 영어 강의를 보며 구현을 해냄 ㅋㅋ
  3. 최근 본 상품
    최근 눌러본 상품 순서대로 미리보기가 뜨며 스크롤대로 따라다니는 기능이다. 간단한 기능인 줄 알았는데 가장 최근에 누른 상품이 리스트 가장 앞으로 오게하는 것과 중복 제거가 있어 힘들었다. 알고리즘 공부를 허투루하진 않았구나 하는 생각도 들었고, 동시성 오류에 늪에 빠지기도 해서 가장 기억에 남는 기능이다.
  4. 페이징
    게시판이 워낙 많았기 때문에 중복되는 페이징 기능을 static 으로 빼서 사용했다. 비동기와 동기를 각각 구현했기 때문에 하드코딩이 된 게 없지 않아 있지만 그래도 조원님들이 이 메소드 덕분에 쉽게 페이징을 했다고 해서 뿌듯했다.
  5. 결제(Bootpay API)
    핵심 기능 중에 하나이다. 그만큼 고생도 많이 했지만 구현하면서 API 사용에 대해서 이해도가 좀 생긴 것 같다. Bootpay API 관련 글도 몇 개 없어서 꽤나 고생했다. 결국 최신 업데이트를 reset해서 예전 버전으로 구현하고 난리도 아니였다 ㅋㅋ
  6. 썸네일 사진 출력
    드래그 앤 드랍으로 이미지 사진을 첨부하여 썸네일 라이브러리를 사용했다. 복잡한 코드였기도 하고, 외부 경로로 이미지 업로드를 뺀 탓에 배포할 때 애를 먹어서 기억에 남는다.

5) 혼돈의 git 사용(2)

세미 때 git으로 고생해서 파이널 때는 좀 쉬울 것이라고 생각했는데, 브랜치를 적용하다보니 어려웠던 것은 마찬가지였었다. 그래도 조원 중에 git을 나보다 잘 아는 사람이 있어서 많은 도움을 받았다. 물론 처음 git으로 협업했을 때보다는 수월했지만 생각보다 많은 어려움이 있었다.
추천하고 싶은 것은 git은 cmd나 bash로 할 것..^^ 이클립스로 연동해서 쓰지 말자..!

6) 느낀점

조장으로서 해야 할 일도 많고 때로는 내 생각대로 안 따라와주는 조원들이 미울 때도 있었지만, 그래도 무탈하게 프로젝트를 잘 끝냈다.
세미 때와 마찬가지로 계획을 잘 세우는 것이 중요하다고 느꼈고, 그와 못지 않게 사람들과의 커뮤니케이션도 중요하다는 것을 다시 한 번 느끼게 됐다.
세미 프로젝트 때는 프로젝트 완성에만 초점을 맞췄다면, 파이널 프로젝트 때는 내가 하고 싶었던 기능을 맘껏 내맘대로 해 볼 수 있었던 것이 장점이였다.
뜻이 맞는 조원들이 있어서도 그렇지만, 코드를 쉽고 간결하게 해준 스프링 프레임워크와 mybatis 덕분이기도 하고, 세미 때보다 실력이 늘은 것도 있는 것 같다.
기획부터 발표까지 정말 재밌고, 즐거웠던 경험이였다.

파이널 소스 코드는 각 기능 별로 해서 포스팅을 별도로 할 예정이다.
그 과정에서 배운 것과 추가로 더 공부하여 정리한 것을 합쳐서 업데이트 할 예정이다.

댓글남기기