학원 출신 비전공 웹개발자로서 토이 프로젝트를 어떻게 만들어야 하는지 매우 막막했다.
혹시나 비슷한 상황을 겪고계신 분들에게 도움이 되기 위해 글을 남기려고한다.
# 진행순서
1. 어떤 사이트를 만들것인지 정하기
이때 약간의 팁이 있다면 이미 상용 서비스되는 사이트를 모티브로 하는 것이 좋다. e.g.) 에어비앤비, 배달의 민족, 무신사
왜냐하면 아직 세상에 나오지 않은 서비스라 하면 어떤 화면에 어떤 기능을 넣어야 할지 정해야 하기에 길을 잡기 더 힘들 수가 있다. 따라서 약간 클론 프로젝트 느낌으로 하는 것이 좋다.
e.g.) 에어비앤비 같은 숙소 및 체험 예약 결제 서비스 -> 뉴플레이스
2. 요구사항 명세서 등의 서류 만들기
회원가입시에 필요한 정보는 계좌번호, 거래은행, 아이디, 비밀번호, 휴대폰 번호가 필요하다.
회원가입된 회원의 타입은 관리자, 파트너(숙소 및 체험의 오너), 이용자 총 3개의 타입이 존재하며 1개 이상의 타입에 반드시 속해야 한다.
이와 같은 비즈니스 로직을 정의하기 위한 규칙이 존재하고 이를 토이 프로젝트 멤버간에 공유해서 알고 있어야 한다.
3. 화면 단 기획하기
카카오 오븐(https://ovenapp.io/) 혹은 다른 뷰단을 작성하기 위한 툴로 어떤 내용이 어디에 붙을 것인지
공통으로 사용되는 페이지 크기라던지, 버튼 컬러는 총 3가지를 사용할 것이고 어떤 RGB인지 등등을 세세히 정의해놓아야 한다.
4. ERD 그리기 (Entity Relationship Diagram)
erdColud(https://www.erdcloud.com/) 등의 사이트를 이용하여 테이블구조와 관계등을 설정해야 한다.
e.g.) 필자가 만든 체험, 숙소 예약 및 결제 사이트 -> https://www.erdcloud.com/d/A6BjGsv7AKMoiJ5mx
5. UML(Unified Modeling Language) 그리기
Class Diagram등을 그림으로 인해서 중복되서 사용되는 클래스 및 다양한 곳에서 활용되는 공통 기능등을 추출할 수 있다.
reference) https://www.nextree.co.kr/p6753/
6. 사용 기술 스택 선정하기
화면은 javascript es6, html5, css3 로 그릴 것이며
(혹은 리액트나 vue.js 를 하실 줄 안다면 프론트 프레임워크를 활용하여)
아니면 Bootstrap으로 화면을 가져와서 다시 수정해서 쓸 것이고 (이미 반응형이 적용되어 있고 다양한 style을 적용한 class가 많으므로 가공하기 편하다)
Database language 는 Oracle 11g를 쓸것이며
(오라클 보다는 mysql이 토이프로젝트용 디비 언어로 많이 쓰이는 것 같다)
백엔드 언어는 Java 11version을 쓸것이고 ( 이것도 Adopt Jdk인지 정식 java JDK인지 정해야 한다)
프로젝트 생성시에는 Spring boot를 이용해서 생성할 것이고 (https://start.spring.io/)
(스프링 부트를 이용하면 의존성 관리 및 버전관리 톰캣 설정등이 편리하다.)
디자인 패턴은 MVC pattern을 사용할 것이며
(이것도 찾아보면 많은 디자인 패턴이 존재한다. 초보자가 다루기 쉬운 패턴은 MVC패턴인 것 같다.)
(MVC2, MVVM, SOA pattern, 헥사고날 아키텍쳐 등등)
빌드 도구는 Gradle을 쓸 것이고
(Maven: https://mvnrepository.com/ 등등 다른 빌드 도구도 있다.)
VCS 시스템(Version Control System)은 깃허브를 사용할 것이다. (https://github.com/)
Git 관리 전략으로는 Git-flow를 사용할 것이다. (https://techblog.woowahan.com/2553/)
API관리 툴로는 postman을 사용할 것이다. (이 분야는 swagger아님 postman이 주요 업체인듯하다)
(https://incheol-jung.gitbook.io/docs/q-and-a/infra/2018-01-03-how-to-use-postman)
배포를 위해서는 젠킨슨을 쓴다던지
클라우드로 올리기 위해서는 AWS의 EC2 및 RDB를 사용할 수도 있다.
테스트 도구는 Junit5를 사용할 것이다.
(코드가 의도한 목적대로 잘 돌아가는지 검증하기 위한 코드가 테스트 코드이다.)
협업 문서나 이미지, 일정 공유를 위한 툴로는 구글 공유 드라이브를 사용한다.
이렇게 하나 하나 직접 설치하고 실행해보면서 진짜 실행 가능한지 호환은 되는지 깨지는 부분은 없는지 확인해야 한다.
5. 프론트 단 및 백엔드 단 로직 작성
토이 프로젝트 멤버끼리 우선순위를 정하여 먼저 구현해야 할 기능들을 구현하고 commit, push, branch merge등을 수행해야 한다.
# Tip
아마도 초보자 입장에서 새로운 프로젝트를 생성해서 환경을 다 갖추고 개발하기는 어려운 부분이 많을거 같기에 유명 강의를 따라서 프로젝트를 생성하고 그 프로젝트에 기능을 덧 입히는 식으로 본인만의 포트폴리오를 만드는 것이 제일 합리적이지 않을까 싶다...
깃허브에서 코드를 관리할 경우 팀을 만들어서 팀원 모두에게 운영 권한을 주어서 공동으로 소유할 것을 권장한다.
# 추천강의
개발강의를 무작정 사놓고 졸려서 못 보거나 내용이 별로여서 보기 싫다면 이보다 낭패일수가 없다.
인프런의 김영한 개발자님 (자바 웹개발자 진영)의 강의를 추천한다.
이미 가져다 쓸수있는 라이브러리들의 시초의 시초격의 코드를 직접 작성하면서 동작 원리 및 구조를 몸소 이해할 수 있다.
이렇게 기반을 다져놓으면 언젠가 처음으로 사용해보는 기술을 빠르게 가져다가 써야할때도 잘 대처할 수 있지 않을까 싶다.
https://www.inflearn.com/roadmaps/373
우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복 - 인프런 | 로드맵
Spring, MVC 스킬을 학습할 수 있는 개발 · 프로그래밍 로드맵을 인프런에서 만나보세요.
www.inflearn.com:443
https://www.inflearn.com/roadmaps/149
김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵 - 인프런 | 로드맵
Java, JPA 스킬을 학습할 수 있는 개발 · 프로그래밍 로드맵을 인프런에서 만나보세요.
www.inflearn.com:443