22.01.24 ~ 02.14 프로젝트 회고

서승원·2022년 2월 16일
0
post-thumbnail

https://github.com/crimy/gocom
한달에 가까운 기간 진행한 프로젝트가 끝이 났다. 배운 것도 아쉬운 것도 많은 프로젝트였는데 그래도 배운 것이 너무 많았다.

나의 첫 프로젝트

스프링을 이용해 시작부터 끝까지 내가 직접 한 프로젝트를 끝마친다는 것이 시작하고보니 생각보다 큰 일이었다. 하나하나 공부하고 넘어갈 건 왜 이렇게 많고 살펴볼 소스는 왜 이리 많으며 내 프로젝트에 자동 생성된 이 파일은 대체 뭔지.
그래도 한 가지 다행인 점은 수업 때 만들어본 스프링 프레임워크 clone이 스프링이 돌아가는 방식을 이해하는 데 너무 큰 도움이 된다는 것이다. 프레임워크의 어노테이션 태그 하나하나, myBatis 같은 외부 라이브러리 등을 찾아보며 이해하고 적용하는 것은 그리 큰 일이 아니었지만, 내게 있어 Model, View , Controller가 무엇인지 이해하는 것은 그렇게 어려운 일이 아니었다는 게 천만다행이었다. 그렇게 첫 폴더 첫 Controller인 com.gocom.Controller.BoardController.java 를 만들며 내 첫 프로젝트가 시작됐다.

가장 먼저 한 일 (1주차)

우선은 틀이 있어야 하지 않을까 ? 라고 생각해 home.jsp에 메뉴 바를 만들었다. 하이퍼링크 좌표는 비워둔 채로. 나쁘지 않은 선택이었던 것 같다. 그대로 원하는 기능의 틀을 잡고 나니 그 다음부터는 공부였다. 로그인, 회원가입, 세션, 쿠키
세션과 쿠키의 개념을 알고 있다고 생각했는데 막상 로그인 기능과 엮어 생각하니 백지상태로 돌아간 기분이었다. 그렇게 프로젝트 본격적인 시작 첫 하루를 꼬박 로그인, 회원가입 기능을 이해하는 데만 보내게 됐고, 단 한 줄도 쓰지 못했다. 물론 지금도 그날도 그날 아무것도 안했다고 생각하지는 않았다. 첫 프로젝트에 이해도 못한 코드를 냅다 복사 붙여넣기 하는 건 안하느니만 못하다고 생각했으니까, 그렇게 이틀차에 로그인 기능을 어느정도 이해하고 여러 소스를 참조해가며 만들어내고, DB에 meber 테이블을 추가했다. 그 뒤로는 우선 사진 게시가 없는 텅 빈 게시판, 방명록 테이블과 페이지, 컨트롤러 생성. 그렇게 기초적인 틀을 잡는데 일주일 정도 걸린 것 같다.

본격적인 고민 (2주차)

틀만 잡고나니 본격적으로 인테리어를 채우기 전, 어떤식으로 진행할지 좀 더 막막해진 것도 같았다. 우선 DB와의 연동. 가장 널리 사용하는 myBatis를 사용하기로 했고 StatementCallback, StatememtCreator 등의 기능을 라이브러리를 이용해 xml 파일로 매핑해주는 것으로 이해하기가 크게 힘들지는 않았다. 그 뒤로는 임시적인 글쓰기, 로그인을 구현했고 테스트용 ID로 로그인하여 간단한 기능들을 구현해나갔다.

핵심기능 갖추기 (3주차)

사진을 첨부하기, 로그인/회원가입하기 등의 기능을 대부분 이 때 완성했다. 사진을 첨부하는 데 있어 생각보다 문제점이 많았던 것은 미리보기 시스템, INPUT의 타입, multipartFile을 java에서 받는 데 있어서의 처리였다. 미리보기 시스템의 경우 좋은 소스를 찾아 다듬어보려했지만 사진의 갯수가 가변적이고 크기도 제각각이라는 점에서 여러모로 손을 봐야 했다. input 타입은 초기 각각의 input으로부터 추가버튼을 눌러 input 을 추가하는 방식으로 했지만, 미리보기 시스템과의 연계 문제로 multiple 속성을 사용하기로 했다. java에서의 처리는 사진의 갯수가 가변적이란 점이 힘들었는데, 우선 첨부파일이 없는 경우는 글 작성을 막았고, carousel 의 구현을 위해서 carousel active class가 필요했기에 첫 이미지를 다른 파라미터로 따로 보내고, 그 이후의 리스트를 sublist를 이용해 따로 파라미터로 보냈다. 그를 이용해 carousel 의 구현에 성공했다.

디자인 마무리, 기능 점검 (4주차)

어느정도 기능을 마무리했지만 역시 빈틈이 많았다. 세션의 정보를 잘 불러오지 못하는 점, 댓글 네임태그의 추가, 게시판 사진파일 경로의 문제 등 많은 문제점을 하나하나 체크해가며 확인했고, 디자인에서 큰 문제가 생겼다. 백엔드에 집중하고싶다는 이유로 탬플릿을 사용했지만, 조금 아쉬운 점이 느껴진다는 강사님의 조언.
곰곰히 생각해보니 시간적으로 압박이 되는 건 사실이지만 분명 탬플릿 사용 안해도 내가 직접 부트스트랩, css 이용 할 줄 알고 빠듯하더라도 할 수 있다. 굳이 탬플릿을 사용한 이유를 떳떳하게 말할 수 없다. 라는 생각이 들었다. 그래서 우선 백업을 해두고 디자인을 갈아엎기 시작했다. 물론 약간 덜 화려했다. 하지만 부트스트랩, css 의 클래스 하나하나에 집중하며 내가 원하는 형태로 다듬는 것은 생각보다 배울 점이 많았고, 하면 할수록 실력이 느는 것도 느껴졌다.
이렇게 디자인을 마무리하고 기능에 대한 부분을 하나하나 다듬어 나가고 발표준비를 했다.

총평, 소감

아무래도 첫 프로젝트다 보니 엉성한점 , 보완할 점도 많지만 누가 뭐래도 나 자신이 생각하기에 충분히 만족할 만했다. 내 능력 안에서 최선을 다했고, 물론 더 뛰어나게 만들 수 있지만 내가 이해할 수 없는 코드, 내가 다듬지 못할 코드 생각 없이 복사 붙여넣기 하지않고 모두 내 손을 거쳐 만들어냈다. 아직은 갈 길이 멀었을지 몰라도 이거 하나만큼은 내가 직접 만들었으니까 자신감도 생기고 정말 내가 맨바닥은 아니다. 뭔가 해낸 것이 있다. 라는 기분을 느끼게 해주는 의미있는 프로젝트, 뜻깊은 교육과정이었다.
1개월간의 데이터분석 교육, 4개월간의 기능교육을 통해 많은 것을 배우고 느꼈다. 마인드도 성취지향적으로 바뀌었다. 이제부터 혼자 공부해 나가야한다는 막막함도 있지만 그래도 난 할 수 있을 것이다!

profile
2년차 백엔드 개발자, crimy

0개의 댓글