Spring 서버 스터디 8주차, 9주차는?
Spring 서버 스터디 8주차, 9주차는 그냥 API 작성(JdbcTemplate 쿼리 작성, 컨트롤러, 서비스, 레포지토리 코딩)이라 포스팅을 생략하기로 했습니다. 그래도 8주차, 9주차에 빅 이벤트 CMC 해커톤을 경험했기에 이에 대한 기록을 남겨보려고 합니다!!!!
벌써 이틀이 지나서 기억이 흐릿하지만 최대한 느낀점을 작성하려고 합니다. 해커톤은 서울특별시 공덕역 프론트원에서 진행 되었습니다.
참여 동기??
저는 UMC 2기 서버 Spring 파트를 진행하고 있습니다. UMC가 대학교 연합 동아리로, 6개월 활동으로 앱 런칭을 목표로 합니다.
CMC는 수익형 앱 동아리로 직장인, 대학생들 많은 분들이 참여하는 것 같습니다. 또한 기간은 3개월입니다.
어쨌든 너디너리(?)라는 생태계 안에 있는 동아리로서 UMC 동아리원들도 CMC 해커톤에 참여할 수 있었습니다.
저는 해커톤 경험이 없어서 상당히 무서웠지만.. 빠르게 진행하는 협업 경험과 저보다 실력 있는 분과 함께 협업을 진행하고 싶어서 신청하게 되었습니다. 특히 실력있는 분들을 만나고 싶은 마음이 컸습니다.
물론 평소 스터디원, 학과 동기들도 실력이 훌륭하지만, 직접 수익을 목표로 앱을 개발하고, 현직자 분들도 볼 수 있다는 생각에 더욱 마음이 부풀었던 것 같습니다. 그래서 걱정도 되었지만 꽤 설레는 마음으로 참여했습니다.
직접 느끼고 깨달은 것
물론 대단한 것을 하지는 않았지만 정말 많은 것을 느꼈던 하루였습니다. 느낀 것을 하나 하나 작성해보겠습니다.
1. 밤은 새지 말자. 규칙적인 삶을 살자. (커피를 마시지 말자.)
제 몸은 커피를 굉장히 잘 받는 몸입니다. 따라서 커피를 마시면 잠을 못잡니다.
감사하게도 해커톤 진행측, CMC에서 커피를 제공해주셔서 잘 마셨습니다. 덕분에 잠도 안 자고 새벽에 열심히 참여할 수 있었습니다.
그러나 지금 이틀이 지난 저에게는 아직까지도 여파가 남아있었습니다. 밤을 새서 그런지 아직까지도 기운이 없고, 피곤합니다. 저는 피곤하면 사랑니가 붓는데 굉장히 고생 중입니다. 덕분에 방학하면 사랑니를 뽑으려고 다짐했습니다.
무튼 정리하면 굉장히 규칙적인 삶은 중요하고, 잠을 새는 건 정신적으로, 육체적으로 힘들다는 겁니다.
물론 해커톤을 한다면 다시 참여할 생각입니다. 해커톤에서 밤을 새는 것이 나쁘다는게 아닙니다. (물론 잘 수도 있습니다.)
규칙적이고 정상적인 생활을 해야 몸도 마음도 건강하다는 생각을 했습니다.
2. 커뮤니케이션은 정말로 중요하다.
클라이언트 개발자는 3분이 계셨습니다. 모두 IOS 직군이셨습니다.
한 분은 현재 IOS 파트 직장인, 한 분은 취준생, 한 분은 저와 같은 UMC IOS 파트였습니다.
진행을 계속 하는데 새벽에 서버와 클라이언트 연동할 때 꽤나 애를 먹었습니다.
스프링 컨트롤러에서 Request Body 내용을 DTO 클래스 인스턴스로 변환을 하지 못 했습니다.
왜 body가 객체로 매핑이 안되지..?하고 고민하면서 일단 String으로 받고 jackson 라이브러리를 사용하자!!!라는 순간에
의사소통 문제로 Request Body와 Request Parameter로 의사소통에 혼선이 있다는 것을 발견했습니다.
이걸로 거의 1시간을 날려먹은 것 같습니다. 정말 뼈저리게 느꼈습니다. 커뮤니케이션은 정말 중요하다..!!!
다음부터는 정말 API 명세서도 잘 작성하고 수정 사항이 있을 때 마다, 클라이언트 개발자에게 수정 사항을 잘 전달하고자 마음 먹었습니다.
3. 공부한 것을 기록하는 것은 중요하다.
앱 백엔드 코드를 작성하고 AWS EC2 서버에 배포하는데 애를 먹었습니다.
일단 서버에서 오류가 나길래, 로컬에서는 잘 동작했는데 왜 AWS 서버 인스턴스는 동작을 안하지??
이건 .gitignore에 관한 문제였습니다. 그래서 금방 문제를 발견하고 해결할 수 있었습니다.
문제는 이제부터 발생합니다. nginx를 사용하려고 했는데, 설정 파일부터 실행까지 너무 오래걸렸습니다.
처음에 엄청 헤매다가 제가 이번 동아리 활동을 하면서 남긴 게시글들이 생각났고 다시 차근차근 보면서 문제들을 해결할 수 있었습니다.
그 순간에는 정말 공부하고 기록 게시글을 안 남겨뒀으면, 해커톤에서 큰 짐이 됐을 것이라고 생각합니다.
'공부를 기록하는 글은 정말 중요하고, 안 잊어버리게 주기적으로 복습을 하는 것이 중요하다' 라는 생각을 할 수 있었습니다.
4. 다양한 개발자를 만나면서 다양한 시각을 공유하자.
해커톤 팀은 IOS 개발자 3명, Spring 개발자 2명이었습니다.
저랑 같이 Spring 개발자인데 현재 소프트웨어 마에스트로 진행하고 계시는 능력자분..!! CMC도 수료하셨다고 들었습니다.
저는 많은 것을 배울 수 있었습니다. 우선 설계에서도 도움을 받고 개발에서 다양한 얘기를 나눴습니다.
대표적으로 패키지 구조에 대해서 얘기를 나눴습니다. 본인은 아래와 같이 프로젝트 패키지 구조를 짰습니다.
- 필자는 계층별로 패키지를 나눴습니다.
- 또한 계층별로 나누고 도메인이 많아진다면, 클래스들을 찾기 힘들까봐 내부에 또 도메인 별로 나눴습니다.
- 또한 RuntimeException을 상속받아 상황마다 커스텀 예외를 만들었습니다.
- 팀원분은 src라는 패키지를 다시 내부에 만들고, 공통적인 요소는 common이라는 패키지에 관리합니다.
- 또한 도메인별로 패키지를 두고 관리했습니다.
- RuntimeException을 상속받아 CommonException을 클래스를 만들고 ErrorCode로 예외를 구분하셨습니다.
이런 개발적인 대화뿐 아니라 데이터베이스 설계시에도 연관관계에 대해 많은 이야기를 들었습니다.
빌더 패턴은 이번 프로젝트에서 실제로 처음 접해보았고, 코드 스타일에 대해서도 얘기해보았습니다.
또한 CI, CD에 대한 잠깐의 대화, 코딩테스트, Spring Security 얘기도 했는데 너무나도 즐거운 경험이었습니다.
다양한 개발자를 만나서 더 넓은 시각을 공유하고, 지식을 늘려가는 경험이 정말 뿌듯하고 보람찼습니다.
6. 기획자와 디자이너는 소중하다
기획자와 디자이너가 없는 팀은 정말 차이가 크다. 우리 팀은 둘 다 없었는데 결과물이 ㅎㅎ...ppt도 지못미..
7. 끊임없이 도전하자
솔직히 정말 피곤했지만, 지금와서 생각해보면 정말 좋은 경험이 된 것 같습니다.
결국 UMC를 지원하고부터 이런 값진 경험을 얻었다고 생각합니다.
앞으로도 기회가 있으면, 두렵지만 최대한 도전해보려고 합니다.ㅎㅎ 내 자신 파이팅!!!
(발표는 진짜 너무 어렵다. 할 때마다 긴장되는듯...)
이상으로 포스팅을 마칩니다. 감사합니다!
댓글