|
1 | | -[](https://classroom.github.com/a/EQ2AZDxh) |
2 | | -# Seminar-2025-springboot-assignment |
3 | | - |
4 | | -이번 한 학기 동안 에브리타임 클론코딩을 주제로 과제를 진행합니다. |
5 | | - |
6 | | -3차시 과제에서는 좋아요 기능을 구현하고, 중복 요청이 들어오는 경우의 동시성 문제를 해결합니다. |
7 | | -추가로, 시간이 겹치는 강의를 시간표에 동시에 추가했을 때의 동시성 문제를 해결합니다. |
8 | | - |
9 | | -## 시작하기 |
10 | | - |
11 | | -0차시 과제에서와 같이 앞으로도 데이터베이스로 MySQL을 사용합니다. 로컬 서버를 띄우기 전 `docker compose up -d` 로 MySQL을 띄워주세요. |
12 | | - |
13 | | -## 3차시 과제 - 게시글 좋아요 & 동시성 문제 해결 |
14 | | - |
15 | | -### 게시글 좋아요 기능 |
16 | | - |
17 | | -- 게시글 좋아요 추가 |
18 | | - - 사용자는 게시글에 좋아요를 누를 수 있습니다. |
19 | | - - 좋아요는 게시글마다 한 개만 누를 수 있습니다. |
20 | | - - 좋아요 추가 요청을 여러 번 보내도 에러를 내려주지 않습니다(멱등성). |
21 | | -- 게시글 좋아요 취소 |
22 | | - - 사용자는 자신의 누른 좋아요를 취소할 수 있습니다. |
23 | | - - 좋아요 취소 요청을 여러 번 보내도 에러를 내려주지 않습니다(멱등성). |
24 | | -- 게시글에 좋아요 수를 포함해서 내려주기 |
25 | | - - 게시글 페이지네이션 조회 또는 단건 상세 조회 시, PostDTO에 좋아요 수를 포함해서 내려줘야 합니다. |
26 | | - |
27 | | -### 시간표 동시성 이슈 해결 |
28 | | - |
29 | | -- 시간이 겹치는 두 강의를 시간표에 동시에 추가할 때, 두 강의 중 하나만 추가되어야 합니다. |
30 | | - |
31 | | -### 테스트 작성 |
32 | | -- PostLikeIntegration이 새로 추가되었고, TimetableIntegrationTest에도 하나가 새로 추가되었습니다. |
33 | | -- 새로 추가된 테스트와 기존의 모든 테스트를 통과하도록 작성해주세요. |
34 | | -- 테스트 통과를 위해 DataGenerator::likePost()를 구현해주세요. 이와 관련 없는 테스트코드 변경은 하지 말아주세요. |
35 | | -- Github classroom을 통한 자동 채점이 이루어집니다. |
36 | | -- 수강생이 많기 때문에 코드 리뷰는 요청주신 분에 한해서 드립니다. |
37 | | -- 제출 기한은 2025년 11월 26일 (수) 23:59 까지이며, 마지막 커밋 시각을 기준으로 합니다. Grace Day는 최대 2일 사용할 수 있습니다. |
| 1 | +# 23.5기 Spring 세미나 과제 4 |
| 2 | + |
| 3 | +1. AWS 가입 후, EC2 인스턴스 생성하여 접속하기 |
| 4 | + 1. 필요한 포트 개방 필요 |
| 5 | + 2. 프리티어로 t2.micro 하나 제공하는데, 이거는 좀 부족할 수도 |
| 6 | + 3. 비용 관리에 주의 |
| 7 | +2. EC2 인스턴스에 k3s로 쿠버네티스 클러스터 만들기 (보너스: 여러 대의 컴퓨터를 하나의 클러스터로 만들기) |
| 8 | +3. 클러스터에 세미나 과제 애플리케이션 배포하기 |
| 9 | + 1. Github Actions를 사용해 CI/CD 구축 |
| 10 | + 2. MySQL 도 같이 배포 (Helm chart 사용하면 편해요) |
| 11 | + 3. 이번 과제를 위한 Redis도 배포 |
| 12 | +4. 안전한 로그아웃을 위해 Redis로 JWT blacklisting 구현하기 |
| 13 | + 1. logout api를 호출하면 인증에 쓰였던 토큰을 redis에 등록해서, 다음에 그 토큰으로 요청이 오면 차단해야 함 |
| 14 | + 2. Pod이 여러 개인 환경에서도 동작해야 함 |
| 15 | + |
| 16 | +- 과제 제출 |
| 17 | + - kubectl으로 조회한 pod 목록 스크린샷 |
| 18 | + - 요청을 보낼 수 있는 API endpoint |
| 19 | + - 12/7 까지 |
| 20 | + - Grace day 4일 이상 사용 불가 |
0 commit comments