2023-02-24 ~ 2023-03-16 총 3주간 타임딜 서버를 구축하고, 성능 테스트를 하는 챌린지에 참여하였다.
첫번째 주의 목표는 팀빌딩과 구현 목록 파악 후, To Do List를 작성하는 것!
[주요 기능]
구매 가능한 시간에만 구매 가능 & Sold out
[구현 목록]
- 데이터베이스 모델링
- 상품 정보, 판매 가능 시간, 판매 가능 수량을 저장할 테이블(product)
- 사용자 정보도 저장해야함
- 상품별 구매한 유저 리스트 & 유저의 구매한 상품 리스트
- Service 클래스
- 상품 정보 조회하고 판매 가능한 상태인지 확인
- 현재 시간, 판매 가능 시간을 비교해서 판매 가능한 상태인지 확인
- 판매 가능한 상태인 경우, 수량을 비교하여 판매 가능.
- Controller 클래스
- REST API로 상품/구매 정보를 조회하고 구매 요청을 받아서 처리
- 상품 정보를 조회하는 API 작성
- 구매 요청을 받아서 구매 가능 여부를 확인하고, 구매 처리
- Spring Secutity없이 세션으로만 로그인 관리
- 인증과 권한 요청
- 상품 등록은 어드민 권한을 가진 유저만 가능. 즉, 유저와 어드민의 구분.
- 배치 작업
- 판매 가능 상태를 업데이트하는 배치 작업
- 정해진 시간마다 판매 가능 상태를 업데이트하고, 판매 가능 수량을 초기화함.
- 예외 처리
- 상품 정보가 없는 경우, 구매 가능 시간이 지난 경우, 판매 가능 수량이 없는 경우 등
이번주 할 일
- 아키텍쳐 구성
- 데이터 베이스 설계
- 클래스 설계
- 로그인 API 구현
- 회원가입 API 구현
저번주 한 일
- 구현 기능 파악
- API 목록 작성
- 클래스 목록 작성
- 깃허브 레포지토리 생성
이번주 회고
- 이번주 뿌듯한 일
- 첫 스프링 프로젝트에 도전
- 본격적인 개강 전 마지막 기회를 얻었다.
- 좋은 팀원들과 만났다 !! 많은 것을 배울 수 있을 것이다. 열심히 참여해야겠다.
- 이번주 아쉬웠던 일
- 나는 개발 경험이 적다 보니까 더 열심히 해야한다..!는 생각
- 지금까지 알고리즘을 열심히 했는데, 이제 개발 비중을 높여야 해서 조금은 아쉽다ㅠㅠ
- 어려움을 겪고 있는 부분
- 클래스 설계나 API 설계를 맞게 잘 했는지 모르겠다.
- 스프링을 대강/어림잡아 알고 있기에 공부랑 병행해야 한다.
- 팀원끼리 논의하고 싶은 부분
- 클래스 설계 / API 설계
알게된 점/ 기억하자
1. API 설계는 서버와 클라이언트 간의 상호 작용 방법을 결정하는 것이다. 어떤 데이터를 요청하고 어떤 데이터를 반환할 것인지, 어떤 메소드를 사용할 것인지 등을 정의한다. 따라서 API 설계를 잘못하면 클라이언트 개발자들이 API를 이해하기 어렵고, 불필요한 데이터를 요청하거나 중복된 데이터를 반환하는 등의 문제가 발생한다. API 설계를 잘 하면 클라이언트와 서버 간의 효율적인 상호 작용이 가능하며, 유지 보수성과 확장성이 높은 서버를 구축할 수 있다.
2. 클래스 설계는 서버 구축에 필요한 클래스들의 구조를 정의하는 것이다. 클래스들 간의 관계, 멤버 변수와 메소드 등을 결정한다. 클래스 설계를 잘 하면 코드의 가독성과 유지 보수성이 향상되며, 재사용성과 확장성 또한 높아진다. 또한 프로그램의 성능과 안정성에도 영향을 미친다.(객프, 자료구조에서 배운 클래스를 사용하는 이유랑 같음ㅇㅇ / 객체 지향 설계)
3. API 설계와 클래스 설계를 잘 하기 위해서는
- 요구사항 분석
- 디자인 패턴 선택
- 알고리즘과 데이터 구조
'언어 > JS & TS' 카테고리의 다른 글
[TypeScript] 함수 표현식 & Call∙Constructor Signature (1) | 2023.11.29 |
---|---|
[JavaScript] JS의 논리연산자, OR과 AND (0) | 2023.11.28 |
[JavaScript] JS의 this (0) | 2023.11.27 |
[TypeScript] Narrowing | Type Assertions & Type Guards (1) | 2023.11.26 |
[TypeScript] TS 기본 지식 | 정적타입언어, tsc, 타입 (0) | 2023.11.21 |