본문 바로가기
Programming/TDD Project

Pull Request 002 - 기술 스택 정리

by JKROH 2023. 10. 3.
반응형

- Build Tool

 

Gradle | Gradle vs Maven Comparison

High-level performance and feature comparison between Gradle and Maven

gradle.org

 

- Language & Framework

  • JAVA & Spring Boot
    • JAVA는 Javascript나 python보다 강력한 규약과 정책을 바탕으로 프로그래밍 언어 자체로서 견고함을 지니고 있음.
    • Node.js나 Django이 Spring에 비해 지닌 가장 큰 장점은 프로그래밍 언어에 대한 접근이 쉽다는 점임, 그러나 필자는 이미 JAVA언어에 친숙함.
    • 현재 수준에서 다른 언어와 프레임워크를 추가로 학습하는 것보다 JAVA - Spring을 좀 더 깊이 학습하는 것이 토이 프로젝트의 취지에 맞는다 판단.
    • 또한, 현재 학습 중인 JPA는 자바 진영의 ORM 기술이며, CLEAN CODE, CLEAN ARCHITECTURE는 자바를 기준으로 작성되어있음.
  • Spring Security
    • 이번 프로젝트의 목적이 다양한 로직을 직접 구현해보는 것에 있는 것이 아닌 TDD 개발 방식을 학습하고자 하는 것이므로 직접 인증 / 인가 로직을 구현하기 보다는 Spring Security 프레임워크를 활용하는 방안을 선택.
    • 또한 Spring Security 프레임워크 자체를 좀 더 깊이 학습할 수 있는 기회가 될 것이라 판단.
  • JUnit 5 & Mockito

 

- Libraries

  • JWT
    • 토큰 방식은 쿠키 / 세션 이용에 비해 장점이 더 많음.
      • 쿠키 방식보다 보안성면에서 뛰어나고, 세션 방식보다 서버에 가해지는 부하면에서 뛰어남.
      • 쿠키 방식보다 서버에 가해지는 부하가 많고, 세션 방식보다 보안성면에서 취약하다는 단점이 있으나 쿠키 / 세션 방식의 절충으로써 사용되는 방식임.
  • OAuth2.0
    • OAuth2.0은 소셜 로그인 방식의 표준 구현 방식임
    • Spring Security를 사용하는 이유와 마찬가지로, 소셜 로그인을 위한 별도 로직을 작성하는 것보다 널리 사용되는 OAuth를 능숙하게 사용하는데 주안을 둠.
  • Spring Data JPA
    • JPA는 JAVA ORM 표준 API로서 다양한 이점을 제공.
    • 학습 중인 JPA를 사용하며, 이론 학습에 그치지 않고 실제 사용 역량을 강화하고자 함.
  • Spring Rest Docs
    • TDD 기반 프로젝트를 진행하기 때문에 Swagger를 사용하기보단 Rest Docs를 사용하기로 결정.
  • Lombok
    • 애너테이션을 통해 다양한 기능을 편하게 이용할 수 있음.

 

- Databases

  • H2 Database
    • 로컬 환경에서 개발을 위해 가볍게 사용하기 좋음.
  • MySQL & Oracle
    • 가장 범용적으로 사용되며 사용 경험이 있는 MySQL을 사용해 개발함으로써, 최초 개발 단계에서 DB 때문에 시간이 걸리는 일을 최소화.
    • 최초 개발이 끝나면, Oracle로 데이터베이스를 변환해보면서 Oracle 사용에도 익숙해질 필요가 있음.
  • Redis
    • 로그인 한 사용자의 토큰 정보를 저장하기 위한 비관계형 데이터베이스로써 사용.
    • 로그인 한 사용자를 검증하는 경우 데이터의 단순 캐싱만 필요하기 때문에 Redis를 사용하여 적은 메모리로 빠르게 접근.

 

- DevOps

  • AWS
    • 서버 배포를 위해 AWS를 이용.
    • Free tier 계정으로 무료 배포가 가능.
  • Github Actions
    • CI / CD 적용을 위해 사용.
    • 이번 프로젝트는 하나의 서버만 사용하고, 프로젝트의 규모가 크지 않아 CI / CD 파이프라인 구성에 많은 시간을 투자할 필요가 없음. 따라서 다른 툴에 비해 좀 더 쉽게 사용가능한 Github Actions 사용.
반응형

댓글