반응형
- Build Tool
- Gradle
- Maven의 pom.xml과 비교하여 build.gradle의 가독성이 더욱 좋음
- Maven보다 빌드 속도가 빠름
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
- JUnit은 JAVA 진영에서 대표적으로 사용되는 테스트 프레임워크임. JUnit을 활용한 테스트 코드 작성 역량은 반드시 길러야 하는 역량 중 하나임.
- Mockito의 Mock 객체를 사용해 테스트에 도움을 얻을 수 있음. 그러나 테스트를 통해 얻을 수 있는 이점을 흐릿하게 할 수 있으므로 지나치게 의존하지 말아야 함.
- 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 사용.
반응형
'Programming > TDD Project' 카테고리의 다른 글
Pull Request 005 - 자유게시글 작성 기능 TDD로 구현해보기 - Post DTO를 Entity로 변경. (1) | 2023.10.25 |
---|---|
Pull Request 004 - 맨날 까먹는 초기 Git 세팅 (0) | 2023.10.24 |
Pull Request 003 - 스프링 부트 버전과 자바 버전의 불일치 (0) | 2023.10.24 |
Pull Request 001 - 요구 사항 분석 (0) | 2023.09.21 |
Pull Request 000 - 시작하기에 앞서 (0) | 2023.09.14 |
댓글