PengTory

Slow Letter 개발 기록 (2) _ Backend 본문

개발 기록

Slow Letter 개발 기록 (2) _ Backend

펭토리 2023. 1. 17. 01:41

BackEnd Tech Stack

  • Programming languages : JAVA
  • Frameworks: Spring Boot
  • Web Server: Apache
  • Database: PostgreSQL

선택 이유?

Spring Boot — SpringBoot의 장점인 라이브러리 관리 자동화, 설정의 자동화, 라이브러리 버전 자동 관리, SpringFramework 설정 자동화, 내장 Tomcat 사용 가능 그리고 독립 실행 가능한 JAR 배포 등의 이유로 미니 프로젝트인 “Slow Letter”에 적합하다고 판단했습니다.

Apache Tomcat — Spring Boot에는 Apache Tomcat이 내장되어있습니다.

JAVA — JAVA는 11버전을 사용했습니다. 현재 17버전까지 나온 것으로 알고 있지만, 11버전이 현업에서 더 많이 쓰이고 안정적이라는 것을 이유로 11버전을 선택했습니다.

PostgreSQL — 객체 관계형 데이베이스 (관계형 데이터베이스이기도 하지만 객체 데이터베이스와 연관되는 기능도 포함)

라이선스에 대한 비용 문제가 없고 jsonb, json 형식으로 저장이 가능한 것과 같은 독창적인 자료형 및 문법을 지원합니다.

JSON, ARRAY 같은 타입으로 획기적으로 확장성을 늘릴 수 있습니다.

REST API _ ERD

백앤드 팀은 설계한 ERD를 참고해 API문서를 작성한 후 개발을 진행

ERD

 

REST API _ API 문서

ERD와 Figma를 사용해 그린 UI를 참고해 return 받아야하는 데이터와 기입해야하는 데이터를 모두 담은 API 문서를 작성했습니다. API 문서는 추후 개발 과정에 많은 도움이 되었습니다.

API 문서 예시

 

REST API _ Swagger

개발한 API는 프론트앤드와의 소통을 원활히하기 위해 Swagger (REST API를 설계, 빌드, 문서화 및 사용하는 데 도움이되는 OpenAPI 사양을 중심으로 구축 된 오픈 소스 도구 세트)를 사용해 API문서를 공유했습니다.

 

Project Structure

대표적인 구조

  • Controller : 프레젠테이션 계층으로 클라이언트의 요청을 처리, 서비스에 정의된 비즈니스 로직을 호출
  • DTO : 데이터 저장 담당 클래스, 계층 간 데이터를 교환할 때 주로 사용
  • Entity : 데이터베이스에 쓰일 필드와 여러 entity간 연관관계를 정의
  • Service : repository와 controller 사이 미들웨어, controller에서 받은 데이터를 가공하여 DB를 보내거나 DB에서 가져온 데이터를 가공해서 사용자에게 보내준다.
  • Repository : Entity에 의해 생성된 DB에 접근하는 메서드 들을 사용하기 위한 인터페이스

백앤드 개발 규칙

1) 주석규칙

상단에 다음과 같이 기록해 협업에 도움을 줌

주석 규칙 중 일부

2) 코딩 규칙

일반 변수: 카멜케이스, 상수: 어퍼케이스 , 공백, 들여쓰기 등 코딩규칙을 수립하고 준수해 코드의 일관성을 유지하고 예측가능하게 함

3) 동료리뷰

백앤드 팀원끼리 코드의 품질을 개선하기 위해 코드리뷰 과정을 거쳐 코드의 일관성을 높이고 클린코드를 지향