a. 들어가며
나라에서 지원되는 프로그램(국비지원)을 활용하여 Java기반 개발자 양성과정에 참여중이다.
이 과정의 도착점은 여러명의 인원이 하나의 팀으로 모여 프로젝트를 진행하는 것. 팀 프로젝트이다.
나는 4명으로 이루어진 팀에 속하게 되었고, 팀장으로 프로젝트를 이끌어가게 되었다.
b. 프로젝트 컨셉 선정
팀원 개개인의 의견을 수립하여 프로젝트 컨셉을 선정하기위해 채팅방을 개설한뒤, 아래와 같이 요청하였다.
(국비지원 과정 중간에 팀 프로젝트를 진행해본 경험상 프로젝트 컨셉, 구현하고자 하는 기능들을 선정할 때
혼자 계속 고민하는것 보다 회의를 통해 의견을 나누면서 스노우볼을 굴리는게 훨씬 수월했기 때문이다.)
감사하게도 팀원분들께서 여러가지 의견을 생각해오셨고 생각보다 빠르게 프로젝트 방향이 잡혀나갔다.
개인적으로 쇼핑몰은 이미 수많은 국비지원 참여자들에 의해 만들어진게 너무나도 많아서 배제했다..
나와 다른 팀원 한분은 커뮤티니 플랫폼, 그리고 쇼핑몰과 영화 예매 및 리뷰 공유 플랫폼을 생각해오셨다.
단순히 다수결의 원칙으로 정하는것보다는 '왜 그 컨셉으로 하고싶은지', '어떤 기능들을 구현 할 수 있는지' 하나씩 접근하며 회의를 진행한 결과 여러가지 기능에 대한 의견이 나온 커뮤니티 플랫폼으로 선정하였다. 지도 API를 활용하여 본인 주변에 있는 유저들과 취미를 공유하기, 결제 API를 활용하여 본인의 재능을 판매할수도 있고 중고장터 게시판을 운영할 수도 있다. 단, 여러가지 기능을 구현해보는것도 좋지만 예외처리를 확실하게 하고, 테스트 코드까지 진행하는것을 목표로 했다.
c. 언어 & 협업도구 & 기술스택 선정
프로젝트 컨셉을 정한 뒤 사용할 언어와 협업도구 및 기술스택에 대해 다시 회의를 진행하였다.
c-1. 언어 선정
언어는 Java 17 버전을 사용하기로 했다. 교육과정에서 사용했던 11버전을 사용하지 않고 17버전을 선택한 이유는 첫째, 애플 M1 및 이후 프로세서 탑재 제품군에 대한 정식 지원이 가능하다. 나를 제외한 팀원 세분은 모두 윈도우 개발환경이지만... 나는 맥북에어 M1을 사용중이기에 팀원분들의 너그러운 이해심으로 17버전을 선택할 수 있었다. 둘째, record 클래스를 사용해보고싶다. DTO 클래스를 작성할 때 record 클래스를 사용하면 현저히 짧은 코드로 작성할 수 있다는 부분이 상당히 끌렸다. 셋째, Spring Boot 3.0 부터는 자바 17이상을 지원한다. 설정에 노력을 기울일 필요가 없는 스프링 부트를 꼭 한번 사용해보고 싶었다.
c-2. 협업도구 선정
형상관리 도구는 가장 보편적으로 사용되는 Git을 사용하기로 했고, 일정관리 도구는 Jira를 사용해보고 싶었지만 정해진 기간 내에 프로젝트를 완성해야하기에 새로운 도구 사용방법에 대해 공부하는 것 보다는 기존에 사용해왔던 Notion을 선택하였다. Notion에 타임라인 템플릿을 적용하여 한 눈에 일정을 볼 수있는 효과를 더해주었고 캘린더를 활용하여 개개인이 작업한 히스토리를 남겨둘 수 있게 설정했다. 또 GitHub 연동을 통해 이슈관리를 하며 하나의 일정관리 도구를 사용하고자 한다.
c-3. 기술스택 선정
1. Spring Boot 사용
국비지원 과정에서 배우고 실습하며 사용해본 Servlet이나 Spring을 사용해보고싶다는 의견도 있었고, SpringBoot를 사용해보고 싶다는 의견도 있었다. 개인적으로 필자는 SpringBoot를 사용해보고싶었다. 여러 도구들의 버전을 올바르게 조합해주지 않았을 때 발생하는 오류와 톰캣 서버 설정, 외부 라이브러리 의존성 주입 등을 자동으로 관리해주는 너무너무너무 편리한 기술이 있는데 굳이 사용하지 않을 이유가 없었다. 그리고 SpringBoot를 이번기회에 사용해본다면 계획하고 있던 공부에 도움이 될거라는 생각이 들었다. ('토비의 스프링'이라는 교제를 이용하여 스프링에 대해 깊게 공부하려한다)
2. DataBase 선정
데이터베이스는 Oracle 21C를 사용하기로 했다. 국비지원 과정에 사용했던 버전이기도하고 무엇보다 MacOS에는 정식으로 지원하지 않는 버전이라 맥북을 사용하고있는 필자는 꽤나 고생을 했다. 2015 맥북 프로를 사용할 때에는 인텔 칩 환경이라 Docker를 이용하여 설치했었고, 20202 맥북에어를 사용하는 지금은 M1 칩 환경이라 오픈소스 컨테이너 런타임 Colima를 사용해 oracle 이미지를 x86/64 가상 환경으로 띄워 사용하기까지 리눅스에 대해 무지한 사람으로써 정말 많이 고생했다.....(리눅스 공부 열심히 해야지) 굳이 바꾸고 싶지 않았다.
3. mybatis + MVC 패턴
솔직하게 적어보자면 백엔드와 데이터베이스를 연결하는 프레임워크를 mybatis만 사용해보았기에 선정하게되었다. JPA를 선택하지 않은 이유는 정해져있는 기간내에 프로젝트를 완성도 있게 마무리하고 싶었기 때문이다. 또, MVC 디자인 패턴을 선택한 이유는 팀 프로젝트의 컨셉이 웹 어플리케이션을 기반으로 한 커뮤니티 플랫폼이 때문이다.(REST API 는 분산 시스템에 주로 사용됨)
'개발 > Team Project' 카테고리의 다른 글
ep.06 템플릿 선정 & 프론트 작업(유효성 검사, 프로필 사진 업로드와 미리보기, 주소 API 연동) (0) | 2024.08.02 |
---|---|
ep.05 Thymeleaf 설정 & GitHub를 이용한 프로젝트 공유 (0) | 2024.07.30 |
ep.04 Git, GitHub(.gitignore), Dotenv(.env) (0) | 2024.07.27 |
ep.03 프로젝트와 데이터베이스 연결 (Oracle + mybatis) (0) | 2024.07.26 |
ep02. 프로젝트 셋업(feat. Spring Initializr) (0) | 2024.07.25 |