Toy Project

JJStone·2022년 10월 25일
0

Toy Project

목록 보기
1/5

들어가며

  • 2년차 개발자에 들어갔는데 나를 보여줄수 있는 이렇다 할 프로젝트가 없어서 이번엔 설계부터 제대로 해보자 싶어서 토비의 스프링 3.1 책과 그동안 쌓은 기술들을 취합해 프로젝트를 생성해보자 다짐하여 이 글을 쓴다.

1. Project 전체 개요

  • 스타트업이 쏟아져 나오는 지금, 스타트업들이 투자자들을 통하여 투자를 받을 수 있도록 하는 서비스
  • 스타트업들은 게시물을 올려서 현재 자기들이 무슨 서비스를 하는지, 어떤 기술력을 가지고 있는지에 대해서 기술 할 수 있다.
  • 투자자들은 스타트업들이 어떤 기술력을 확보하고 있는지, 어떤 기술을 확보하고 있는지 확인하고 1:1 채팅 서비스를 사용하여 커뮤니케이션을 할 수 있다.
  • 투자자들은 관심있는 스타트업들에 대해서 관심 버튼을 눌러서 자신들만의 관심 목록에 추가할 수 있다.
  • 투자자들도 자신들이 찾는 종목에 대해서 게시물을 올릴 수 있다.
  • 스타트업 사용자들이 올린 게시물이 관심을 받은 개수는 모든 사용자들이 볼 수 있다.

2. 사용 기술

2-1. 개발 환경

  • OS : Ubuntu 20.04
  • Java : open-jdk-11
    • IDE : Intellj - 서버 개발용
  • Node : 14
    • IDE : Visual Code - 클라이언트 개발용

2-2. 서버

  • Spring boot
    • JWT (Json Web Token) : 사용자 인증 및 인가
    • Spring Web Socket : 1:1 채팅 및 알림 시스템
    • Spring JPA (Hibernate) : DB 접근 및 ORM (Object Relational Mapping)
    • REST Controller를 사용하여 서버와 클라이언트 데이터 송수신
  • 빌드 도구 : Gradle 6.9

2-3. DBMS (Database Management System)

  • MySQL (RDB)
  • PostgreSQL은 고민중이다. JPA를 통해서 쿼리 자동생성이 되니까 중간에 바꿔도 크게 상관은 없을거같은데 동시성에서 좀 더 우수하다니.. 사용해보면 좋지 않을까 싶긴 하지만 트래픽이 엄청나게 많은 사이트가 아니므로 MySQL을 써도 무방할것으로 예상은 된다.

2-4. 클라이언트

  • typescript
  • Vue.js : 프론트엔드 프레임워크
  • Vuetify : UI 프레임워크
  • axios : http 통신 라이브러리. 서버와 통신을 담당.
  • 빌드 도구 : Yarn

사실 클라이언트는 내 전문 분야가 아니기 떄문에 TDD는 후순위로 미뤄둘 심산이다..

  • API 리스트는 APIList.ts 파일을 통해 통합 관리

2-5. 서버 TDD (Test Driven Development)

  • Junit5를 사용해 유닛 테스트를 진행
  • MockMVC를 통해 Controller 테스트
  • 사양 정의를 통해서 해당 값 이외의 값이 들어오지 않게 설계
    • 설계대로 동작하는지 Input을 정하고, Input에 맞는 Output이 나오는지 확인
    • Interface를 통해서 관심 없는 함수는 스텁처리를 할 수 있게 클래스마다 Interface를 상속 받는다.
    • 사양 정의는 편의상 /** */ 주석을 통해서 작성한다.
  • 테스트 종료 시점 : 정의된 사양이 전부 통과할 시.

TODO

  • 기회가 된다면 MSA (MicroSoft Architecture)로 변환을 꿈꾼다.
  • Web Server인 Nginx도 사용해보면 좋을거같다.
  • 추후 node.js 로 Unit Tesd를 진행해볼 수 있을거같다.
profile
java, scala 개발자 입니다.

0개의 댓글