우리 프로젝트에서 기술적으로 강점을 삼을 만할 항목을 정리해 주세요. (최종 발표 및 면접에서 프로젝트를 진행할 때 어떤 도전을 했는지 말할 수 있는 좋은 소스가 됩니다)
프로젝트에 적용했던 핵심 기술 목록을 작성해 주시고, 각 기술을 도입하게된 의사결정 과정을 정리해주세요.
요구사항 | 선택지 | 핵심 기술을 선택한 이유 및 근거 |
---|---|---|
데이터 일관성을 위해 NestJS 에서 트랜잭션 사용 | 트랜잭션 사용 | • 사용자가 제품의 ‘찜하기’를 업데이트 하기 위한 접근 방식을 고민했습니다. |
IF문을 사용하지않고 트랜잭션을 사용한 이유 | ||
• 사용자가 ‘찜하기’를 누르면 likeRepository 에서 ‘찜하기’를 하였는지 확인합니다likeRepository 에 해당 자료가 없으면 저장 후 productRepository 의 |
||
‘likes’컬럼을 +1 update 해줍니다. | ||
ikeRepository 에 해당자료가 없으면 반대작업을 합니다. |
||
ikeRepository , productRepository 두개의 데이터 소스가 업데이트 되기 때문에 |
||
일관성과 무결성을 보장해야됩니다. | ||
• 고려된 옵션 | ||
IF문을 사용하여 업데이트 | ||
트랜잭션을 사용하여 업데이트 | ||
• 평가 기준 | ||
데이터 일관성 및 무결성 | ||
안전성 | ||
• 옵션 평가 |
◦ 트랜잭션
데이터 일관성과 무결성을 보장한다. 오류 발생 시 데이터 변경사항을 롤백하는 오류처리를 해준다. ◦ IF문 조건부 논리로 처리하는 비교적 쉬운 방법이다. 트랜잭션 수준의 안정성을 제공하지 않는다. • 결론 다중 데이터를 처리하는 ‘찜하기’ 기능에서는 트랜잭션을 사용하는것이 좋은방법이다. | | 일반 유저와 Admin의 인증 차이 | NestJs - Guard | • 일반 유저는 관리자 페이지에 들어갈 수 없어야 됩니다. • NestJS에서 Guard를 기본적으로 제공합니다. 가드는 Passport-strategy 전략을 실행해주는 역할을 해줍니다. • 유저와 관리자가 각각 부여받는 엑세스 토큰에는 다른 정보들이 담깁니다. 유저는 리프레시 토큰 또한 부여받습니다. 따라서 유저와 관리자는 각각의 다른 Passport-strategy 전략을 취해야 합니다. • 그 결과 일반 유저와 관리자가 인증을 거치는 Guard가 분리됩니다. • 일반 유저는 로그인을 하더라도 관리자가 쓰는 Guard에 막혀 관리자 페이지에 들어갈 권한이 주어지지 않습니다. | | Redis | RDB 저장 In-memory DB 저장 | 영속적 데이터를 관리하는 MySQL과 같은 RDB 보단 redis 가 적합하다고 생각했고 In-memory DB인 Redis를 선택하게 되었습니다. | | ECS | EC2 배포 ECS 배포 | 배포시에 이때까지 해오던 EC2 배포에 불편함을 느꼈습니다. 서버에 관한 세팅도 하나에서 열까지 다 세팅해주어야 하고 심지어 서버도 git clone 혹은 FTP 서버를 통해 전송해주어야 서버를 띄울 수 있었습니다. 또한 인스턴스 관리 차원에서의 인건비도 줄일 수 있고 컨테이너 관리를 자동으로 맡겨 개발자는 코드에 더 집중할 수 있게됩니다. | | 문자발송 | naver SENS Lambda | Lambda는 서버리스 컴퓨팅 서비스로, 항상 서버를 켜두는 방식과 다르게 함수가 호출될 때만 코드를 실행하여 특정 시간 혹은 기간에만 동작하는 서비스를 만들거나 동적으로 자원을 할당받아 ‘단기간 이벤트성’ 트래픽을 감당하는 경우와 반복적인 배치처리 형태의 기능을 개발하는데 적절하다고 판단하여 기존 Naver Cloud Platform SENS를 활용하던 로직을 Lambda로 교체하였습니다. | | Axios | Axios Ajax Fetch | axios, ajax, 3 fetch 함수 3가지로 선택지를 가지고 고민했습니다. ajax는 JQuery를 사용해야 쉽게 사용한 단점이 fetch는 json으로 data를 변환해야 하는 추가 작업이 필요한 단점이 있어 결과적으로axios를 선택했습니다. | | | | | | | | |
이번 주 한 일
팀 전체 (리더님께서 필두로 정리해 주세요.)
발표자료/PPT 작성
로컬 개발/프로덕션 아키텍처 작성
프론트단 버그 수정
기능 최종 테스트
Github Actions / ECS Fargate CI/CD 자동화 (task-definition.json 추가)
Swagger 작성
Lambda 문자메시지 발송 구현
팀원 개인별로 작성해 주세요.
사용성 테스트를 진행했다면 해당 항목을 추가로 작성 해 주세요
서비스에서 가장 잘 만족스러운 기능을 선택해주세요
서비스에서 가장 개선이 필요한 기능을 선택해주세요
서비스에서 가장 우선적으로 개선해야 할 부분을 선택해주세요
우선순위 | 개선 및 추가사항 | 마감일자 |
---|---|---|
1 | 프론트 리디자인 | 3/24 |
2 | CI/CD 완전 자동화 | 3/29 |
3 | 프론트에서 로그인 확인 유무 체크 | 3/24 |
4 | 검색 관련 피드백 | 3/21 |
5 | 기타 짜잘한 UI 및 버그 수정 | 3/27 |