-
Notifications
You must be signed in to change notification settings - Fork 2
Q&A
mjmj edited this page Aug 28, 2024
·
3 revisions
BE 프로그래밍 요구사항
- Spring Boot 3.2.2 를 사용한다. (start.spring.io 참고)
- Java 17을 사용한다.
- Gradle을 사용한다.
- AssertJ 를 사용한다.
- 학습을 위해 Spring Security는 사용하지 않는다. 인증을 위해 필요한 부분은 직접 구현한다.
- 데이터베이스는 MySQL 8.0을 사용한다.
- 학습을 위해 RDS는 사용하지 않고 직접 EC2에 MySQL을 설치하고 관리한다.
- 기타 필요한 라이브러리는 사용해도 무방하지만 최소화 할 것
- RDBMS 프로그래밍
아래 리스트 중 하나를 선택한다.
-
Spring JDBC template
-
Spring Data JDBC
-
JPA (Spring Data JPA)
-
동적 쿼리 작성을 위해 QueryDSL도 사용할 수 있음
-
NoSQL
-
DB는 RDBMS인 MySQL을 사용하는 것을 기본으로 하지만 필요한 경우 추가적으로 NoSQL을 활용할 수 있다. 배포
-
AWS EC2 인스턴스 (t3.small 또는 t2.small)을 이용해서 배포를 진행한다.
-
자주 배포를 수행하도록 배포 환경을 구성한다.
-
필요에 따라 도커는 사용할 수 있지만 K8S, EKS, ECS 는 사용하지 않는다.
-
데이터베이스는 도커가 아닌 EC2에 직접 설치해서 운영한다.
-
클라우드
-
기본적으로 EC2 인스턴스 2EA(웹 및 DB용 각 1), S3를 사용한다.
-
CodeDeploy도 사용가능하다.
-
그 외 AWS 서비스를 사용하고 싶을 때는 사용 전 개별적으로 문의할 것 설계
-
ERD를 작성해서 README에 링크를 추가한다.
-
그 외 설계와 관련된 문서의 링크 등을 저장소에 추가한다.
-
테스트와 리팩토링
-
테스트 코드를 작성을 권장한다.
-
리팩토링을 통해서 코드 품질을 개선한다.
-
JPA를 도입한 이유
- SQL 중심적인 개발보다는 객체 중심의 개발을 위해서
- jdbc template 같은 경우에는 SQL 중심적임
-
RDS를 안쓴 이유
- 처음 요구사항에 RDS를 사용하지 말도록 명시
- 추후 허용했지만 이미 구축한 상태이기 때문에 사용했다.
-
ALB를 도입한 이유
- AWS Certificate Manager(ACM)과 통합이 쉽기 때문에
-
route53
- 도메인을 클라우드 프론트에 매핑함
-
cloudfront
- 성능 향상
- 분산 엣지 로케이션을 통해 가까운 곳에서 컨텐츠 제공
- https를 통한 안전한 데이터 전송 가능
- 성능 향상
-
locust
- 백엔드 팀원 둘다 파이썬 프로그래밍에 익숙하기 때문에 도입했습니다.
- JMeter는 상대적으로 무거울 뿐아니라 설계상 gui를 쓸 수 없었다.
-
채점 로직
- 정답점을 기준으로 가장 짧은 유저 점 데이터를 찾아서 거리를 구함
-
대기열에 queue가 아니라 sorted-set을 사용한 이유
git flow
- 다른사람의 개발 결과에 영향을 받지 않는 독립적인 개발환경을 만들어줍니다